home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / misc / volume40 / nocol / part09 < prev    next >
Encoding:
Text File  |  1993-11-22  |  77.0 KB  |  2,976 lines

  1. Newsgroups: comp.sources.misc
  2. From: vikas@jvnc.net (Vikas Aggarwal)
  3. Subject: v40i139:  nocol - Network Monitoring System, Part09/26
  4. Message-ID: <1993Nov23.034843.5860@sparky.sterling.com>
  5. X-Md4-Signature: 9d03326afe4196f3345bd47886dd550c
  6. Sender: kent@sparky.sterling.com (Kent Landfield)
  7. Organization: Sterling Software
  8. Date: Tue, 23 Nov 1993 03:48:43 GMT
  9. Approved: kent@sparky.sterling.com
  10.  
  11. Submitted-by: vikas@jvnc.net (Vikas Aggarwal)
  12. Posting-number: Volume 40, Issue 139
  13. Archive-name: nocol/part09
  14. Environment: INET, UNIX
  15.  
  16. #! /bin/sh
  17. # This is a shell archive.  Remove anything before this line, then feed it
  18. # into a shell via "sh file" or similar.  To overwrite existing files,
  19. # type "sh file -c".
  20. # Contents:  nocol-3.0/src/cmu-snmp/mib.txt.C
  21. #   nocol-3.0/src/cmu-snmp/snmplib/parse.c
  22. #   nocol-3.0/src/support/multiping/multiping.h
  23. # Wrapped by kent@sparky on Tue Nov  9 22:22:16 1993
  24. PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin:$PATH ; export PATH
  25. echo If this archive is complete, you will see the following message:
  26. echo '          "shar: End of archive 9 (of 26)."'
  27. if test -f 'nocol-3.0/src/cmu-snmp/mib.txt.C' -a "${1}" != "-c" ; then 
  28.   echo shar: Will not clobber existing file \"'nocol-3.0/src/cmu-snmp/mib.txt.C'\"
  29. else
  30.   echo shar: Extracting \"'nocol-3.0/src/cmu-snmp/mib.txt.C'\" \(46940 characters\)
  31.   sed "s/^X//" >'nocol-3.0/src/cmu-snmp/mib.txt.C' <<'END_OF_FILE'
  32. X          -- Request for Comments: Draft             cisco Systems, Inc.
  33. X
  34. X
  35. X               tsLineAutobaud OBJECT-TYPE
  36. X                   SYNTAX  INTEGER
  37. X                   ACCESS  read-only
  38. X                   STATUS  mandatory
  39. X                   ::= { ltsLineEntry 3 }
  40. X
  41. X               tsLineSpeedin OBJECT-TYPE
  42. X                   SYNTAX  INTEGER
  43. X                   ACCESS  read-only
  44. X                   STATUS  mandatory
  45. X                   ::= { ltsLineEntry 4 }
  46. X
  47. X               tsLineSpeedout OBJECT-TYPE
  48. X                   SYNTAX  INTEGER
  49. X                   ACCESS  read-only
  50. X                   STATUS  mandatory
  51. X                   ::= { ltsLineEntry 5 }
  52. X
  53. X               tsLineFlow OBJECT-TYPE
  54. X                   SYNTAX  INTEGER {
  55. X                        unknown(1),
  56. X                        none(2),
  57. X                        software-input(3),
  58. X                        software-output(4),
  59. X                        software-both(5),
  60. X                        hardware-input(6),
  61. X                        hardware-output(7),
  62. X                        hardware-both(8)
  63. X                   }
  64. X                   ACCESS  read-only
  65. X                   STATUS  mandatory
  66. X                   ::= { ltsLineEntry 6 }
  67. X
  68. X               tsLineModem OBJECT-TYPE
  69. X                   SYNTAX  INTEGER {
  70. X                        unknown(1),
  71. X
  72. X
  73. X
  74. X
  75. X
  76. X          -- cisco MIB                                         [Page 65]
  77. X--
  78. X
  79. X
  80. X
  81. X
  82. X
  83. X          -- Request for Comments: Draft             cisco Systems, Inc.
  84. X
  85. X
  86. X                        none(2),
  87. X                        call-in(3),
  88. X                        call-out(4),
  89. X                        cts-required(5),
  90. X                        rs-is-cd(6)
  91. X                   }
  92. X                   ACCESS  read-only
  93. X                   STATUS  mandatory
  94. X                   ::= { ltsLineEntry 7 }
  95. X
  96. X               tsLineLoc OBJECT-TYPE
  97. X                   SYNTAX  DisplayString
  98. X                   ACCESS  read-only
  99. X                   STATUS  mandatory
  100. X                   ::= { ltsLineEntry 8 }
  101. X
  102. X               tsLineTerm OBJECT-TYPE
  103. X                   SYNTAX  DisplayString
  104. X                   ACCESS  read-only
  105. X                   STATUS  mandatory
  106. X                   ::= { ltsLineEntry 9 }
  107. X
  108. X               tsLineScrlen OBJECT-TYPE
  109. X                   SYNTAX  INTEGER
  110. X                   ACCESS  read-only
  111. X                   STATUS  mandatory
  112. X                   ::= { ltsLineEntry 10 }
  113. X
  114. X               tsLineScrwid OBJECT-TYPE
  115. X                   SYNTAX  INTEGER
  116. X                   ACCESS  read-only
  117. X                   STATUS  mandatory
  118. X                   ::= { ltsLineEntry 11 }
  119. X
  120. X               tsLineEsc OBJECT-TYPE
  121. X                   SYNTAX  DisplayString
  122. X                   ACCESS  read-only
  123. X                   STATUS  mandatory
  124. X                   ::= { ltsLineEntry 12 }
  125. X
  126. X               tsLineTmo OBJECT-TYPE
  127. X                   SYNTAX  INTEGER
  128. X                   ACCESS  read-only
  129. X                   STATUS  mandatory
  130. X                   ::= { ltsLineEntry 13 }
  131. X
  132. X               tsLineSestmo OBJECT-TYPE
  133. X                   SYNTAX  INTEGER
  134. X                   ACCESS  read-only
  135. X                   STATUS  mandatory
  136. X                   ::= { ltsLineEntry 14 }
  137. X
  138. X               tsLineRotary OBJECT-TYPE
  139. X                   SYNTAX  INTEGER
  140. X                   ACCESS  read-only
  141. X                   STATUS  mandatory
  142. X                   ::= { ltsLineEntry 15 }
  143. X
  144. X               tsLineUses OBJECT-TYPE
  145. X                   SYNTAX  INTEGER
  146. X                   ACCESS  read-only
  147. X                   STATUS  mandatory
  148. X                   ::= { ltsLineEntry 16 }
  149. X
  150. X               tsLineNses OBJECT-TYPE
  151. X
  152. X
  153. X
  154. X
  155. X
  156. X          -- cisco MIB                                         [Page 67]
  157. X--
  158. X
  159. X
  160. X
  161. X
  162. X
  163. X          -- Request for Comments: Draft             cisco Systems, Inc.
  164. X
  165. X
  166. X                   SYNTAX  INTEGER
  167. X                   ACCESS  read-only
  168. X                   STATUS  mandatory
  169. X                   ::= { ltsLineEntry 17 }
  170. X
  171. X               tsLineUser OBJECT-TYPE
  172. X                   SYNTAX  DisplayString
  173. X                   ACCESS  read-only
  174. X                   STATUS  mandatory
  175. X                   ::= { ltsLineEntry 18 }
  176. X
  177. X               tsLineNoise OBJECT-TYPE
  178. X                   SYNTAX  INTEGER
  179. X                   ACCESS  read-only
  180. X                   STATUS  mandatory
  181. X                   ::= { ltsLineEntry 19 }
  182. X
  183. X               -- End of table
  184. X
  185. X
  186. X
  187. X               -- Local Terminal Server Line Session Table
  188. X
  189. X          -- This group contains terminal server specific
  190. X          -- information on a per line and per session basis.
  191. X
  192. X               ltsLineSessionTable OBJECT-TYPE
  193. X                   SYNTAX  SEQUENCE OF LTsLineSessionEntry
  194. X                   ACCESS  not-accessible
  195. X                   STATUS  mandatory
  196. X                   ::= { lts 3 }
  197. X
  198. X               ltsLineSessionEntry OBJECT-TYPE
  199. X
  200. X
  201. X
  202. X
  203. X
  204. X          -- cisco MIB                                         [Page 68]
  205. X--
  206. X
  207. X
  208. X
  209. X
  210. X
  211. X          -- Request for Comments: Draft             cisco Systems, Inc.
  212. X
  213. X
  214. X                   SYNTAX LTsLineSessionEntry
  215. X                   ACCESS  not-accessible
  216. X                   STATUS  mandatory
  217. X               ::= { ltsLineSessionTable 1 }
  218. X
  219. X               LTsLineSessionEntry ::=
  220. X                   SEQUENCE {
  221. X                       tslineSesType
  222. X                           INTEGER,
  223. X                       tslineSesDir
  224. X                           INTEGER,
  225. X                       tslineSesAddr
  226. X                           IpAddress,
  227. X                       tslineSesName
  228. X                           DisplayString,
  229. X                       tslineSesCur
  230. X                           INTEGER,
  231. X                       tslineSesIdle
  232. X                           INTEGER
  233. X                   }
  234. X
  235. X
  236. X          -- The following section describes the components of the
  237. X          -- table.
  238. X
  239. X               tslineSesType OBJECT-TYPE
  240. X                   SYNTAX  INTEGER {
  241. X                        unknown(1),
  242. X                        pad(2),
  243. X                        stream(3),
  244. X                        rlogin(4),
  245. X                        telnet(5),
  246. X                        tcp(6),
  247. X                        lat(7),
  248. X                        mop(8),
  249. X                        slip(9),
  250. X                        xremote(10)
  251. X                   }
  252. X                   ACCESS  read-only
  253. X                   STATUS  mandatory
  254. X
  255. X
  256. X
  257. X
  258. X
  259. X          -- cisco MIB                                         [Page 69]
  260. X--
  261. X
  262. X
  263. X
  264. X
  265. X
  266. X          -- Request for Comments: Draft             cisco Systems, Inc.
  267. X
  268. X
  269. X                   ::= { ltsLineSessionEntry 1 }
  270. X
  271. X               tslineSesDir OBJECT-TYPE
  272. X                   SYNTAX  INTEGER {
  273. X                        unknown(1),
  274. X                        incoming(2),
  275. X                        outgoing(3)
  276. X                   }
  277. X                   ACCESS  read-only
  278. X                   STATUS  mandatory
  279. X                   ::= { ltsLineSessionEntry 2 }
  280. X
  281. X               tslineSesAddr OBJECT-TYPE
  282. X                   SYNTAX  IpAddress
  283. X                   ACCESS  read-only
  284. X                   STATUS  mandatory
  285. X                   ::= { ltsLineSessionEntry 3 }
  286. X
  287. X               tslineSesName OBJECT-TYPE
  288. X                   SYNTAX  DisplayString
  289. X                   ACCESS  read-only
  290. X                   STATUS  mandatory
  291. X                   ::= { ltsLineSessionEntry 4 }
  292. X
  293. X               tslineSesCur OBJECT-TYPE
  294. X                   SYNTAX  INTEGER
  295. X                   ACCESS  read-only
  296. X                   STATUS  mandatory
  297. X                   ::= { ltsLineSessionEntry 5 }
  298. X
  299. X               tslineSesIdle OBJECT-TYPE
  300. X                   SYNTAX  INTEGER
  301. X                   ACCESS  read-only
  302. X
  303. X
  304. X
  305. X
  306. X
  307. X          -- cisco MIB                                         [Page 70]
  308. X--
  309. X
  310. X
  311. X
  312. X
  313. X
  314. X          -- Request for Comments: Draft             cisco Systems, Inc.
  315. X
  316. X
  317. X                   STATUS  mandatory
  318. X                   ::= { ltsLineSessionEntry 6 }
  319. X
  320. X               -- End of table
  321. X
  322. X
  323. X               tsMsgTtyLine OBJECT-TYPE
  324. X                   SYNTAX  INTEGER
  325. X                   ACCESS  read-write
  326. X                   STATUS  mandatory
  327. X                   ::= { lts 4 }
  328. X
  329. X               tsMsgIntervaltim OBJECT-TYPE
  330. X                   SYNTAX  INTEGER
  331. X                   ACCESS  read-write
  332. X                   STATUS  mandatory
  333. X                   ::= { lts 5 }
  334. X
  335. X               tsMsgDuration OBJECT-TYPE
  336. X                   SYNTAX  INTEGER
  337. X                   ACCESS  read-write
  338. X                   STATUS  mandatory
  339. X                   ::= { lts 6 }
  340. X
  341. X               tsMsgText OBJECT-TYPE
  342. X                   SYNTAX  DisplayString
  343. X                   ACCESS  read-write
  344. X                   STATUS  mandatory
  345. X
  346. X
  347. X
  348. X
  349. X
  350. X          -- cisco MIB                                         [Page 71]
  351. X--
  352. X
  353. X
  354. X
  355. X
  356. X
  357. X          -- Request for Comments: Draft             cisco Systems, Inc.
  358. X
  359. X
  360. X                   ::= { lts 7 }
  361. X
  362. X               tsMsgTmpBanner OBJECT-TYPE
  363. X                   SYNTAX  INTEGER {
  364. X                        no(1),
  365. X                        additive(2)
  366. X                   }
  367. X                   ACCESS  read-write
  368. X                   STATUS  mandatory
  369. X                   ::= { lts 8 }
  370. X
  371. X               tsMsgSend OBJECT-TYPE
  372. X                   SYNTAX  INTEGER {
  373. X                        nothing(1),
  374. X                        reload(2),
  375. X                        messagedone(3),
  376. X                        abort(4)
  377. X                   }
  378. X                   ACCESS  read-write
  379. X                   STATUS  mandatory
  380. X                   ::= { lts 9 }
  381. X
  382. X
  383. X               -- Local cisco Flash Group
  384. X
  385. X          -- This group is present in all products which contain flash"
  386. X
  387. X               flashSize OBJECT-TYPE
  388. X                   SYNTAX  INTEGER
  389. X                   ACCESS  read-only
  390. X                   STATUS  mandatory
  391. X                   ::= { lflash 1 }
  392. X
  393. X
  394. X
  395. X
  396. X
  397. X
  398. X          -- cisco MIB                                         [Page 72]
  399. X--
  400. X
  401. X
  402. X
  403. X
  404. X
  405. X          -- Request for Comments: Draft             cisco Systems, Inc.
  406. X
  407. X
  408. X               flashFree OBJECT-TYPE
  409. X                   SYNTAX  INTEGER
  410. X                   ACCESS  read-only
  411. X                   STATUS  mandatory
  412. X                   ::= { lflash 2 }
  413. X
  414. X               flashcontoller OBJECT-TYPE
  415. X                   SYNTAX  DisplayString
  416. X                   ACCESS  write-only
  417. X                   STATUS  mandatory
  418. X                   ::= { lflash 3 }
  419. X
  420. X               flashcard OBJECT-TYPE
  421. X                   SYNTAX  DisplayString
  422. X                   ACCESS  write-only
  423. X                   STATUS  mandatory
  424. X                   ::= { lflash 4 }
  425. X
  426. X               flashVPP OBJECT-TYPE
  427. X                   SYNTAX  INTEGER {
  428. X                        installed(1),
  429. X                        missing(2)
  430. X                   }
  431. X                   ACCESS  read-only
  432. X                   STATUS  mandatory
  433. X                   ::= { lflash 5 }
  434. X
  435. X               flashErase OBJECT-TYPE
  436. X                   SYNTAX  INTEGER
  437. X                   ACCESS  write-only
  438. X                   STATUS  mandatory
  439. X                   ::= { lflash 6 }
  440. X
  441. X               flashEraseTime OBJECT-TYPE
  442. X                   SYNTAX  TimeTicks
  443. X
  444. X
  445. X
  446. X
  447. X
  448. X          -- cisco MIB                                         [Page 73]
  449. X--
  450. X
  451. X
  452. X
  453. X
  454. X
  455. X          -- Request for Comments: Draft             cisco Systems, Inc.
  456. X
  457. X
  458. X                   ACCESS  read-only
  459. X                   STATUS  mandatory
  460. X                   ::= { lflash 7 }
  461. X
  462. X               flashEraseStatus OBJECT-TYPE
  463. X                   SYNTAX  INTEGER
  464. X                   ACCESS  read-only
  465. X                   STATUS  mandatory
  466. X                   ::= { lflash 8 }
  467. X
  468. X               flashToNet OBJECT-TYPE
  469. X                   SYNTAX  DisplayString
  470. X                   ACCESS  write-only
  471. X                   STATUS  mandatory
  472. X                   ::= { lflash 9 }
  473. X
  474. X               flashToNetTime OBJECT-TYPE
  475. X                   SYNTAX  TimeTicks
  476. X                   ACCESS  read-only
  477. X                   STATUS  mandatory
  478. X                   ::= { lflash 10 }
  479. X
  480. X               flashToNetStatus OBJECT-TYPE
  481. X                   SYNTAX  INTEGER
  482. X                   ACCESS  read-only
  483. X                   STATUS  mandatory
  484. X                   ::= { lflash 11 }
  485. X
  486. X               netToFlash OBJECT-TYPE
  487. X                   SYNTAX  DisplayString
  488. X
  489. X
  490. X
  491. X
  492. X
  493. X          -- cisco MIB                                         [Page 74]
  494. X--
  495. X
  496. X
  497. X
  498. X
  499. X
  500. X          -- Request for Comments: Draft             cisco Systems, Inc.
  501. X
  502. X
  503. X                   ACCESS  write-only
  504. X                   STATUS  mandatory
  505. X                   ::= { lflash 12 }
  506. X
  507. X               netToFlashTime OBJECT-TYPE
  508. X                   SYNTAX  TimeTicks
  509. X                   ACCESS  read-only
  510. X                   STATUS  mandatory
  511. X                   ::= { lflash 13 }
  512. X
  513. X               netToFlashStatus OBJECT-TYPE
  514. X                   SYNTAX  INTEGER
  515. X                   ACCESS  read-only
  516. X                   STATUS  mandatory
  517. X                   ::= { lflash 14 }
  518. X
  519. X               flashStatus OBJECT-TYPE
  520. X                   SYNTAX  INTEGER
  521. X                   ACCESS  read-only
  522. X                   STATUS  mandatory
  523. X                   ::= { lflash 15 }
  524. X
  525. X               flashEntries OBJECT-TYPE
  526. X                   SYNTAX  INTEGER
  527. X                   ACCESS  read-only
  528. X                   STATUS  mandatory
  529. X                   ::= { lflash 16 }
  530. X
  531. X
  532. X               -- Local Flash file Table
  533. X
  534. X
  535. X
  536. X
  537. X
  538. X          -- cisco MIB                                         [Page 75]
  539. X--
  540. X
  541. X
  542. X
  543. X
  544. X
  545. X          -- Request for Comments: Draft             cisco Systems, Inc.
  546. X
  547. X
  548. X          -- This group contains information on a per file basis
  549. X
  550. X               lflashFileDirTable OBJECT-TYPE
  551. X                   SYNTAX  SEQUENCE OF LFlashFileDirEntry
  552. X                   ACCESS  not-accessible
  553. X                   STATUS  mandatory
  554. X                   ::= { lflash 17 }
  555. X
  556. X               lflashFileDirEntry OBJECT-TYPE
  557. X                   SYNTAX LFlashFileDirEntry
  558. X                   ACCESS  not-accessible
  559. X                   STATUS  mandatory
  560. X               ::= { lflashFileDirTable 1 }
  561. X
  562. X               LFlashFileDirEntry ::=
  563. X                   SEQUENCE {
  564. X                       flashDirName
  565. X                           DisplayString,
  566. X                       flashDirSize
  567. X                           INTEGER,
  568. X                       flashDirStatus
  569. X                           INTEGER
  570. X                   }
  571. X
  572. X
  573. X          -- The following section describes the components of the
  574. X          -- table.
  575. X
  576. X               flashDirName OBJECT-TYPE
  577. X                   SYNTAX  DisplayString
  578. X                   ACCESS  read-only
  579. X                   STATUS  mandatory
  580. X                   ::= { lflashFileDirEntry 1 }
  581. X
  582. X               flashDirSize OBJECT-TYPE
  583. X                   SYNTAX  INTEGER
  584. X                   ACCESS  read-only
  585. X                   STATUS  mandatory
  586. X
  587. X
  588. X
  589. X
  590. X
  591. X          -- cisco MIB                                         [Page 76]
  592. X--
  593. X
  594. X
  595. X
  596. X
  597. X
  598. X          -- Request for Comments: Draft             cisco Systems, Inc.
  599. X
  600. X
  601. X                   ::= { lflashFileDirEntry 2 }
  602. X
  603. X               flashDirStatus OBJECT-TYPE
  604. X                   SYNTAX  INTEGER {
  605. X                        valid(1),
  606. X                        deleted(2)
  607. X                   }
  608. X                   ACCESS  read-only
  609. X                   STATUS  mandatory
  610. X                   ::= { lflashFileDirEntry 3 }
  611. X
  612. X               -- End of table
  613. X
  614. X
  615. X
  616. X               -- Temporary Variable Section
  617. X
  618. X          -- This section is equivalent to the experimental
  619. X          -- space defined by the SMI. It contains variables
  620. X          -- that are useful to have but are beyond cisco's
  621. X          -- ability to control and maintain. This section can
  622. X          -- change from release to release without warning.
  623. X          -- This document controls what is contained here for
  624. X          -- this version.
  625. X
  626. X
  627. X          -- Temporary DECNET Section
  628. X
  629. X          -- This group is present in all router based products.
  630. X
  631. X               dnForward OBJECT-TYPE
  632. X                   SYNTAX  INTEGER
  633. X                   ACCESS  read-only
  634. X                   STATUS  mandatory
  635. X                   ::= { decnet 1 }
  636. X
  637. X               dnReceived OBJECT-TYPE
  638. X                   SYNTAX  INTEGER
  639. X                   ACCESS  read-only
  640. X
  641. X
  642. X
  643. X
  644. X
  645. X          -- cisco MIB                                         [Page 77]
  646. X--
  647. X
  648. X
  649. X
  650. X
  651. X
  652. X          -- Request for Comments: Draft             cisco Systems, Inc.
  653. X
  654. X
  655. X                   STATUS  mandatory
  656. X                   ::= { decnet 2 }
  657. X
  658. X               dnFormaterr OBJECT-TYPE
  659. X                   SYNTAX  INTEGER
  660. X                   ACCESS  read-only
  661. X                   STATUS  mandatory
  662. X                   ::= { decnet 3 }
  663. X
  664. X               dnNotgateway OBJECT-TYPE
  665. X                   SYNTAX  INTEGER
  666. X                   ACCESS  read-only
  667. X                   STATUS  mandatory
  668. X                   ::= { decnet 4 }
  669. X
  670. X               dnNotimp OBJECT-TYPE
  671. X                   SYNTAX  INTEGER
  672. X                   ACCESS  read-only
  673. X                   STATUS  mandatory
  674. X                   ::= { decnet 5 }
  675. X
  676. X               dnHellos OBJECT-TYPE
  677. X                   SYNTAX  INTEGER
  678. X                   ACCESS  read-only
  679. X                   STATUS  mandatory
  680. X                   ::= { decnet 6 }
  681. X
  682. X               dnBadhello OBJECT-TYPE
  683. X                   SYNTAX  INTEGER
  684. X                   ACCESS  read-only
  685. X                   STATUS  mandatory
  686. X                   ::= { decnet 7 }
  687. X
  688. X               dnNotlong OBJECT-TYPE
  689. X                   SYNTAX  INTEGER
  690. X                   ACCESS  read-only
  691. X                   STATUS  mandatory
  692. X                   ::= { decnet 8 }
  693. X
  694. X               dnDatas OBJECT-TYPE
  695. X                   SYNTAX  INTEGER
  696. X                   ACCESS  read-only
  697. X                   STATUS  mandatory
  698. X                   ::= { decnet 9 }
  699. X
  700. X               dnBigaddr OBJECT-TYPE
  701. X                   SYNTAX  INTEGER
  702. X                   ACCESS  read-only
  703. X                   STATUS  mandatory
  704. X                   ::= { decnet 10 }
  705. X
  706. X               dnNoroute OBJECT-TYPE
  707. X                   SYNTAX  INTEGER
  708. X                   ACCESS  read-only
  709. X                   STATUS  mandatory
  710. X                   ::= { decnet 11 }
  711. X
  712. X               dnNoencap OBJECT-TYPE
  713. X                   SYNTAX  INTEGER
  714. X                   ACCESS  read-only
  715. X                   STATUS  mandatory
  716. X                   ::= { decnet 12 }
  717. X
  718. X
  719. X
  720. X
  721. X
  722. X          -- cisco MIB                                         [Page 79]
  723. X--
  724. X
  725. X
  726. X
  727. X
  728. X
  729. X          -- Request for Comments: Draft             cisco Systems, Inc.
  730. X
  731. X
  732. X               dnLevel1s OBJECT-TYPE
  733. X                   SYNTAX  INTEGER
  734. X                   ACCESS  read-only
  735. X                   STATUS  mandatory
  736. X                   ::= { decnet 13 }
  737. X
  738. X               dnBadlevel1 OBJECT-TYPE
  739. X                   SYNTAX  INTEGER
  740. X                   ACCESS  read-only
  741. X                   STATUS  mandatory
  742. X                   ::= { decnet 14 }
  743. X
  744. X               dnToomanyhops OBJECT-TYPE
  745. X                   SYNTAX  INTEGER
  746. X                   ACCESS  read-only
  747. X                   STATUS  mandatory
  748. X                   ::= { decnet 15 }
  749. X
  750. X               dnHellosent OBJECT-TYPE
  751. X                   SYNTAX  INTEGER
  752. X                   ACCESS  read-only
  753. X                   STATUS  mandatory
  754. X                   ::= { decnet 16 }
  755. X
  756. X               dnLevel1sent OBJECT-TYPE
  757. X                   SYNTAX  INTEGER
  758. X                   ACCESS  read-only
  759. X                   STATUS  mandatory
  760. X                   ::= { decnet 17 }
  761. X
  762. X               dnNomemory OBJECT-TYPE
  763. X
  764. X
  765. X
  766. X
  767. X
  768. X          -- cisco MIB                                         [Page 80]
  769. X--
  770. X
  771. X
  772. X
  773. X
  774. X
  775. X          -- Request for Comments: Draft             cisco Systems, Inc.
  776. X
  777. X
  778. X                   SYNTAX  INTEGER
  779. X                   ACCESS  read-only
  780. X                   STATUS  mandatory
  781. X                   ::= { decnet 18 }
  782. X
  783. X               dnOtherhello OBJECT-TYPE
  784. X                   SYNTAX  INTEGER
  785. X                   ACCESS  read-only
  786. X                   STATUS  mandatory
  787. X                   ::= { decnet 19 }
  788. X
  789. X               dnOtherlevel1 OBJECT-TYPE
  790. X                   SYNTAX  INTEGER
  791. X                   ACCESS  read-only
  792. X                   STATUS  mandatory
  793. X                   ::= { decnet 20 }
  794. X
  795. X               dnLevel2s OBJECT-TYPE
  796. X                   SYNTAX  INTEGER
  797. X                   ACCESS  read-only
  798. X                   STATUS  mandatory
  799. X                   ::= { decnet 21 }
  800. X
  801. X               dnLevel2sent OBJECT-TYPE
  802. X                   SYNTAX  INTEGER
  803. X                   ACCESS  read-only
  804. X                   STATUS  mandatory
  805. X                   ::= { decnet 22 }
  806. X
  807. X               dnNovector OBJECT-TYPE
  808. X                   SYNTAX  INTEGER
  809. X
  810. X
  811. X
  812. X
  813. X
  814. X          -- cisco MIB                                         [Page 81]
  815. X--
  816. X
  817. X
  818. X
  819. X
  820. X
  821. X          -- Request for Comments: Draft             cisco Systems, Inc.
  822. X
  823. X
  824. X                   ACCESS  read-only
  825. X                   STATUS  mandatory
  826. X                   ::= { decnet 23 }
  827. X
  828. X               dnOtherlevel2 OBJECT-TYPE
  829. X                   SYNTAX  INTEGER
  830. X                   ACCESS  read-only
  831. X                   STATUS  mandatory
  832. X                   ::= { decnet 24 }
  833. X
  834. X               dnNoaccess OBJECT-TYPE
  835. X                   SYNTAX  INTEGER
  836. X                   ACCESS  read-only
  837. X                   STATUS  mandatory
  838. X                   ::= { decnet 25 }
  839. X
  840. X               dnAreaTable OBJECT-TYPE
  841. X                   SYNTAX  SEQUENCE OF DnAreaTableEntry
  842. X                   ACCESS  not-accessible
  843. X                   STATUS  mandatory
  844. X                   ::= { decnet 26 }
  845. X
  846. X               dnAreaTableEntry OBJECT-TYPE
  847. X                   SYNTAX DnAreaTableEntry
  848. X                   ACCESS  not-accessible
  849. X                   STATUS  mandatory
  850. X               ::= { dnAreaTable 1 }
  851. X
  852. X               DnAreaTableEntry ::=
  853. X                   SEQUENCE {
  854. X                       dnArea
  855. X                           INTEGER,
  856. X
  857. X
  858. X
  859. X
  860. X
  861. X          -- cisco MIB                                         [Page 82]
  862. X--
  863. X
  864. X
  865. X
  866. X
  867. X
  868. X          -- Request for Comments: Draft             cisco Systems, Inc.
  869. X
  870. X
  871. X                       dnACost
  872. X                           INTEGER,
  873. X                       dnAHop
  874. X                           INTEGER,
  875. X                       dnAIfIndex
  876. X                           INTEGER,
  877. X                       dnANextHop
  878. X                           OCTET STRING,
  879. X                       dnAAge
  880. X                           INTEGER,
  881. X                       dnAPrio
  882. X                           INTEGER
  883. X                   }
  884. X
  885. X
  886. X          -- The following section describes the components of the
  887. X          -- table.
  888. X
  889. X               dnArea OBJECT-TYPE
  890. X                   SYNTAX  INTEGER
  891. X                   ACCESS  read-only
  892. X                   STATUS  mandatory
  893. X                   ::= { dnAreaTableEntry 1 }
  894. X
  895. X               dnACost OBJECT-TYPE
  896. X                   SYNTAX  INTEGER
  897. X                   ACCESS  read-only
  898. X                   STATUS  mandatory
  899. X                   ::= { dnAreaTableEntry 2 }
  900. X
  901. X               dnAHop OBJECT-TYPE
  902. X                   SYNTAX  INTEGER
  903. X                   ACCESS  read-only
  904. X                   STATUS  mandatory
  905. X                   ::= { dnAreaTableEntry 3 }
  906. X
  907. X               dnAIfIndex OBJECT-TYPE
  908. X                   SYNTAX  INTEGER
  909. X                   ACCESS  read-only
  910. X
  911. X
  912. X
  913. X
  914. X
  915. X          -- cisco MIB                                         [Page 83]
  916. X--
  917. X
  918. X
  919. X
  920. X
  921. X
  922. X          -- Request for Comments: Draft             cisco Systems, Inc.
  923. X
  924. X
  925. X                   STATUS  mandatory
  926. X                   ::= { dnAreaTableEntry 4 }
  927. X
  928. X               dnANextHop OBJECT-TYPE
  929. X                   SYNTAX  OCTET STRING
  930. X                   ACCESS  read-only
  931. X                   STATUS  mandatory
  932. X                   ::= { dnAreaTableEntry 5 }
  933. X
  934. X               dnAAge OBJECT-TYPE
  935. X                   SYNTAX  INTEGER
  936. X                   ACCESS  read-only
  937. X                   STATUS  mandatory
  938. X                   ::= { dnAreaTableEntry 6 }
  939. X
  940. X               dnAPrio OBJECT-TYPE
  941. X                   SYNTAX  INTEGER
  942. X                   ACCESS  read-only
  943. X                   STATUS  mandatory
  944. X                   ::= { dnAreaTableEntry 7 }
  945. X
  946. X               -- End of table
  947. X
  948. X
  949. X               dnHostTable OBJECT-TYPE
  950. X                   SYNTAX  SEQUENCE OF DnHostTableEntry
  951. X                   ACCESS  not-accessible
  952. X                   STATUS  mandatory
  953. X                   ::= { decnet 27 }
  954. X
  955. X               dnHostTableEntry OBJECT-TYPE
  956. X                   SYNTAX DnHostTableEntry
  957. X                   ACCESS  not-accessible
  958. X                   STATUS  mandatory
  959. X
  960. X
  961. X
  962. X
  963. X
  964. X          -- cisco MIB                                         [Page 84]
  965. X--
  966. X
  967. X
  968. X
  969. X
  970. X
  971. X          -- Request for Comments: Draft             cisco Systems, Inc.
  972. X
  973. X
  974. X               ::= { dnHostTable 1 }
  975. X
  976. X               DnHostTableEntry ::=
  977. X                   SEQUENCE {
  978. X                       dnHost
  979. X                           INTEGER,
  980. X                       dnHCost
  981. X                           INTEGER,
  982. X                       dnHHop
  983. X                           INTEGER,
  984. X                       dnHIfIndex
  985. X                           INTEGER,
  986. X                       dnHNextHop
  987. X                           OCTET STRING,
  988. X                       dnHAge
  989. X                           INTEGER,
  990. X                       dnHPrio
  991. X                           INTEGER
  992. X                   }
  993. X
  994. X
  995. X          -- The following section describes the components of the
  996. X          -- table.
  997. X
  998. X               dnHost OBJECT-TYPE
  999. X                   SYNTAX  INTEGER
  1000. X                   ACCESS  read-only
  1001. X                   STATUS  mandatory
  1002. X                   ::= { dnHostTableEntry 1 }
  1003. X
  1004. X               dnHCost OBJECT-TYPE
  1005. X                   SYNTAX  INTEGER
  1006. X                   ACCESS  read-only
  1007. X                   STATUS  mandatory
  1008. X                   ::= { dnHostTableEntry 2 }
  1009. X
  1010. X               dnHHop OBJECT-TYPE
  1011. X                   SYNTAX  INTEGER
  1012. X
  1013. X
  1014. X
  1015. X
  1016. X
  1017. X          -- cisco MIB                                         [Page 85]
  1018. X--
  1019. X
  1020. X
  1021. X
  1022. X
  1023. X
  1024. X          -- Request for Comments: Draft             cisco Systems, Inc.
  1025. X
  1026. X
  1027. X                   ACCESS  read-only
  1028. X                   STATUS  mandatory
  1029. X                   ::= { dnHostTableEntry 3 }
  1030. X
  1031. X               dnHIfIndex OBJECT-TYPE
  1032. X                   SYNTAX  INTEGER
  1033. X                   ACCESS  read-only
  1034. X                   STATUS  mandatory
  1035. X                   ::= { dnHostTableEntry 4 }
  1036. X
  1037. X               dnHNextHop OBJECT-TYPE
  1038. X                   SYNTAX  OCTET STRING
  1039. X                   ACCESS  read-only
  1040. X                   STATUS  mandatory
  1041. X                   ::= { dnHostTableEntry 5 }
  1042. X
  1043. X               dnHAge OBJECT-TYPE
  1044. X                   SYNTAX  INTEGER
  1045. X                   ACCESS  read-only
  1046. X                   STATUS  mandatory
  1047. X                   ::= { dnHostTableEntry 6 }
  1048. X
  1049. X               dnHPrio OBJECT-TYPE
  1050. X                   SYNTAX  INTEGER
  1051. X                   ACCESS  read-only
  1052. X                   STATUS  mandatory
  1053. X                   ::= { dnHostTableEntry 7 }
  1054. X
  1055. X               -- End of table
  1056. X
  1057. X
  1058. X               dnIfTable OBJECT-TYPE
  1059. X                   SYNTAX  SEQUENCE OF DnIfTableEntry
  1060. X
  1061. X
  1062. X
  1063. X
  1064. X
  1065. X          -- cisco MIB                                         [Page 86]
  1066. X--
  1067. X
  1068. X
  1069. X
  1070. X
  1071. X
  1072. X          -- Request for Comments: Draft             cisco Systems, Inc.
  1073. X
  1074. X
  1075. X                   ACCESS  not-accessible
  1076. X                   STATUS  mandatory
  1077. X                   ::= { decnet 28 }
  1078. X
  1079. X               dnIfTableEntry OBJECT-TYPE
  1080. X                   SYNTAX DnIfTableEntry
  1081. X                   ACCESS  not-accessible
  1082. X                   STATUS  mandatory
  1083. X               ::= { dnIfTable 1 }
  1084. X
  1085. X               DnIfTableEntry ::=
  1086. X                   SEQUENCE {
  1087. X                       dnIfCost
  1088. X                           INTEGER
  1089. X                   }
  1090. X
  1091. X
  1092. X          -- The following section describes the components of the
  1093. X          -- table.
  1094. X
  1095. X               dnIfCost OBJECT-TYPE
  1096. X                   SYNTAX  INTEGER
  1097. X                   ACCESS  read-only
  1098. X                   STATUS  mandatory
  1099. X                   ::= { dnIfTableEntry 1 }
  1100. X
  1101. X               -- End of table
  1102. X
  1103. X
  1104. X
  1105. X               -- Temporary XNS Section
  1106. X
  1107. X          -- This group is present in all router based products.
  1108. X
  1109. X               xnsInput OBJECT-TYPE
  1110. X                   SYNTAX  INTEGER
  1111. X                   ACCESS  read-only
  1112. X                   STATUS  mandatory
  1113. X
  1114. X
  1115. X
  1116. X
  1117. X
  1118. X          -- cisco MIB                                         [Page 87]
  1119. X--
  1120. X
  1121. X
  1122. X
  1123. X
  1124. X
  1125. X          -- Request for Comments: Draft             cisco Systems, Inc.
  1126. X
  1127. X
  1128. X                   ::= { xns 1 }
  1129. X
  1130. X               xnsLocal OBJECT-TYPE
  1131. X                   SYNTAX  INTEGER
  1132. X                   ACCESS  read-only
  1133. X                   STATUS  mandatory
  1134. X                   ::= { xns 2 }
  1135. X
  1136. X               xnsBcastin OBJECT-TYPE
  1137. X                   SYNTAX  INTEGER
  1138. X                   ACCESS  read-only
  1139. X                   STATUS  mandatory
  1140. X                   ::= { xns 3 }
  1141. X
  1142. X               xnsForward OBJECT-TYPE
  1143. X                   SYNTAX  INTEGER
  1144. X                   ACCESS  read-only
  1145. X                   STATUS  mandatory
  1146. X                   ::= { xns 4 }
  1147. X
  1148. X               xnsBcastout OBJECT-TYPE
  1149. X                   SYNTAX  INTEGER
  1150. X                   ACCESS  read-only
  1151. X                   STATUS  mandatory
  1152. X                   ::= { xns 5 }
  1153. X
  1154. X               xnsErrin OBJECT-TYPE
  1155. X                   SYNTAX  INTEGER
  1156. X                   ACCESS  read-only
  1157. X                   STATUS  mandatory
  1158. X                   ::= { xns 6 }
  1159. X
  1160. X               xnsErrout OBJECT-TYPE
  1161. X                   SYNTAX  INTEGER
  1162. X                   ACCESS  read-only
  1163. X                   STATUS  mandatory
  1164. X                   ::= { xns 7 }
  1165. X
  1166. X               xnsFormerr OBJECT-TYPE
  1167. X                   SYNTAX  INTEGER
  1168. X                   ACCESS  read-only
  1169. X                   STATUS  mandatory
  1170. X                   ::= { xns 8 }
  1171. X
  1172. X               xnsChksum OBJECT-TYPE
  1173. X                   SYNTAX  INTEGER
  1174. X                   ACCESS  read-only
  1175. X                   STATUS  mandatory
  1176. X                   ::= { xns 9 }
  1177. X
  1178. X               xnsNotgate OBJECT-TYPE
  1179. X                   SYNTAX  INTEGER
  1180. X                   ACCESS  read-only
  1181. X                   STATUS  mandatory
  1182. X                   ::= { xns 10 }
  1183. X
  1184. X               xnsHopcnt OBJECT-TYPE
  1185. X                   SYNTAX  INTEGER
  1186. X                   ACCESS  read-only
  1187. X                   STATUS  mandatory
  1188. X                   ::= { xns 11 }
  1189. X
  1190. X               xnsNoroute OBJECT-TYPE
  1191. X                   SYNTAX  INTEGER
  1192. X                   ACCESS  read-only
  1193. X                   STATUS  mandatory
  1194. X                   ::= { xns 12 }
  1195. X
  1196. X               xnsNoencap OBJECT-TYPE
  1197. X                   SYNTAX  INTEGER
  1198. X                   ACCESS  read-only
  1199. X                   STATUS  mandatory
  1200. X                   ::= { xns 13 }
  1201. X
  1202. X               xnsOutput OBJECT-TYPE
  1203. X                   SYNTAX  INTEGER
  1204. X                   ACCESS  read-only
  1205. X                   STATUS  mandatory
  1206. X                   ::= { xns 14 }
  1207. X
  1208. X               xnsInmult OBJECT-TYPE
  1209. X                   SYNTAX  INTEGER
  1210. X                   ACCESS  read-only
  1211. X                   STATUS  mandatory
  1212. X                   ::= { xns 15 }
  1213. X
  1214. X               xnsUnknown OBJECT-TYPE
  1215. X                   SYNTAX  INTEGER
  1216. X                   ACCESS  read-only
  1217. X                   STATUS  mandatory
  1218. X                   ::= { xns 16 }
  1219. X
  1220. X               xnsFwdbrd OBJECT-TYPE
  1221. X                   SYNTAX  INTEGER
  1222. X                   ACCESS  read-only
  1223. X                   STATUS  mandatory
  1224. X                   ::= { xns 17 }
  1225. X
  1226. X               xnsEchoreqin OBJECT-TYPE
  1227. X                   SYNTAX  INTEGER
  1228. X                   ACCESS  read-only
  1229. X                   STATUS  mandatory
  1230. X                   ::= { xns 18 }
  1231. X
  1232. X               xnsEchoreqout OBJECT-TYPE
  1233. X                   SYNTAX  INTEGER
  1234. X                   ACCESS  read-only
  1235. X                   STATUS  mandatory
  1236. X                   ::= { xns 19 }
  1237. X
  1238. X               xnsEchorepin OBJECT-TYPE
  1239. X                   SYNTAX  INTEGER
  1240. X                   ACCESS  read-only
  1241. X                   STATUS  mandatory
  1242. X                   ::= { xns 20 }
  1243. X
  1244. X               xnsEchorepout OBJECT-TYPE
  1245. X                   SYNTAX  INTEGER
  1246. X                   ACCESS  read-only
  1247. X                   STATUS  mandatory
  1248. X                   ::= { xns 21 }
  1249. X
  1250. X
  1251. X               -- Temporary AppleTalk Section
  1252. X
  1253. X          -- This group is present in all router based products.
  1254. X
  1255. X               atInput OBJECT-TYPE
  1256. X                   SYNTAX  INTEGER
  1257. X                   ACCESS  read-only
  1258. X                   STATUS  mandatory
  1259. X                   ::= { appletalk 1 }
  1260. X
  1261. X               atLocal OBJECT-TYPE
  1262. X                   SYNTAX  INTEGER
  1263. X                   ACCESS  read-only
  1264. X                   STATUS  mandatory
  1265. X                   ::= { appletalk 2 }
  1266. X
  1267. X               atBcastin OBJECT-TYPE
  1268. X                   SYNTAX  INTEGER
  1269. X                   ACCESS  read-only
  1270. X                   STATUS  mandatory
  1271. X                   ::= { appletalk 3 }
  1272. X
  1273. X               atForward OBJECT-TYPE
  1274. X                   SYNTAX  INTEGER
  1275. X                   ACCESS  read-only
  1276. X                   STATUS  mandatory
  1277. X                   ::= { appletalk 4 }
  1278. X
  1279. X
  1280. X
  1281. X
  1282. X
  1283. X
  1284. X          -- cisco MIB                                         [Page 92]
  1285. X--
  1286. X
  1287. X
  1288. X
  1289. X
  1290. X
  1291. X          -- Request for Comments: Draft             cisco Systems, Inc.
  1292. X
  1293. X
  1294. X               atBcastout OBJECT-TYPE
  1295. X                   SYNTAX  INTEGER
  1296. X                   ACCESS  read-only
  1297. X                   STATUS  mandatory
  1298. X                   ::= { appletalk 5 }
  1299. X
  1300. X               atChksum OBJECT-TYPE
  1301. X                   SYNTAX  INTEGER
  1302. X                   ACCESS  read-only
  1303. X                   STATUS  mandatory
  1304. X                   ::= { appletalk 7 }
  1305. X
  1306. X               atNotgate OBJECT-TYPE
  1307. X                   SYNTAX  INTEGER
  1308. X                   ACCESS  read-only
  1309. X                   STATUS  mandatory
  1310. X                   ::= { appletalk 8 }
  1311. X
  1312. X               atHopcnt OBJECT-TYPE
  1313. X                   SYNTAX  INTEGER
  1314. X                   ACCESS  read-only
  1315. X                   STATUS  mandatory
  1316. X                   ::= { appletalk 9 }
  1317. X
  1318. X               atNoaccess OBJECT-TYPE
  1319. X                   SYNTAX  INTEGER
  1320. X                   ACCESS  read-only
  1321. X                   STATUS  mandatory
  1322. X                   ::= { appletalk 10 }
  1323. X
  1324. X
  1325. X
  1326. X
  1327. X
  1328. X          -- cisco MIB                                         [Page 93]
  1329. X--
  1330. X
  1331. X
  1332. X
  1333. X
  1334. X
  1335. X          -- Request for Comments: Draft             cisco Systems, Inc.
  1336. X
  1337. X
  1338. X               atNoroute OBJECT-TYPE
  1339. X                   SYNTAX  INTEGER
  1340. X                   ACCESS  read-only
  1341. X                   STATUS  mandatory
  1342. X                   ::= { appletalk 11 }
  1343. X
  1344. X               atNoencap OBJECT-TYPE
  1345. X                   SYNTAX  INTEGER
  1346. X                   ACCESS  read-only
  1347. X                   STATUS  mandatory
  1348. X                   ::= { appletalk 12 }
  1349. X
  1350. X               atOutput OBJECT-TYPE
  1351. X                   SYNTAX  INTEGER
  1352. X                   ACCESS  read-only
  1353. X                   STATUS  mandatory
  1354. X                   ::= { appletalk 13 }
  1355. X
  1356. X               atInmult OBJECT-TYPE
  1357. X                   SYNTAX  INTEGER
  1358. X                   ACCESS  read-only
  1359. X                   STATUS  mandatory
  1360. X                   ::= { appletalk 14 }
  1361. X
  1362. X               atRtmpin OBJECT-TYPE
  1363. X                   SYNTAX  INTEGER
  1364. X                   ACCESS  read-only
  1365. X                   STATUS  mandatory
  1366. X                   ::= { appletalk 15 }
  1367. X
  1368. X
  1369. X
  1370. X
  1371. X
  1372. X
  1373. X          -- cisco MIB                                         [Page 94]
  1374. X--
  1375. X
  1376. X
  1377. X
  1378. X
  1379. X
  1380. X          -- Request for Comments: Draft             cisco Systems, Inc.
  1381. X
  1382. X
  1383. X               atRtmpout OBJECT-TYPE
  1384. X                   SYNTAX  INTEGER
  1385. X                   ACCESS  read-only
  1386. X                   STATUS  mandatory
  1387. X                   ::= { appletalk 16 }
  1388. X
  1389. X               atNbpin OBJECT-TYPE
  1390. X                   SYNTAX  INTEGER
  1391. X                   ACCESS  read-only
  1392. X                   STATUS  mandatory
  1393. X                   ::= { appletalk 17 }
  1394. X
  1395. X               atNbpout OBJECT-TYPE
  1396. X                   SYNTAX  INTEGER
  1397. X                   ACCESS  read-only
  1398. X                   STATUS  mandatory
  1399. X                   ::= { appletalk 18 }
  1400. X
  1401. X               atAtp OBJECT-TYPE
  1402. X                   SYNTAX  INTEGER
  1403. X                   ACCESS  read-only
  1404. X                   STATUS  mandatory
  1405. X                   ::= { appletalk 19 }
  1406. X
  1407. X               atZipin OBJECT-TYPE
  1408. X                   SYNTAX  INTEGER
  1409. X                   ACCESS  read-only
  1410. X                   STATUS  mandatory
  1411. X                   ::= { appletalk 20 }
  1412. X
  1413. X
  1414. X
  1415. X
  1416. X
  1417. X
  1418. X          -- cisco MIB                                         [Page 95]
  1419. X--
  1420. X
  1421. X
  1422. X
  1423. X
  1424. X
  1425. X          -- Request for Comments: Draft             cisco Systems, Inc.
  1426. X
  1427. X
  1428. X               atZipout OBJECT-TYPE
  1429. X                   SYNTAX  INTEGER
  1430. X                   ACCESS  read-only
  1431. X                   STATUS  mandatory
  1432. X                   ::= { appletalk 21 }
  1433. X
  1434. X               atEcho OBJECT-TYPE
  1435. X                   SYNTAX  INTEGER
  1436. X                   ACCESS  read-only
  1437. X                   STATUS  mandatory
  1438. X                   ::= { appletalk 22 }
  1439. X
  1440. X               atEchoill OBJECT-TYPE
  1441. X                   SYNTAX  INTEGER
  1442. X                   ACCESS  read-only
  1443. X                   STATUS  mandatory
  1444. X                   ::= { appletalk 23 }
  1445. X
  1446. X               atDdpshort OBJECT-TYPE
  1447. X                   SYNTAX  INTEGER
  1448. X                   ACCESS  read-only
  1449. X                   STATUS  mandatory
  1450. X                   ::= { appletalk 24 }
  1451. X
  1452. X               atDdplong OBJECT-TYPE
  1453. X                   SYNTAX  INTEGER
  1454. X                   ACCESS  read-only
  1455. X                   STATUS  mandatory
  1456. X                   ::= { appletalk 25 }
  1457. X
  1458. X
  1459. X
  1460. X
  1461. X
  1462. X
  1463. X          -- cisco MIB                                         [Page 96]
  1464. X--
  1465. X
  1466. X
  1467. X
  1468. X
  1469. X
  1470. X          -- Request for Comments: Draft             cisco Systems, Inc.
  1471. X
  1472. X
  1473. X               atDdpbad OBJECT-TYPE
  1474. X                   SYNTAX  INTEGER
  1475. X                   ACCESS  read-only
  1476. X                   STATUS  mandatory
  1477. X                   ::= { appletalk 26 }
  1478. X
  1479. X               atNobuffer OBJECT-TYPE
  1480. X                   SYNTAX  INTEGER
  1481. X                   ACCESS  read-only
  1482. X                   STATUS  mandatory
  1483. X                   ::= { appletalk 27 }
  1484. X
  1485. X               atArpreq OBJECT-TYPE
  1486. X                   SYNTAX  INTEGER
  1487. X                   ACCESS  read-only
  1488. X                   STATUS  mandatory
  1489. X                   ::= { appletalk 28 }
  1490. X
  1491. X               atArpreply OBJECT-TYPE
  1492. X                   SYNTAX  INTEGER
  1493. X                   ACCESS  read-only
  1494. X                   STATUS  mandatory
  1495. X                   ::= { appletalk 29 }
  1496. X
  1497. X               atArpprobe OBJECT-TYPE
  1498. X                   SYNTAX  INTEGER
  1499. X                   ACCESS  read-only
  1500. X                   STATUS  mandatory
  1501. X                   ::= { appletalk 30 }
  1502. X
  1503. X
  1504. X
  1505. X
  1506. X
  1507. X
  1508. X          -- cisco MIB                                         [Page 97]
  1509. X--
  1510. X
  1511. X
  1512. X
  1513. X
  1514. X
  1515. X          -- Request for Comments: Draft             cisco Systems, Inc.
  1516. X
  1517. X
  1518. X               atUnknown OBJECT-TYPE
  1519. X                   SYNTAX  INTEGER
  1520. X                   ACCESS  read-only
  1521. X                   STATUS  mandatory
  1522. X                   ::= { appletalk 31 }
  1523. X
  1524. X
  1525. X               -- Temporary Novell Section
  1526. X
  1527. X          -- This group is present in all router based products.
  1528. X
  1529. X               novellInput OBJECT-TYPE
  1530. X                   SYNTAX  INTEGER
  1531. X                   ACCESS  read-only
  1532. X                   STATUS  mandatory
  1533. X                   ::= { novell 1 }
  1534. X
  1535. X               novellBcastin OBJECT-TYPE
  1536. X                   SYNTAX  INTEGER
  1537. X                   ACCESS  read-only
  1538. X                   STATUS  mandatory
  1539. X                   ::= { novell 2 }
  1540. X
  1541. X               novellForward OBJECT-TYPE
  1542. X                   SYNTAX  INTEGER
  1543. X                   ACCESS  read-only
  1544. X                   STATUS  mandatory
  1545. X                   ::= { novell 3 }
  1546. X
  1547. X               novellBcastout OBJECT-TYPE
  1548. X                   SYNTAX  INTEGER
  1549. X                   ACCESS  read-only
  1550. X                   STATUS  mandatory
  1551. X
  1552. X
  1553. X
  1554. X
  1555. X
  1556. X          -- cisco MIB                                         [Page 98]
  1557. X--
  1558. X
  1559. X
  1560. X
  1561. X
  1562. X
  1563. X          -- Request for Comments: Draft             cisco Systems, Inc.
  1564. X
  1565. X
  1566. X                   ::= { novell 4 }
  1567. X
  1568. X               novellFormerr OBJECT-TYPE
  1569. X                   SYNTAX  INTEGER
  1570. X                   ACCESS  read-only
  1571. X                   STATUS  mandatory
  1572. X                   ::= { novell 5 }
  1573. X
  1574. X               novellChksum OBJECT-TYPE
  1575. X                   SYNTAX  INTEGER
  1576. X                   ACCESS  read-only
  1577. X                   STATUS  mandatory
  1578. X                   ::= { novell 6 }
  1579. X
  1580. X               novellHopcnt OBJECT-TYPE
  1581. X                   SYNTAX  INTEGER
  1582. X                   ACCESS  read-only
  1583. X                   STATUS  mandatory
  1584. X                   ::= { novell 7 }
  1585. X
  1586. X               novellNoroute OBJECT-TYPE
  1587. X                   SYNTAX  INTEGER
  1588. X                   ACCESS  read-only
  1589. X                   STATUS  mandatory
  1590. X                   ::= { novell 8 }
  1591. X
  1592. X               novellNoencap OBJECT-TYPE
  1593. X                   SYNTAX  INTEGER
  1594. X                   ACCESS  read-only
  1595. X
  1596. X
  1597. X
  1598. X
  1599. X
  1600. X          -- cisco MIB                                         [Page 99]
  1601. X--
  1602. X
  1603. X
  1604. X
  1605. X
  1606. X
  1607. X          -- Request for Comments: Draft             cisco Systems, Inc.
  1608. X
  1609. X
  1610. X                   STATUS  mandatory
  1611. X                   ::= { novell 9 }
  1612. X
  1613. X               novellOutput OBJECT-TYPE
  1614. X                   SYNTAX  INTEGER
  1615. X                   ACCESS  read-only
  1616. X                   STATUS  mandatory
  1617. X                   ::= { novell 10 }
  1618. X
  1619. X               novellInmult OBJECT-TYPE
  1620. X                   SYNTAX  INTEGER
  1621. X                   ACCESS  read-only
  1622. X                   STATUS  mandatory
  1623. X                   ::= { novell 11 }
  1624. X
  1625. X               novellLocal OBJECT-TYPE
  1626. X                   SYNTAX  INTEGER
  1627. X                   ACCESS  read-only
  1628. X                   STATUS  mandatory
  1629. X                   ::= { novell 12 }
  1630. X
  1631. X               novellUnknown OBJECT-TYPE
  1632. X                   SYNTAX  INTEGER
  1633. X                   ACCESS  read-only
  1634. X                   STATUS  mandatory
  1635. X                   ::= { novell 13 }
  1636. X
  1637. X               novellSapreqin OBJECT-TYPE
  1638. X                   SYNTAX  INTEGER
  1639. X                   ACCESS  read-only
  1640. X
  1641. X
  1642. X
  1643. X
  1644. X
  1645. X          -- cisco MIB                                        [Page 100]
  1646. X--
  1647. X
  1648. X
  1649. X
  1650. X
  1651. X
  1652. X          -- Request for Comments: Draft             cisco Systems, Inc.
  1653. X
  1654. X
  1655. X                   STATUS  mandatory
  1656. X                   ::= { novell 14 }
  1657. X
  1658. X               novellSapresin OBJECT-TYPE
  1659. X                   SYNTAX  INTEGER
  1660. X                   ACCESS  read-only
  1661. X                   STATUS  mandatory
  1662. X                   ::= { novell 15 }
  1663. X
  1664. X               novellSapout OBJECT-TYPE
  1665. X                   SYNTAX  INTEGER
  1666. X                   ACCESS  read-only
  1667. X                   STATUS  mandatory
  1668. X                   ::= { novell 16 }
  1669. X
  1670. X               novellSapreply OBJECT-TYPE
  1671. X                   SYNTAX  INTEGER
  1672. X                   ACCESS  read-only
  1673. X                   STATUS  mandatory
  1674. X                   ::= { novell 17 }
  1675. X
  1676. X
  1677. X               -- Temporary Vines Section
  1678. X
  1679. X          -- This group is present in all router based products.
  1680. X
  1681. X               vinesInput OBJECT-TYPE
  1682. X                   SYNTAX  INTEGER
  1683. X                   ACCESS  read-only
  1684. X                   STATUS  mandatory
  1685. X                   ::= { vines 1 }
  1686. X
  1687. X               vinesOutput OBJECT-TYPE
  1688. X                   SYNTAX  INTEGER
  1689. X                   ACCESS  read-only
  1690. X                   STATUS  mandatory
  1691. X                   ::= { vines 2 }
  1692. X
  1693. X               vinesLocaldest OBJECT-TYPE
  1694. X                   SYNTAX  INTEGER
  1695. X                   ACCESS  read-only
  1696. X                   STATUS  mandatory
  1697. X                   ::= { vines 3 }
  1698. X
  1699. X               vinesForwarded OBJECT-TYPE
  1700. X                   SYNTAX  INTEGER
  1701. X                   ACCESS  read-only
  1702. X                   STATUS  mandatory
  1703. X                   ::= { vines 4 }
  1704. X
  1705. X               vinesBcastin OBJECT-TYPE
  1706. X                   SYNTAX  INTEGER
  1707. X                   ACCESS  read-only
  1708. X                   STATUS  mandatory
  1709. X                   ::= { vines 5 }
  1710. X
  1711. X               vinesBcastout OBJECT-TYPE
  1712. X                   SYNTAX  INTEGER
  1713. X                   ACCESS  read-only
  1714. X                   STATUS  mandatory
  1715. X                   ::= { vines 6 }
  1716. X
  1717. X               vinesBcastfwd OBJECT-TYPE
  1718. X                   SYNTAX  INTEGER
  1719. X                   ACCESS  read-only
  1720. X                   STATUS  mandatory
  1721. X                   ::= { vines 7 }
  1722. X
  1723. X               vinesNotlan OBJECT-TYPE
  1724. X                   SYNTAX  INTEGER
  1725. X                   ACCESS  read-only
  1726. X                   STATUS  mandatory
  1727. X                   ::= { vines 8 }
  1728. X
  1729. X               vinesNotgt4800 OBJECT-TYPE
  1730. X                   SYNTAX  INTEGER
  1731. X                   ACCESS  read-only
  1732. X                   STATUS  mandatory
  1733. X                   ::= { vines 9 }
  1734. X
  1735. X               vinesNocharges OBJECT-TYPE
  1736. X                   SYNTAX  INTEGER
  1737. X                   ACCESS  read-only
  1738. X                   STATUS  mandatory
  1739. X                   ::= { vines 10 }
  1740. X
  1741. X               vinesFormaterror OBJECT-TYPE
  1742. X                   SYNTAX  INTEGER
  1743. X                   ACCESS  read-only
  1744. X                   STATUS  mandatory
  1745. X
  1746. X
  1747. X
  1748. X
  1749. X
  1750. X          -- cisco MIB                                        [Page 103]
  1751. X--
  1752. X
  1753. X
  1754. X
  1755. X
  1756. X
  1757. X          -- Request for Comments: Draft             cisco Systems, Inc.
  1758. X
  1759. X
  1760. X                   ::= { vines 11 }
  1761. X
  1762. X               vinesCksumerr OBJECT-TYPE
  1763. X                   SYNTAX  INTEGER
  1764. X                   ACCESS  read-only
  1765. X                   STATUS  mandatory
  1766. X                   ::= { vines 12 }
  1767. X
  1768. X               vinesHopcount OBJECT-TYPE
  1769. X                   SYNTAX  INTEGER
  1770. X                   ACCESS  read-only
  1771. X                   STATUS  mandatory
  1772. X                   ::= { vines 13 }
  1773. X
  1774. X               vinesNoroute OBJECT-TYPE
  1775. X                   SYNTAX  INTEGER
  1776. X                   ACCESS  read-only
  1777. X                   STATUS  mandatory
  1778. X                   ::= { vines 14 }
  1779. X
  1780. X               vinesEncapsfailed OBJECT-TYPE
  1781. X                   SYNTAX  INTEGER
  1782. X                   ACCESS  read-only
  1783. X                   STATUS  mandatory
  1784. X                   ::= { vines 15 }
  1785. X
  1786. X               vinesUnknown OBJECT-TYPE
  1787. X                   SYNTAX  INTEGER
  1788. X                   ACCESS  read-only
  1789. X                   STATUS  mandatory
  1790. X
  1791. X
  1792. X
  1793. X
  1794. X
  1795. X          -- cisco MIB                                        [Page 104]
  1796. X--
  1797. X
  1798. X
  1799. X
  1800. X
  1801. X
  1802. X          -- Request for Comments: Draft             cisco Systems, Inc.
  1803. X
  1804. X
  1805. X                   ::= { vines 16 }
  1806. X
  1807. X               vinesIcpIn OBJECT-TYPE
  1808. X                   SYNTAX  INTEGER
  1809. X                   ACCESS  read-only
  1810. X                   STATUS  mandatory
  1811. X                   ::= { vines 17 }
  1812. X
  1813. X               vinesIcpOut OBJECT-TYPE
  1814. X                   SYNTAX  INTEGER
  1815. X                   ACCESS  read-only
  1816. X                   STATUS  mandatory
  1817. X                   ::= { vines 18 }
  1818. X
  1819. X               vinesMetricOut OBJECT-TYPE
  1820. X                   SYNTAX  INTEGER
  1821. X                   ACCESS  read-only
  1822. X                   STATUS  mandatory
  1823. X                   ::= { vines 19 }
  1824. X
  1825. X               vinesMacEchoIn OBJECT-TYPE
  1826. X                   SYNTAX  INTEGER
  1827. X                   ACCESS  read-only
  1828. X                   STATUS  mandatory
  1829. X                   ::= { vines 20 }
  1830. X
  1831. X               vinesMacEchoOut OBJECT-TYPE
  1832. X                   SYNTAX  INTEGER
  1833. X                   ACCESS  read-only
  1834. X                   STATUS  mandatory
  1835. X
  1836. X
  1837. X
  1838. X
  1839. X
  1840. X          -- cisco MIB                                        [Page 105]
  1841. X--
  1842. X
  1843. X
  1844. X
  1845. X
  1846. X
  1847. X          -- Request for Comments: Draft             cisco Systems, Inc.
  1848. X
  1849. X
  1850. X                   ::= { vines 21 }
  1851. X
  1852. X               vinesEchoIn OBJECT-TYPE
  1853. X                   SYNTAX  INTEGER
  1854. X                   ACCESS  read-only
  1855. X                   STATUS  mandatory
  1856. X                   ::= { vines 22 }
  1857. X
  1858. X               vinesEchoOut OBJECT-TYPE
  1859. X                   SYNTAX  INTEGER
  1860. X                   ACCESS  read-only
  1861. X                   STATUS  mandatory
  1862. X                   ::= { vines 23 }
  1863. X               END
  1864. X
  1865. X
  1866. X
  1867. X
  1868. X
  1869. X
  1870. X
  1871. X
  1872. X
  1873. X
  1874. X
  1875. X
  1876. X
  1877. X
  1878. X
  1879. X
  1880. X
  1881. X
  1882. X
  1883. X
  1884. X
  1885. X
  1886. X
  1887. X
  1888. X
  1889. X
  1890. X
  1891. X          -- cisco MIB                                        [Page 106]
  1892. X--
  1893. X
  1894. END_OF_FILE
  1895.   if test 46940 -ne `wc -c <'nocol-3.0/src/cmu-snmp/mib.txt.C'`; then
  1896.     echo shar: \"'nocol-3.0/src/cmu-snmp/mib.txt.C'\" unpacked with wrong size!
  1897.   elif test -f 'nocol-3.0/src/cmu-snmp/mib.txt.A' && test -f 'nocol-3.0/src/cmu-snmp/mib.txt.B'; then
  1898.     echo shar: Combining  \"'nocol-3.0/src/cmu-snmp/mib.txt'\" \(164470 characters\)
  1899.     cat 'nocol-3.0/src/cmu-snmp/mib.txt.A' 'nocol-3.0/src/cmu-snmp/mib.txt.B' 'nocol-3.0/src/cmu-snmp/mib.txt.C' > 'nocol-3.0/src/cmu-snmp/mib.txt'
  1900.     if test 164470 -ne `wc -c <'nocol-3.0/src/cmu-snmp/mib.txt'`; then
  1901.       echo shar: \"'nocol-3.0/src/cmu-snmp/mib.txt'\" combined with wrong size!
  1902.     else
  1903.       rm nocol-3.0/src/cmu-snmp/mib.txt.A nocol-3.0/src/cmu-snmp/mib.txt.B nocol-3.0/src/cmu-snmp/mib.txt.C
  1904.     fi
  1905.   fi
  1906.   # end of 'nocol-3.0/src/cmu-snmp/mib.txt.C'
  1907. fi
  1908. if test -f 'nocol-3.0/src/cmu-snmp/snmplib/parse.c' -a "${1}" != "-c" ; then 
  1909.   echo shar: Will not clobber existing file \"'nocol-3.0/src/cmu-snmp/snmplib/parse.c'\"
  1910. else
  1911.   echo shar: Extracting \"'nocol-3.0/src/cmu-snmp/snmplib/parse.c'\" \(22322 characters\)
  1912.   sed "s/^X//" >'nocol-3.0/src/cmu-snmp/snmplib/parse.c' <<'END_OF_FILE'
  1913. X/***********************************************************
  1914. X    Copyright 1989 by Carnegie Mellon University
  1915. X
  1916. X                      All Rights Reserved
  1917. X
  1918. XPermission to use, copy, modify, and distribute this software and its 
  1919. Xdocumentation for any purpose and without fee is hereby granted, 
  1920. Xprovided that the above copyright notice appear in all copies and that
  1921. Xboth that copyright notice and this permission notice appear in 
  1922. Xsupporting documentation, and that the name of CMU not be
  1923. Xused in advertising or publicity pertaining to distribution of the
  1924. Xsoftware without specific, written prior permission.  
  1925. X
  1926. XCMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  1927. XALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
  1928. XCMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
  1929. XANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  1930. XWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
  1931. XARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  1932. XSOFTWARE.
  1933. X******************************************************************/
  1934. X/*
  1935. X * parse.c
  1936. X */
  1937. X#include <stdio.h>
  1938. X#include <ctype.h>
  1939. X#include <sys/types.h>
  1940. X#include "parse.h"
  1941. X
  1942. X/*
  1943. X * This is one element of an object identifier with either an integer subidentifier,
  1944. X * or a textual string label, or both.
  1945. X * The subid is -1 if not present, and label is NULL if not present.
  1946. X */
  1947. Xstruct subid {
  1948. X    int subid;
  1949. X    char *label;
  1950. X};
  1951. X
  1952. Xint Line = 1;
  1953. X
  1954. X/* types of tokens */
  1955. X#define    CONTINUE    -1
  1956. X#define LABEL        1
  1957. X#define SUBTREE        2
  1958. X#define SYNTAX        3
  1959. X#define OBJID        4
  1960. X#define OCTETSTR    5
  1961. X#define INTEGER        6
  1962. X#define NETADDR        7
  1963. X#define    IPADDR        8
  1964. X#define COUNTER        9
  1965. X#define GAUGE        10
  1966. X#define TIMETICKS   11
  1967. X#define OPAQUE        12
  1968. X#define NUL        13
  1969. X#define SEQUENCE    14
  1970. X#define OF        15    /* SEQUENCE OF */
  1971. X#define OBJTYPE        16
  1972. X#define ACCESS        17
  1973. X#define READONLY    18
  1974. X#define READWRITE   19
  1975. X#define    WRITEONLY   20
  1976. X#define NOACCESS    21
  1977. X#define STATUS        22
  1978. X#define MANDATORY   23
  1979. X#define OPTIONAL    24
  1980. X#define OBSOLETE    25
  1981. X#define RECOMMENDED 26
  1982. X#define PUNCT        27
  1983. X#define EQUALS        28
  1984. X
  1985. Xstruct tok {
  1986. X    char *name;            /* token name */
  1987. X    int len;            /* length not counting nul */
  1988. X    int token;            /* value */
  1989. X    int hash;            /* hash of name */
  1990. X    struct tok *next;        /* pointer to next in hash table */
  1991. X};
  1992. X
  1993. X
  1994. Xstruct tok tokens[] = {
  1995. X    { "obsolete", sizeof ("obsolete")-1, OBSOLETE },
  1996. X    { "Opaque", sizeof ("Opaque")-1, OPAQUE },
  1997. X    { "recommended", sizeof("recommended")-1, RECOMMENDED }, 
  1998. X    { "optional", sizeof ("optional")-1, OPTIONAL },
  1999. X    { "mandatory", sizeof ("mandatory")-1, MANDATORY },
  2000. X    { "not-accessible", sizeof ("not-accessible")-1, NOACCESS },
  2001. X    { "write-only", sizeof ("write-only")-1, WRITEONLY },
  2002. X    { "read-write", sizeof ("read-write")-1, READWRITE },
  2003. X    { "TimeTicks", sizeof ("TimeTicks")-1, TIMETICKS },
  2004. X    { "OBJECTIDENTIFIER", sizeof ("OBJECTIDENTIFIER")-1, OBJID },
  2005. X    /*
  2006. X     * This CONTINUE appends the next word onto OBJECT,
  2007. X     * hopefully matching OBJECTIDENTIFIER above.
  2008. X     */
  2009. X    { "OBJECT", sizeof ("OBJECT")-1, CONTINUE },
  2010. X    { "NetworkAddress", sizeof ("NetworkAddress")-1, NETADDR },
  2011. X    { "Gauge", sizeof ("Gauge")-1, GAUGE },
  2012. X    { "OCTETSTRING", sizeof ("OCTETSTRING")-1, OCTETSTR },
  2013. X    { "OCTET", sizeof ("OCTET")-1, -1 },
  2014. X    { "OF", sizeof ("OF")-1, OF },
  2015. X    { "SEQUENCE", sizeof ("SEQUENCE")-1, SEQUENCE },
  2016. X    { "NULL", sizeof ("NULL")-1, NUL },
  2017. X    { "IpAddress", sizeof ("IpAddress")-1, IPADDR },
  2018. X    { "INTEGER", sizeof ("INTEGER")-1, INTEGER },
  2019. X    { "Counter", sizeof ("Counter")-1, COUNTER },
  2020. X    { "read-only", sizeof ("read-only")-1, READONLY },
  2021. X    { "ACCESS", sizeof ("ACCESS")-1, ACCESS },
  2022. X    { "STATUS", sizeof ("STATUS")-1, STATUS },
  2023. X    { "SYNTAX", sizeof ("SYNTAX")-1, SYNTAX },
  2024. X    { "OBJECT-TYPE", sizeof ("OBJECT-TYPE")-1, OBJTYPE },
  2025. X    { "{", sizeof ("{")-1, PUNCT },
  2026. X    { "}", sizeof ("}")-1, PUNCT },
  2027. X    { "::=", sizeof ("::=")-1, EQUALS },
  2028. X    { NULL }
  2029. X};
  2030. X
  2031. X#define    HASHSIZE    32
  2032. X#define    BUCKET(x)    (x & 0x01F)
  2033. X
  2034. Xstruct tok    *buckets[HASHSIZE];
  2035. X
  2036. Xstatic
  2037. Xhash_init()
  2038. X{
  2039. X    register struct tok    *tp;
  2040. X    register char    *cp;
  2041. X    register int    h;
  2042. X    register int    b;
  2043. X
  2044. X    for (tp = tokens; tp->name; tp++) {
  2045. X        for (h = 0, cp = tp->name; *cp; cp++)
  2046. X            h += *cp;
  2047. X        tp->hash = h;
  2048. X        b = BUCKET(h);
  2049. X        if (buckets[b])
  2050. X            tp->next = buckets[b];
  2051. X        buckets[b] = tp;
  2052. X    }
  2053. X}
  2054. X
  2055. X
  2056. Xstatic char *
  2057. XMalloc(num)
  2058. X    unsigned num;
  2059. X{
  2060. X    char *cp;
  2061. X    char *malloc();
  2062. X    
  2063. X    /* this is to fix (what seems to be) a problem with the IBM RT C library malloc */
  2064. X    if (num < 16)
  2065. X    num = 16;
  2066. X    cp = malloc(num);
  2067. X    return cp;
  2068. X}
  2069. X
  2070. Xstatic
  2071. Xprint_error(string, token)
  2072. X    char *string;
  2073. X    char *token;
  2074. X{
  2075. X    if (token)
  2076. X    fprintf(stderr, "%s(%s): On or around line %d\n", string, token, Line);
  2077. X    else
  2078. X    fprintf(stderr, "%s: On or around line %d\n", string, Line);
  2079. X}
  2080. X
  2081. X#ifdef TEST
  2082. Xprint_subtree(tree, count)
  2083. X    struct tree *tree;
  2084. X    int count;
  2085. X{
  2086. X    struct tree *tp;
  2087. X    int i;
  2088. X
  2089. X    for(i = 0; i < count; i++)
  2090. X    printf("  ");
  2091. X    printf("Children of %s:\n", tree->label);
  2092. X    count++;
  2093. X    for(tp = tree->child_list; tp; tp = tp->next_peer){
  2094. X    for(i = 0; i < count; i++)
  2095. X        printf("  ");
  2096. X    printf("%s\n", tp->label);
  2097. X    }
  2098. X    for(tp = tree->child_list; tp; tp = tp->next_peer){
  2099. X    print_subtree(tp, count);
  2100. X    }
  2101. X}
  2102. X#endif /* TEST */
  2103. X
  2104. X
  2105. Xstatic struct tree *
  2106. Xbuild_tree(nodes)
  2107. X    struct node *nodes;
  2108. X{
  2109. X    struct node *np;
  2110. X    struct tree *tp;
  2111. X    
  2112. X    /* build root node */
  2113. X    tp = (struct tree *)Malloc(sizeof(struct tree));
  2114. X    tp->parent = NULL;
  2115. X    tp->next_peer = NULL;
  2116. X    tp->child_list = NULL;
  2117. X    tp->enums = NULL;
  2118. X    strcpy(tp->label, "iso");
  2119. X    tp->subid = 1;
  2120. X    tp->type = 0;
  2121. X    /* grow tree from this root node */
  2122. X    do_subtree(tp, &nodes);
  2123. X#ifdef TEST
  2124. X    print_subtree(tp, 0);
  2125. X#endif /* TEST */
  2126. X    /* If any nodes are left, the tree is probably inconsistent */
  2127. X    if (nodes){
  2128. X    fprintf(stderr, "The mib description doesn't seem to be consistent.\n");
  2129. X    fprintf(stderr, "Some nodes couldn't be linked under the \"iso\" tree.\n");
  2130. X    fprintf(stderr, "these nodes are left:\n");
  2131. X    for(np = nodes; np; np = np->next)
  2132. X        fprintf(stderr, "%s ::= { %s %d } (%d)\n", np->label, np->parent, np->subid,
  2133. X            np->type);
  2134. X    }
  2135. X    return tp;
  2136. X}
  2137. X
  2138. X
  2139. X/*
  2140. X * Find all the children of root in the list of nodes.  Link them into the
  2141. X * tree and out of the nodes list.
  2142. X */
  2143. Xstatic
  2144. Xdo_subtree(root, nodes)
  2145. X    struct tree *root;
  2146. X    struct node **nodes;
  2147. X{
  2148. X    register struct tree *tp;
  2149. X    struct tree *peer = NULL;
  2150. X    register struct node *np;
  2151. X    struct node *oldnp = NULL, *child_list = NULL, *childp = NULL;
  2152. X    
  2153. X    tp = root;
  2154. X    /*
  2155. X     * Search each of the nodes for one whose parent is root, and
  2156. X     * move each into a separate list.
  2157. X     */
  2158. X    for(np = *nodes; np; np = np->next){
  2159. X    if ((tp->label[0] == np->parent[0]) && !strcmp(tp->label, np->parent)){
  2160. X        if (child_list == NULL){
  2161. X        child_list = childp = np;   /* first entry in child list */
  2162. X        } else {
  2163. X        childp->next = np;
  2164. X        childp = np;
  2165. X        }
  2166. X        /* take this node out of the node list */
  2167. X        if (oldnp == NULL){
  2168. X        *nodes = np->next;  /* fix root of node list */
  2169. X        } else {
  2170. X        oldnp->next = np->next;    /* link around this node */
  2171. X        }
  2172. X    } else {
  2173. X        oldnp = np;
  2174. X    }
  2175. X    }
  2176. X    if (childp)
  2177. X    childp->next = 0;    /* re-terminate list */
  2178. X    /*
  2179. X     * Take each element in the child list and place it into the tree.
  2180. X     */
  2181. X    for(np = child_list; np; np = np->next){
  2182. X    tp = (struct tree *)Malloc(sizeof(struct tree));
  2183. X    tp->parent = root;
  2184. X    tp->next_peer = NULL;
  2185. X    tp->child_list = NULL;
  2186. X    strcpy(tp->label, np->label);
  2187. X    tp->subid = np->subid;
  2188. X    switch(np->type){
  2189. X        case OBJID:
  2190. X        tp->type = TYPE_OBJID;
  2191. X        break;
  2192. X        case OCTETSTR:
  2193. X        tp->type = TYPE_OCTETSTR;
  2194. X        break;
  2195. X        case INTEGER:
  2196. X        tp->type = TYPE_INTEGER;
  2197. X        break;
  2198. X        case NETADDR:
  2199. X        tp->type = TYPE_IPADDR;
  2200. X        break;
  2201. X        case IPADDR:
  2202. X        tp->type = TYPE_IPADDR;
  2203. X        break;
  2204. X        case COUNTER:
  2205. X        tp->type = TYPE_COUNTER;
  2206. X        break;
  2207. X        case GAUGE:
  2208. X        tp->type = TYPE_GAUGE;
  2209. X        break;
  2210. X        case TIMETICKS:
  2211. X        tp->type = TYPE_TIMETICKS;
  2212. X        break;
  2213. X        case OPAQUE:
  2214. X        tp->type = TYPE_OPAQUE;
  2215. X        break;
  2216. X        case NUL:
  2217. X        tp->type = TYPE_NULL;
  2218. X        break;
  2219. X        default:
  2220. X        tp->type = TYPE_OTHER;
  2221. X        break;
  2222. X    }
  2223. X    tp->enums = np->enums;
  2224. X    np->enums = NULL;    /* so we don't free them later */
  2225. X    if (root->child_list == NULL){
  2226. X        root->child_list = tp;
  2227. X    } else {
  2228. X        peer->next_peer = tp;
  2229. X    }
  2230. X    peer = tp;
  2231. X    do_subtree(tp, nodes);    /* recurse on this child */
  2232. X    }
  2233. X    /* free all nodes that were copied into tree */
  2234. X    for(np = child_list; np;){
  2235. X    oldnp = np;
  2236. X    np = np->next;
  2237. X    free_node(oldnp);
  2238. X    }
  2239. X}
  2240. X
  2241. X
  2242. X/*
  2243. X * Takes a list of the form:
  2244. X * { iso org(3) dod(6) 1 }
  2245. X * and creates several nodes, one for each parent-child pair.
  2246. X * Returns NULL on error.
  2247. X */
  2248. Xstatic int
  2249. Xgetoid(fp, oid,  length)
  2250. X    register FILE *fp;
  2251. X    register struct subid *oid;    /* an array of subids */
  2252. X    int length;        /* the length of the array */
  2253. X{
  2254. X    register int count;
  2255. X    int type;
  2256. X    char token[64], label[32];
  2257. X    register char *cp, *tp;
  2258. X
  2259. X    if ((type = get_token(fp, token)) != PUNCT){
  2260. X    if (type == -1)
  2261. X        print_error("Unexpected EOF", (char *)NULL);
  2262. X    else
  2263. X        print_error("Unexpected", token);
  2264. X    return NULL;
  2265. X    }
  2266. X    if (*token != '{'){
  2267. X    print_error("Unexpected", token);
  2268. X    return NULL;
  2269. X    }
  2270. X    for(count = 0; count < length; count++, oid++){
  2271. X    oid->label = 0;
  2272. X    oid->subid = -1;
  2273. X    if ((type = get_token(fp, token)) != LABEL){
  2274. X        if (type == -1){
  2275. X        print_error("Unexpected EOF", (char *)NULL);
  2276. X        return NULL;
  2277. X        }
  2278. X        else if (type == PUNCT && *token == '}'){
  2279. X        return count;
  2280. X        } else {
  2281. X        print_error("Unexpected", token);
  2282. X        return NULL;
  2283. X        }
  2284. X    }
  2285. X    tp = token;
  2286. X    if (!isdigit(*tp)){
  2287. X        /* this entry has a label */
  2288. X        cp = label;
  2289. X        while(*tp && *tp != '(')
  2290. X        *cp++ = *tp++;
  2291. X        *cp = 0;
  2292. X        cp = (char *)Malloc((unsigned)strlen(label));
  2293. X        strcpy(cp, label);
  2294. X        oid->label = cp;
  2295. X        if (*tp == '('){
  2296. X        /* this entry has a label-integer pair in the form label(integer). */
  2297. X        cp = ++tp;
  2298. X        while(*cp && *cp != ')')
  2299. X            cp++;
  2300. X        if (*cp == ')')
  2301. X            *cp = 0;
  2302. X        else {
  2303. X            print_error("No terminating parenthesis", (char *)NULL);
  2304. X            return NULL;
  2305. X        }
  2306. X        oid->subid = atoi(tp);
  2307. X        }
  2308. X    } else {
  2309. X        /* this entry  has just an integer sub-identifier */
  2310. X        oid->subid = atoi(tp);
  2311. X    }
  2312. X    }
  2313. X    return count;
  2314. X
  2315. X
  2316. X}
  2317. X
  2318. Xstatic
  2319. Xfree_node(np)
  2320. X    struct node *np;
  2321. X{
  2322. X    struct enum_list *ep, *tep;
  2323. X
  2324. X    ep = np->enums;
  2325. X    while(ep){
  2326. X    tep = ep;
  2327. X    ep = ep->next;
  2328. X    free((char *)tep);
  2329. X    }
  2330. X    free((char *)np);
  2331. X}
  2332. X
  2333. X/*
  2334. X * Parse an entry of the form:
  2335. X * label OBJECT IDENTIFIER ::= { parent 2 }
  2336. X * The "label OBJECT IDENTIFIER" portion has already been parsed.
  2337. X * Returns 0 on error.
  2338. X */
  2339. Xstatic struct node *
  2340. Xparse_objectid(fp, name)
  2341. X    FILE *fp;
  2342. X    char *name;
  2343. X{
  2344. X    int type;
  2345. X    char token[64];
  2346. X    register int count;
  2347. X    register struct subid *op, *nop;
  2348. X    int length;
  2349. X    struct subid oid[16];
  2350. X    struct node *np, *root, *oldnp = NULL;
  2351. X
  2352. X    type = get_token(fp, token);
  2353. X    if (type != EQUALS){
  2354. X    print_error("Bad format", token);
  2355. X    return 0;
  2356. X    }
  2357. X    if (length = getoid(fp, oid, 16)){
  2358. X    np = root = (struct node *)Malloc(sizeof(struct node));
  2359. X    /*
  2360. X     * For each parent-child subid pair in the subid array,
  2361. X     * create a node and link it into the node list.
  2362. X     */
  2363. X    for(count = 0, op = oid, nop=oid+1; count < (length - 2); count++,
  2364. X        op++, nop++){
  2365. X        /* every node must have parent's name and child's name or number */
  2366. X        if (op->label && (nop->label || (nop->subid != -1))){
  2367. X        strcpy(np->parent, op->label);
  2368. X        if (nop->label)
  2369. X            strcpy(np->label, nop->label);
  2370. X        if (nop->subid != -1)
  2371. X            np->subid = nop->subid;
  2372. X        np ->type = 0;
  2373. X        np->enums = 0;
  2374. X        /* set up next entry */
  2375. X        np->next = (struct node *)Malloc(sizeof(*np->next));
  2376. X        oldnp = np;
  2377. X        np = np->next;
  2378. X        }
  2379. X    }
  2380. X    np->next = (struct node *)NULL;
  2381. X    /*
  2382. X     * The above loop took care of all but the last pair.  This pair is taken
  2383. X     * care of here.  The name for this node is taken from the label for this
  2384. X     * entry.
  2385. X     * np still points to an unused entry.
  2386. X     */
  2387. X    if (count == (length - 2)){
  2388. X        if (op->label){
  2389. X        strcpy(np->parent, op->label);
  2390. X        strcpy(np->label, name);
  2391. X        if (nop->subid != -1)
  2392. X            np->subid = nop->subid;
  2393. X        else
  2394. X            print_error("Warning: This entry is pretty silly", token);
  2395. X        } else {
  2396. X        free_node(np);
  2397. X        if (oldnp)
  2398. X            oldnp->next = NULL;
  2399. X        else
  2400. X            return NULL;
  2401. X        }
  2402. X    } else {
  2403. X        print_error("Missing end of oid", (char *)NULL);
  2404. X        free_node(np);   /* the last node allocated wasn't used */
  2405. X        if (oldnp)
  2406. X        oldnp->next = NULL;
  2407. X        return NULL;
  2408. X    }
  2409. X    /* free the oid array */
  2410. X    for(count = 0, op = oid; count < length; count++, op++){
  2411. X        if (op->label)
  2412. X        free(oid->label);
  2413. X        op->label = 0;
  2414. X    }
  2415. X    return root;
  2416. X    } else {
  2417. X    print_error("Bad object identifier", (char *)NULL);
  2418. X    return 0;
  2419. X    }
  2420. X}
  2421. X
  2422. X/*
  2423. X * Parses an asn type.  This structure is ignored by this parser.
  2424. X * Returns NULL on error.
  2425. X */
  2426. Xstatic int
  2427. Xparse_asntype(fp)
  2428. X    FILE *fp;
  2429. X{
  2430. X    int type;
  2431. X    char token[64];
  2432. X
  2433. X    type = get_token(fp, token);
  2434. X    if (type != SEQUENCE){
  2435. X    print_error("Not a sequence", (char *)NULL); /* should we handle this */
  2436. X    return NULL;
  2437. X    }
  2438. X    while((type = get_token(fp, token)) != NULL){
  2439. X    if (type == -1)
  2440. X        return NULL;
  2441. X    if (type == PUNCT && (token[0] == '}' && token[1] == '\0'))
  2442. X        return -1;
  2443. X    }
  2444. X    print_error("Premature end of file", (char *)NULL);
  2445. X    return NULL;
  2446. X}
  2447. X
  2448. X/*
  2449. X * Parses an OBJECT TYPE macro.
  2450. X * Returns 0 on error.
  2451. X */
  2452. Xstatic struct node *
  2453. Xparse_objecttype(fp, name)
  2454. X    register FILE *fp;
  2455. X    char *name;
  2456. X{
  2457. X    register int type;
  2458. X    char token[64];
  2459. X    int count, length;
  2460. X    struct subid oid[16];
  2461. X    char syntax[32];
  2462. X    int nexttype;
  2463. X    char nexttoken[64];
  2464. X    register struct node *np;
  2465. X    register struct enum_list *ep;
  2466. X    register char *cp;
  2467. X    register char *tp;
  2468. X
  2469. X    type = get_token(fp, token);
  2470. X    if (type != SYNTAX){
  2471. X    print_error("Bad format for OBJECT TYPE", token);
  2472. X    return 0;
  2473. X    }
  2474. X    np = (struct node *)Malloc(sizeof(struct node));
  2475. X    np->next = 0;
  2476. X    np->enums = 0;
  2477. X    type = get_token(fp, token);
  2478. X    nexttype = get_token(fp, nexttoken);
  2479. X    np->type = type;
  2480. X    switch(type){
  2481. X    case SEQUENCE:
  2482. X        strcpy(syntax, token);
  2483. X        if (nexttype == OF){
  2484. X        strcat(syntax, " ");
  2485. X        strcat(syntax, nexttoken);
  2486. X        nexttype = get_token(fp, nexttoken);
  2487. X        strcat(syntax, " ");
  2488. X        strcat(syntax, nexttoken);
  2489. X        nexttype = get_token(fp, nexttoken);
  2490. X        }
  2491. X        break;
  2492. X    case INTEGER:
  2493. X        strcpy(syntax, token);
  2494. X        if (nexttype == PUNCT &&
  2495. X        (nexttoken[0] == '{' && nexttoken[1] == '\0')) {
  2496. X        /* if there is an enumeration list, parse it */
  2497. X        while((type = get_token(fp, token)) != NULL){
  2498. X            if (type == -1){
  2499. X            free_node(np);
  2500. X            return 0;
  2501. X            }
  2502. X            if (type == PUNCT &&
  2503. X            (token[0] == '}' && token[1] == '\0'))
  2504. X            break;
  2505. X            if (type == 1){
  2506. X            /* this is an enumerated label */
  2507. X            if (np->enums == 0){
  2508. X                ep = np->enums = (struct enum_list *)
  2509. X                    Malloc(sizeof(struct enum_list));
  2510. X            } else {
  2511. X                ep->next = (struct enum_list *)
  2512. X                    Malloc(sizeof(struct enum_list));
  2513. X                ep = ep->next;
  2514. X            }
  2515. X            ep->next = 0;
  2516. X            /* a reasonable approximation for the length */
  2517. X            ep->label = (char *)Malloc((unsigned)strlen(token));
  2518. X            cp = ep->label;
  2519. X            tp = token;
  2520. X            while(*tp != '(' && *tp != 0)
  2521. X                *cp++ = *tp++;
  2522. X            *cp = 0;
  2523. X            if (*tp == 0){
  2524. X                type = get_token(fp, token);
  2525. X                if (type != LABEL){
  2526. X                print_error("Expected \"(\"", (char *)NULL);
  2527. X                free_node(np);
  2528. X                return 0;
  2529. X                }
  2530. X                tp = token;
  2531. X            }
  2532. X            if (*tp == '('){
  2533. X                tp++;
  2534. X            } else {
  2535. X                print_error("Expected \"(\"", token);
  2536. X                free_node(np);
  2537. X                return 0;
  2538. X            }
  2539. X            if (*tp == 0){
  2540. X                type = get_token(fp, token);
  2541. X                if (type != LABEL){
  2542. X                print_error("Expected integer", token);
  2543. X                free_node(np);
  2544. X                return 0;
  2545. X                }
  2546. X                tp = token;
  2547. X            }
  2548. X
  2549. X            cp = tp;
  2550. X            if (!isdigit(*cp)){
  2551. X                print_error("Expected integer", token);
  2552. X                free_node(np);
  2553. X                return 0;
  2554. X            }
  2555. X            while(isdigit(*tp) && *tp != 0)
  2556. X                tp++;
  2557. X            if (*tp == ')')
  2558. X                *tp = '\0';    /* terminate number */
  2559. X            else if (*tp == 0){
  2560. X                type = get_token(fp, token);
  2561. X                if (type != LABEL || *token != ')'){
  2562. X                print_error("Expected \")\"", token);
  2563. X                free_node(np);
  2564. X                return 0;
  2565. X                }
  2566. X            } else {
  2567. X                print_error("Expected \")\"", token);
  2568. X                free_node(np);
  2569. X                return 0;
  2570. X            }
  2571. X            ep->value = atoi(cp);
  2572. X            }
  2573. X        }
  2574. X        if (type == NULL){
  2575. X            print_error("Premature end of file", (char *)NULL);
  2576. X            free_node(np);
  2577. X            return 0;
  2578. X        }
  2579. X        nexttype = get_token(fp, nexttoken);
  2580. X        } else if (nexttype == LABEL && *nexttoken == '('){
  2581. X        /* ignore the "constrained integer" for now */
  2582. X        nexttype = get_token(fp, nexttoken);
  2583. X        }
  2584. X        break;
  2585. X    case OBJID:
  2586. X    case OCTETSTR:
  2587. X    case NETADDR:
  2588. X    case IPADDR:
  2589. X    case COUNTER:
  2590. X    case GAUGE:
  2591. X    case TIMETICKS:
  2592. X    case OPAQUE:
  2593. X    case NUL:
  2594. X    case LABEL:
  2595. X        strcpy(syntax, token);
  2596. X        break;
  2597. X    default:
  2598. X        print_error("Bad syntax", token);
  2599. X        free_node(np);
  2600. X        return 0;
  2601. X    }
  2602. X    if (nexttype != ACCESS){
  2603. X    print_error("Should be ACCESS", nexttoken);
  2604. X    free_node(np);
  2605. X    return 0;
  2606. X    }
  2607. X    type = get_token(fp, token);
  2608. X    if (type != READONLY && type != READWRITE && type != WRITEONLY
  2609. X    && type != NOACCESS){
  2610. X    print_error("Bad access type", nexttoken);
  2611. X    free_node(np);
  2612. X    return 0;
  2613. X    }
  2614. X    type = get_token(fp, token);
  2615. X    if (type != STATUS){
  2616. X    print_error("Should be STATUS", token);
  2617. X    free_node(np);
  2618. X    return 0;
  2619. X    }
  2620. X    type = get_token(fp, token);
  2621. X    if (type != MANDATORY && type != OPTIONAL && type != OBSOLETE && type != RECOMMENDED){
  2622. X    print_error("Bad status", token);
  2623. X    free_node(np);
  2624. X    return 0;
  2625. X    }
  2626. X    type = get_token(fp, token);
  2627. X    if (type != EQUALS){
  2628. X    print_error("Bad format", token);
  2629. X    free_node(np);
  2630. X    return 0;
  2631. X    }
  2632. X    length = getoid(fp, oid, 16);
  2633. X    if (length > 1 && length <= 16){
  2634. X    /* just take the last pair in the oid list */
  2635. X    if (oid[length - 2].label)
  2636. X        strncpy(np->parent, oid[length - 2].label, 32);
  2637. X    strcpy(np->label, name);
  2638. X    if (oid[length - 1].subid != -1)
  2639. X        np->subid = oid[length - 1].subid;
  2640. X    else
  2641. X        print_error("Warning: This entry is pretty silly", (char *)NULL);
  2642. X    } else {
  2643. X    print_error("No end to oid", (char *)NULL);
  2644. X    free_node(np);
  2645. X    np = 0;
  2646. X    }
  2647. X    /* free oid array */
  2648. X    for(count = 0; count < length; count++){
  2649. X    if (oid[count].label)
  2650. X        free(oid[count].label);
  2651. X    oid[count].label = 0;
  2652. X    }
  2653. X    return np;
  2654. X}
  2655. X
  2656. X
  2657. X/*
  2658. X * Parses a mib file and returns a linked list of nodes found in the file.
  2659. X * Returns NULL on error.
  2660. X */
  2661. Xstatic struct node *
  2662. Xparse(fp)
  2663. X    FILE *fp;
  2664. X{
  2665. X    char token[64];
  2666. X    char name[32];
  2667. X    int    type = 1;
  2668. X    struct node *np, *root = NULL;
  2669. X
  2670. X    hash_init();
  2671. X
  2672. X    while(type != NULL){
  2673. X    type = get_token(fp, token);
  2674. X    if (type != LABEL){
  2675. X        if (type == NULL){
  2676. X        return root;
  2677. X        }
  2678. X        print_error(token, "is a reserved word");
  2679. X        return NULL;
  2680. X    }
  2681. X    strncpy(name, token, 32);
  2682. X    type = get_token(fp, token);
  2683. X    if (type == OBJTYPE){
  2684. X        if (root == NULL){
  2685. X        /* first link in chain */
  2686. X        np = root = parse_objecttype(fp, name);
  2687. X        if (np == NULL){
  2688. X            print_error("Bad parse of object type", (char *)NULL);
  2689. X            return NULL;
  2690. X        }
  2691. X        } else {
  2692. X        np->next = parse_objecttype(fp, name);
  2693. X        if (np->next == NULL){
  2694. X            print_error("Bad parse of objecttype", (char *)NULL);
  2695. X            return NULL;
  2696. X        }
  2697. X        }
  2698. X        /* now find end of chain */
  2699. X        while(np->next)
  2700. X        np = np->next;
  2701. X    } else if (type == OBJID){
  2702. X        if (root == NULL){
  2703. X        /* first link in chain */
  2704. X        np = root = parse_objectid(fp, name);
  2705. X        if (np == NULL){
  2706. X            print_error("Bad parse of object id", (char *)NULL);
  2707. X            return NULL;
  2708. X        }
  2709. X        } else {
  2710. X        np->next = parse_objectid(fp, name);
  2711. X        if (np->next == NULL){
  2712. X            print_error("Bad parse of object type", (char *)NULL);
  2713. X            return NULL;
  2714. X        }
  2715. X        }
  2716. X        /* now find end of chain */
  2717. X        while(np->next)
  2718. X        np = np->next;
  2719. X    } else if (type == EQUALS){
  2720. X        type = parse_asntype(fp);
  2721. X    } else if (type == NULL){
  2722. X        break;
  2723. X    } else {
  2724. X        print_error("Bad operator", (char *)NULL);
  2725. X        return NULL;
  2726. X    }
  2727. X    }
  2728. X#ifdef TEST
  2729. X{
  2730. X    struct enum_list *ep;
  2731. X    
  2732. X    for(np = root; np; np = np->next){
  2733. X    printf("%s ::= { %s %d } (%d)\n", np->label, np->parent, np->subid,
  2734. X        np->type);
  2735. X    if (np->enums){
  2736. X        printf("Enums: \n");
  2737. X        for(ep = np->enums; ep; ep = ep->next){
  2738. X        printf("%s(%d)\n", ep->label, ep->value);
  2739. X        }
  2740. X    }
  2741. X    }
  2742. X}
  2743. X#endif /* TEST */
  2744. X    return root;
  2745. X}
  2746. X
  2747. X/*
  2748. X * Parses a token from the file.  The type of the token parsed is returned,
  2749. X * and the text is placed in the string pointed to by token.
  2750. X */
  2751. Xstatic int
  2752. Xget_token(fp, token)
  2753. X    register FILE *fp;
  2754. X    register char *token;
  2755. X{
  2756. X    static char last = ' ';
  2757. X    register int ch;
  2758. X    register char *cp = token;
  2759. X    register int hash = 0;
  2760. X    register struct tok *tp;
  2761. X
  2762. X    *cp = 0;
  2763. X    ch = last;
  2764. X    /* skip all white space */
  2765. X    while(isspace(ch) && ch != -1){
  2766. X    ch = getc(fp);
  2767. X    if (ch == '\n')
  2768. X        Line++;
  2769. X    }
  2770. X    if (ch == -1)
  2771. X    return NULL;
  2772. X
  2773. X    /*
  2774. X     * Accumulate characters until white space is found.  Then attempt to match this
  2775. X     * token as a reserved word.  If a match is found, return the type.  Else it is
  2776. X     * a label.
  2777. X     */
  2778. X    do {
  2779. X    if (!isspace(ch)){
  2780. X        hash += ch;
  2781. X        *cp++ = ch;
  2782. X        if (ch == '\n')
  2783. X        Line++;
  2784. X    } else {
  2785. X        last = ch;
  2786. X        *cp = '\0';
  2787. X
  2788. X        for (tp = buckets[BUCKET(hash)]; tp; tp = tp->next) {
  2789. X        if ((tp->hash == hash) && (strcmp(tp->name, token) == 0))
  2790. X            break;
  2791. X        }
  2792. X        if (tp){
  2793. X        if (tp->token == CONTINUE)
  2794. X            continue;
  2795. X        return (tp->token);
  2796. X        }
  2797. X
  2798. X        if (token[0] == '-' && token[1] == '-'){
  2799. X        /* strip comment */
  2800. X        while ((ch = getc(fp)) != -1)
  2801. X            if (ch == '\n'){
  2802. X            Line++;
  2803. X            break;
  2804. X            }
  2805. X        if (ch == -1)
  2806. X            return NULL;
  2807. X        last = ch;
  2808. X        return get_token(fp, token);        
  2809. X        }
  2810. X        return LABEL;
  2811. X    }
  2812. X    
  2813. X    } while ((ch = getc(fp)) != -1);
  2814. X    return NULL;
  2815. X}
  2816. X
  2817. Xstruct tree *
  2818. Xread_mib(filename)
  2819. X    char *filename;
  2820. X{
  2821. X    FILE *fp;
  2822. X    struct node *nodes;
  2823. X    struct tree *tree;
  2824. X    struct node *parse();
  2825. X
  2826. X    fp = fopen(filename, "r");
  2827. X    if (fp == NULL)
  2828. X    return NULL;
  2829. X    nodes = parse(fp);
  2830. X    if (!nodes){
  2831. X    fprintf(stderr, "Mib table is bad.  Exiting\n");
  2832. X    exit(1);
  2833. X    }
  2834. X    tree = build_tree(nodes);
  2835. X    fclose(fp);
  2836. X    return tree;
  2837. X}
  2838. X
  2839. X
  2840. X#ifdef TEST
  2841. Xmain(argc, argv)
  2842. X    int argc;
  2843. X    char *argv[];
  2844. X{
  2845. X    FILE *fp;
  2846. X    struct node *nodes;
  2847. X    struct tree *tp;
  2848. X
  2849. X    fp = fopen("mib.txt", "r");
  2850. X    if (fp == NULL){
  2851. X    fprintf(stderr, "open failed\n");
  2852. X    return 1;
  2853. X    }
  2854. X    nodes = parse(fp);
  2855. X    tp = build_tree(nodes);
  2856. X    print_subtree(tp, 0);
  2857. X    fclose(fp);
  2858. X}
  2859. X
  2860. X#endif /* TEST */
  2861. END_OF_FILE
  2862.   if test 22322 -ne `wc -c <'nocol-3.0/src/cmu-snmp/snmplib/parse.c'`; then
  2863.     echo shar: \"'nocol-3.0/src/cmu-snmp/snmplib/parse.c'\" unpacked with wrong size!
  2864.   fi
  2865.   # end of 'nocol-3.0/src/cmu-snmp/snmplib/parse.c'
  2866. fi
  2867. if test -f 'nocol-3.0/src/support/multiping/multiping.h' -a "${1}" != "-c" ; then 
  2868.   echo shar: Will not clobber existing file \"'nocol-3.0/src/support/multiping/multiping.h'\"
  2869. else
  2870.   echo shar: Extracting \"'nocol-3.0/src/support/multiping/multiping.h'\" \(2826 characters\)
  2871.   sed "s/^X//" >'nocol-3.0/src/support/multiping/multiping.h' <<'END_OF_FILE'
  2872. X/*
  2873. X * multiping.h -- header file for multiping.c
  2874. X */
  2875. X
  2876. X#ifndef __PING_H__ /* __PING_H__ */
  2877. X#define __PING_H__ 
  2878. X
  2879. X#define    DEFDATALEN    (64 - 8)    /* default data length */
  2880. X#define    MAXIPLEN    60
  2881. X#define    MAXICMPLEN    76
  2882. X#define    MAXPACKET    (65536 - 60 - 8)/* max packet size */
  2883. X#define    MAXWAIT        10        /* max seconds to wait for response */
  2884. X#define    NROUTES        9        /* number of record route slots */
  2885. X
  2886. X/*
  2887. X * Macros for bitwise operations, for use in maintaining and
  2888. X * checking the duplicate table
  2889. X */
  2890. X#define    A(x, bit)    (dest[x]->rcvd_tbl[(bit)>>3]) /* idtfy byte in array */
  2891. X#define    B(bit)        (1 << ((bit) & 0x07))    /* identify bit in byte */
  2892. X#define    SET(x, bit)    (A((x), (bit)) |= B(bit))
  2893. X#define    CLR(x, bit)    (A((x), (bit)) &= (~B(bit)))
  2894. X#define    TST(x, bit)    (A((x), (bit)) & B(bit))
  2895. X
  2896. X/**************************************************************************
  2897. X This section no longer applies because I'm no longer using the upper 4
  2898. X bits to keep track of the index into the dest[] array.
  2899. X
  2900. X#define MAXREMOTE 16  * max # remote systems that can be pinged at once *
  2901. X#define WHERESHIFT 12 * # of bits to shift to extract dest. ID *
  2902. X#define WHEREFROM(x)  ((x) >> WHERESHIFT)
  2903. X#define SEQUENCE(dst) ((dest[dst]->ntransmitted++) | ((dst) << WHERESHIFT))
  2904. X  * gives next sequence number for destination dest *
  2905. X#define SEQMASK               (1 << WHERESHIFT)-1     * mask out dest. ID *
  2906. X***************************************************************************/
  2907. X
  2908. X
  2909. X/*
  2910. X * MAX_DUP_CHK is the number of bits in received table, i.e. the maximum
  2911. X * number of received sequence numbers we can keep track of.  Change 128
  2912. X * to 8192 for complete accuracy...
  2913. X *
  2914. X * MAXREMOTE is the max # of systems you can ping simultaneously.  This
  2915. X * number can actually be arbitrarily large but your system performance
  2916. X * will begin to suffer.  You will probably never ping anywhere close to
  2917. X * 128 sites simultaneously anyway.
  2918. X */
  2919. X#define    MAX_DUP_CHK    8192
  2920. X#define MAXREMOTE 256
  2921. X
  2922. X/*
  2923. X * Define a structure to keep track internally of the various remote sites
  2924. X */
  2925. Xtypedef struct destrec {     /* in earlier revisions, destrec.sockad was a */
  2926. X  struct sockaddr_in sockad; /* struct sockaddr, in case you have problems */
  2927. X  char *rcvd_tbl;
  2928. X  long nreceived,     /* # packets we got back */
  2929. X       nrepeats,     /* # packets duplicated */
  2930. X       ntransmitted,    /* # packets xmitted */
  2931. X       tmin,          /* minimum round-trip time */
  2932. X       tmax;        /* max RTT */
  2933. X  u_long tsum;        /* sum of all RTT's */
  2934. X  char hostname[MAXHOSTNAMELEN];
  2935. X} destrec;
  2936. X
  2937. X/*
  2938. X * Flags for the various command-line options
  2939. X */
  2940. X
  2941. X#define    F_FLOOD            0x0001
  2942. X#define    F_INTERVAL        0x0002
  2943. X#define    F_NUMERIC        0x0004
  2944. X#define    F_PINGFILLED        0x0008
  2945. X#define    F_QUIET            0x0010
  2946. X#define    F_RROUTE        0x0020
  2947. X#define    F_SO_DEBUG        0x0040
  2948. X#define    F_SO_DONTROUTE        0x0080
  2949. X#define    F_VERBOSE        0x0100
  2950. X#define F_TABULAR_OUTPUT    0x0200
  2951. X
  2952. X#endif /* __PING_H__ */
  2953. END_OF_FILE
  2954.   if test 2826 -ne `wc -c <'nocol-3.0/src/support/multiping/multiping.h'`; then
  2955.     echo shar: \"'nocol-3.0/src/support/multiping/multiping.h'\" unpacked with wrong size!
  2956.   fi
  2957.   # end of 'nocol-3.0/src/support/multiping/multiping.h'
  2958. fi
  2959. echo shar: End of archive 9 \(of 26\).
  2960. cp /dev/null ark9isdone
  2961. MISSING=""
  2962. for I in 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 ; do
  2963.     if test ! -f ark${I}isdone ; then
  2964.     MISSING="${MISSING} ${I}"
  2965.     fi
  2966. done
  2967. if test "${MISSING}" = "" ; then
  2968.     echo You have unpacked all 26 archives.
  2969.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  2970. else
  2971.     echo You still must unpack the following archives:
  2972.     echo "        " ${MISSING}
  2973. fi
  2974. exit 0
  2975. exit 0 # Just in case...
  2976.