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

  1. Newsgroups: comp.sources.misc
  2. From: vikas@jvnc.net (Vikas Aggarwal)
  3. Subject: v40i141:  nocol - Network Monitoring System, Part11/26
  4. Message-ID: <1993Nov23.035340.6556@sparky.sterling.com>
  5. X-Md4-Signature: 88261bb1cddafcb6a83b1291f411f7e4
  6. Sender: kent@sparky.sterling.com (Kent Landfield)
  7. Organization: Sterling Software
  8. Date: Tue, 23 Nov 1993 03:53:40 GMT
  9. Approved: kent@sparky.sterling.com
  10.  
  11. Submitted-by: vikas@jvnc.net (Vikas Aggarwal)
  12. Posting-number: Volume 40, Issue 141
  13. Archive-name: nocol/part11
  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.cmu
  21. #   nocol-3.0/src/cmu-snmp/snmplib/snmp_vars.c.kip
  22. #   nocol-3.0/src/include/noclogd.h
  23. # Wrapped by kent@sparky on Tue Nov  9 22:22:18 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 11 (of 26)."'
  27. if test -f 'nocol-3.0/src/cmu-snmp/mib.txt.cmu' -a "${1}" != "-c" ; then 
  28.   echo shar: Will not clobber existing file \"'nocol-3.0/src/cmu-snmp/mib.txt.cmu'\"
  29. else
  30.   echo shar: Extracting \"'nocol-3.0/src/cmu-snmp/mib.txt.cmu'\" \(37470 characters\)
  31.   sed "s/^X//" >'nocol-3.0/src/cmu-snmp/mib.txt.cmu' <<'END_OF_FILE'
  32. X          mgmt         OBJECT IDENTIFIER ::= { iso org(3) dod(6) internet(1) mgmt(2) }
  33. X                  mib        OBJECT IDENTIFIER ::= { mgmt 1 }
  34. X          directory  OBJECT IDENTIFIER ::= { internet 1 }
  35. X          experimental   OBJECT IDENTIFIER ::= { internet 3 }
  36. X          private    OBJECT IDENTIFIER ::= { internet 4 }
  37. X          enterprises OBJECT IDENTIFIER ::= { private 1 }
  38. X
  39. X                  system     OBJECT IDENTIFIER ::= { mib 1 }
  40. X                  interfaces OBJECT IDENTIFIER ::= { mib 2 }
  41. X                  at         OBJECT IDENTIFIER ::= { mib 3 }
  42. X                  ip         OBJECT IDENTIFIER ::= { mib 4 }
  43. X                  icmp       OBJECT IDENTIFIER ::= { mib 5 }
  44. X                  tcp        OBJECT IDENTIFIER ::= { mib 6 }
  45. X                  udp        OBJECT IDENTIFIER ::= { mib 7 }
  46. X                  egp        OBJECT IDENTIFIER ::= { mib 8 }
  47. X
  48. X                  -- object types
  49. X
  50. X                  -- the System group
  51. X
  52. X                  sysDescr OBJECT-TYPE
  53. X                          SYNTAX  OCTET STRING
  54. X                          ACCESS  read-only
  55. X                          STATUS  mandatory
  56. X                          ::= { system 1 }
  57. X
  58. X                  sysObjectID OBJECT-TYPE
  59. X                          SYNTAX  OBJECT IDENTIFIER
  60. X                          ACCESS  read-only
  61. X                          STATUS  mandatory
  62. X                          ::= { system 2 }
  63. X
  64. X                  sysUpTime OBJECT-TYPE
  65. X                          SYNTAX  TimeTicks
  66. X                          ACCESS  read-only
  67. X                          STATUS  mandatory
  68. X                          ::= { system 3 }
  69. X
  70. X                  -- the Interfaces group
  71. X
  72. X                  ifNumber OBJECT-TYPE
  73. X                          SYNTAX  INTEGER
  74. X                          ACCESS  read-only
  75. X                          STATUS  mandatory
  76. X                          ::= { interfaces 1 }
  77. X
  78. X                  -- the Interfaces table
  79. X
  80. X                  ifTable OBJECT-TYPE
  81. X                          SYNTAX  SEQUENCE OF IfEntry
  82. X                          ACCESS  read-write
  83. X                          STATUS  mandatory
  84. X                          ::= { interfaces 2 }
  85. X
  86. X                  ifEntry OBJECT-TYPE
  87. X                          SYNTAX  IfEntry
  88. X                          ACCESS  read-write
  89. X                          STATUS  mandatory
  90. X                          ::= { ifTable 1 }
  91. X
  92. X                  IfEntry ::= SEQUENCE {
  93. X                      ifIndex
  94. X                          INTEGER,
  95. X                      ifDescr
  96. X                          OCTET STRING,
  97. X                      ifType
  98. X                          INTEGER,
  99. X                      ifMtu
  100. X                          INTEGER,
  101. X                      ifSpeed
  102. X                          Gauge,
  103. X                      ifPhysAddress
  104. X                          OCTET STRING,
  105. X                      ifAdminStatus
  106. X                          INTEGER,
  107. X                      ifOperStatus
  108. X                          INTEGER,
  109. X                      ifLastChange
  110. X                          TimeTicks,
  111. X                      ifInOctets
  112. X                          Counter,
  113. X                      ifInUcastPkts
  114. X                          Counter,
  115. X                      ifInNUcastPkts
  116. X                          Counter,
  117. X                      ifInDiscards
  118. X                          Counter,
  119. X                      ifInErrors
  120. X                          Counter,
  121. X                      ifInUnknownProtos
  122. X                          Counter,
  123. X                      ifOutOctets
  124. X                          Counter,
  125. X                      ifOutUcastPkts
  126. X                          Counter,
  127. X                      ifOutNUcastPkts
  128. X                          Counter,
  129. X                      ifOutDiscards
  130. X                          Counter,
  131. X                      ifOutErrors
  132. X                          Counter,
  133. X                      ifOutQLen
  134. X                          Gauge
  135. X                  }
  136. X
  137. X                  ifIndex OBJECT-TYPE
  138. X                          SYNTAX  INTEGER
  139. X                          ACCESS  read-only
  140. X                          STATUS  mandatory
  141. X                          ::= { ifEntry 1 }
  142. X
  143. X                  ifDescr OBJECT-TYPE
  144. X                          SYNTAX  OCTET STRING
  145. X                          ACCESS  read-only
  146. X                          STATUS  mandatory
  147. X                          ::= { ifEntry 2 }
  148. X
  149. X                  ifType OBJECT-TYPE
  150. X                          SYNTAX  INTEGER {
  151. X                                  other(1),     -- none of the following
  152. X                                  regular1822(2),
  153. X                                  hdh1822(3),
  154. X                                  ddn-x25(4),
  155. X                                  rfc877-x25(5),
  156. X                                  ethernet-csmacd(6),
  157. X                                  iso88023-csmacd(7),
  158. X                                  iso88024-tokenBus(8),
  159. X                                  iso88025-tokenRing(9),
  160. X                                  iso88026-man(10),
  161. X                                  starLan(11),
  162. X                                  proteon-10MBit(12),
  163. X                                  proteon-80MBit(13),
  164. X                                  hyperchannel(14),
  165. X                                  fddi(15),
  166. X                                  lapb(16),
  167. X                                  sdlc(17),
  168. X                                  t1-carrier(18),
  169. X                                  cept(19),
  170. X                                  basicIsdn(20),
  171. X                                  primaryIsdn(21),
  172. X                                                   -- proprietary serial
  173. X                                  propPointToPointSerial(22)
  174. X                              }
  175. X                          ACCESS  read-only
  176. X                          STATUS  mandatory
  177. X                          ::= { ifEntry 3 }
  178. X
  179. X                  ifMtu OBJECT-TYPE
  180. X                          SYNTAX  INTEGER
  181. X                          ACCESS  read-only
  182. X                          STATUS  mandatory
  183. X                          ::= { ifEntry 4 }
  184. X
  185. X                  ifSpeed OBJECT-TYPE
  186. X                          SYNTAX  Gauge
  187. X                          ACCESS  read-only
  188. X                          STATUS  mandatory
  189. X                          ::= { ifEntry 5 }
  190. X
  191. X                  ifPhysAddress OBJECT-TYPE
  192. X                          SYNTAX  OCTET STRING
  193. X                          ACCESS  read-only
  194. X                          STATUS  mandatory
  195. X                          ::= { ifEntry 6 }
  196. X
  197. X                  ifAdminStatus OBJECT-TYPE
  198. X                          SYNTAX  INTEGER {
  199. X                                  up(1),        -- ready to pass packets
  200. X                                  down(2),
  201. X                                  testing(3)    -- in some test mode
  202. X                                  }
  203. X                          ACCESS  read-write
  204. X                          STATUS  mandatory
  205. X                          ::= { ifEntry 7 }
  206. X
  207. X                  ifOperStatus OBJECT-TYPE
  208. X                          SYNTAX  INTEGER {
  209. X                                  up(1),        -- ready to pass packets
  210. X                                  down(2),
  211. X                                  testing(3)    -- in some test mode
  212. X                                  }
  213. X                          ACCESS  read-only
  214. X                          STATUS  mandatory
  215. X                          ::= { ifEntry 8 }
  216. X
  217. X                  ifLastChange OBJECT-TYPE
  218. X                          SYNTAX  TimeTicks
  219. X                          ACCESS  read-only
  220. X                          STATUS  mandatory
  221. X                          ::= { ifEntry 9 }
  222. X
  223. X                  ifInOctets OBJECT-TYPE
  224. X                          SYNTAX  Counter
  225. X                          ACCESS  read-only
  226. X                          STATUS  mandatory
  227. X                          ::= { ifEntry 10 }
  228. X
  229. X                  ifInUcastPkts OBJECT-TYPE
  230. X                          SYNTAX  Counter
  231. X                          ACCESS  read-only
  232. X                          STATUS  mandatory
  233. X                          ::=  { ifEntry 11 }
  234. X
  235. X                  ifInNUcastPkts OBJECT-TYPE
  236. X                          SYNTAX  Counter
  237. X                          ACCESS  read-only
  238. X                          STATUS  mandatory
  239. X                          ::= { ifEntry 12 }
  240. X
  241. X                  ifInDiscards OBJECT-TYPE
  242. X                          SYNTAX  Counter
  243. X                          ACCESS  read-only
  244. X                          STATUS  mandatory
  245. X                          ::= { ifEntry 13 }
  246. X
  247. X                  ifInErrors OBJECT-TYPE
  248. X                          SYNTAX  Counter
  249. X                          ACCESS  read-only
  250. X                          STATUS  mandatory
  251. X                          ::= { ifEntry 14 }
  252. X
  253. X                  ifInUnknownProtos OBJECT-TYPE
  254. X                          SYNTAX  Counter
  255. X                          ACCESS  read-only
  256. X                          STATUS  mandatory
  257. X                          ::= { ifEntry 15 }
  258. X
  259. X                  ifOutOctets OBJECT-TYPE
  260. X                          SYNTAX  Counter
  261. X                          ACCESS  read-only
  262. X                          STATUS  mandatory
  263. X                          ::= { ifEntry 16 }
  264. X
  265. X                  ifOutUcastPkts OBJECT-TYPE
  266. X                          SYNTAX  Counter
  267. X                          ACCESS  read-only
  268. X                          STATUS  mandatory
  269. X                          ::= { ifEntry 17 }
  270. X
  271. X                  ifOutNUcastPkts OBJECT-TYPE
  272. X                          SYNTAX  Counter
  273. X                          ACCESS  read-only
  274. X                          STATUS  mandatory
  275. X                          ::= { ifEntry 18 }
  276. X
  277. X                  ifOutDiscards OBJECT-TYPE
  278. X                          SYNTAX  Counter
  279. X                          ACCESS  read-only
  280. X                          STATUS  mandatory
  281. X                          ::= { ifEntry 19 }
  282. X
  283. X                  ifOutErrors OBJECT-TYPE
  284. X                          SYNTAX  Counter
  285. X                          ACCESS  read-only
  286. X                          STATUS  mandatory
  287. X                          ::= { ifEntry 20 }
  288. X
  289. X                  ifOutQLen OBJECT-TYPE
  290. X                          SYNTAX  Gauge
  291. X                          ACCESS  read-only
  292. X                          STATUS  mandatory
  293. X                          ::= { ifEntry 21 }
  294. X
  295. X                  -- the Address Translation group
  296. X
  297. X                  atTable OBJECT-TYPE
  298. X                          SYNTAX  SEQUENCE OF AtEntry
  299. X                          ACCESS  read-write
  300. X                          STATUS  mandatory
  301. X                          ::= { at 1 }
  302. X
  303. X                  atEntry OBJECT-TYPE
  304. X                          SYNTAX  AtEntry
  305. X                          ACCESS  read-write
  306. X                          STATUS  mandatory
  307. X                          ::= { atTable 1 }
  308. X
  309. X                  AtEntry ::= SEQUENCE {
  310. X                      atIfIndex
  311. X                          INTEGER,
  312. X                      atPhysAddress
  313. X                          OCTET STRING,
  314. X                      atNetAddress
  315. X                          NetworkAddress
  316. X                  }
  317. X
  318. X                  atIfIndex OBJECT-TYPE
  319. X                          SYNTAX  INTEGER
  320. X                          ACCESS  read-write
  321. X                          STATUS  mandatory
  322. X                          ::= { atEntry 1 }
  323. X
  324. X                  atPhysAddress OBJECT-TYPE
  325. X                          SYNTAX  OCTET STRING
  326. X                          ACCESS  read-write
  327. X                          STATUS  mandatory
  328. X                          ::= { atEntry 2 }
  329. X
  330. X                  atNetAddress OBJECT-TYPE
  331. X                          SYNTAX  NetworkAddress
  332. X                          ACCESS  read-write
  333. X                          STATUS  mandatory
  334. X                          ::= { atEntry 3 }
  335. X
  336. X                  -- the IP group
  337. X
  338. X                  ipForwarding OBJECT-TYPE
  339. X                          SYNTAX  INTEGER {
  340. X                        gateway(1), -- entity forwards datagrams
  341. X                        host(2)     -- entity does NOT forward datagrams
  342. X                                  }
  343. X                          ACCESS  read-only
  344. X                          STATUS  mandatory
  345. X                          ::= { ip 1 }
  346. X
  347. X                  ipDefaultTTL OBJECT-TYPE
  348. X                          SYNTAX  INTEGER
  349. X                          ACCESS  read-write
  350. X                          STATUS  mandatory
  351. X                          ::= { ip 2 }
  352. X
  353. X                  ipInReceives OBJECT-TYPE
  354. X                          SYNTAX  Counter
  355. X                          ACCESS  read-only
  356. X                          STATUS  mandatory
  357. X                          ::= { ip 3 }
  358. X
  359. X                  ipInHdrErrors OBJECT-TYPE
  360. X                          SYNTAX  Counter
  361. X                          ACCESS  read-only
  362. X                          STATUS  mandatory
  363. X                          ::= { ip 4 }
  364. X
  365. X                  ipInAddrErrors OBJECT-TYPE
  366. X                          SYNTAX  Counter
  367. X                          ACCESS  read-only
  368. X                          STATUS  mandatory
  369. X                          ::= { ip 5 }
  370. X
  371. X                  ipForwDatagrams OBJECT-TYPE
  372. X                          SYNTAX  Counter
  373. X                          ACCESS  read-only
  374. X                          STATUS  mandatory
  375. X                          ::= { ip 6 }
  376. X
  377. X                  ipInUnknownProtos OBJECT-TYPE
  378. X                          SYNTAX  Counter
  379. X                          ACCESS  read-only
  380. X                          STATUS  mandatory
  381. X                          ::= { ip 7 }
  382. X
  383. X                  ipInDiscards OBJECT-TYPE
  384. X                          SYNTAX  Counter
  385. X                          ACCESS  read-only
  386. X                          STATUS  mandatory
  387. X                          ::= { ip 8 }
  388. X
  389. X                  ipInDelivers OBJECT-TYPE
  390. X                          SYNTAX  Counter
  391. X                          ACCESS  read-only
  392. X                          STATUS  mandatory
  393. X                          ::= { ip 9 }
  394. X
  395. X                  ipOutRequests OBJECT-TYPE
  396. X                          SYNTAX  Counter
  397. X                          ACCESS  read-only
  398. X                          STATUS  mandatory
  399. X                          ::= { ip 10 }
  400. X
  401. X                  ipOutDiscards OBJECT-TYPE
  402. X                          SYNTAX  Counter
  403. X                          ACCESS  read-only
  404. X                          STATUS  mandatory
  405. X                          ::= { ip 11 }
  406. X
  407. X                  ipOutNoRoutes OBJECT-TYPE
  408. X                          SYNTAX  Counter
  409. X                          ACCESS  read-only
  410. X                          STATUS  mandatory
  411. X                          ::= { ip 12 }
  412. X
  413. X                  ipReasmTimeout OBJECT-TYPE
  414. X                          SYNTAX  INTEGER
  415. X                          ACCESS  read-only
  416. X                          STATUS  mandatory
  417. X                          ::= { ip 13 }
  418. X
  419. X                  ipReasmReqds OBJECT-TYPE
  420. X                          SYNTAX  Counter
  421. X                          ACCESS  read-only
  422. X                          STATUS  mandatory
  423. X                          ::= { ip 14 }
  424. X
  425. X                  ipReasmOKs OBJECT-TYPE
  426. X                          SYNTAX  Counter
  427. X                          ACCESS  read-only
  428. X                          STATUS  mandatory
  429. X                          ::= { ip 15 }
  430. X
  431. X                  ipReasmFails OBJECT-TYPE
  432. X                          SYNTAX  Counter
  433. X                          ACCESS  read-only
  434. X                          STATUS  mandatory
  435. X                          ::= { ip 16 }
  436. X
  437. X                  ipFragOKs OBJECT-TYPE
  438. X                          SYNTAX  Counter
  439. X                          ACCESS  read-only
  440. X                          STATUS  mandatory
  441. X                          ::= { ip 17 }
  442. X
  443. X                  ipFragFails OBJECT-TYPE
  444. X                          SYNTAX  Counter
  445. X                          ACCESS  read-only
  446. X                          STATUS  mandatory
  447. X                          ::= { ip 18 }
  448. X
  449. X                  ipFragCreates OBJECT-TYPE
  450. X                          SYNTAX  Counter
  451. X                          ACCESS  read-only
  452. X                          STATUS  mandatory
  453. X                          ::= { ip 19 }
  454. X
  455. X                  -- the IP Interface table
  456. X
  457. X                  ipAddrTable OBJECT-TYPE
  458. X                          SYNTAX  SEQUENCE OF IpAddrEntry
  459. X                          ACCESS  read-only
  460. X                          STATUS  mandatory
  461. X                          ::= { ip 20 }
  462. X
  463. X                  ipAddrEntry OBJECT-TYPE
  464. X                          SYNTAX  IpAddrEntry
  465. X                          ACCESS  read-only
  466. X                          STATUS  mandatory
  467. X                          ::= { ipAddrTable 1 }
  468. X
  469. X                  IpAddrEntry ::= SEQUENCE {
  470. X                      ipAdEntAddr
  471. X                          IpAddress,
  472. X                      ipAdEntIfIndex
  473. X                          INTEGER,
  474. X                      ipAdEntNetMask
  475. X                          IpAddress,
  476. X                      ipAdEntBcastAddr
  477. X                          INTEGER
  478. X                  }
  479. X
  480. X                  ipAdEntAddr OBJECT-TYPE
  481. X                          SYNTAX  IpAddress
  482. X                          ACCESS  read-only
  483. X                          STATUS  mandatory
  484. X                          ::=  { ipAddrEntry 1 }
  485. X
  486. X                  ipAdEntIfIndex OBJECT-TYPE
  487. X                          SYNTAX  INTEGER
  488. X                          ACCESS  read-only
  489. X                          STATUS  mandatory
  490. X                          ::=  { ipAddrEntry 2 }
  491. X
  492. X                  ipAdEntNetMask OBJECT-TYPE
  493. X                          SYNTAX  IpAddress
  494. X                          ACCESS  read-only
  495. X                          STATUS  mandatory
  496. X                          ::=  { ipAddrEntry 3 }
  497. X
  498. X                  ipAdEntBcastAddr OBJECT-TYPE
  499. X                          SYNTAX  INTEGER
  500. X                          ACCESS  read-only
  501. X                          STATUS  mandatory
  502. X                          ::= { ipAddrEntry 4 }
  503. X
  504. X                  -- the IP Routing table
  505. X
  506. X                  ipRoutingTable OBJECT-TYPE
  507. X                          SYNTAX  SEQUENCE OF IpRouteEntry
  508. X                          ACCESS  read-write
  509. X                          STATUS  mandatory
  510. X                          ::= { ip 21 }
  511. X
  512. X                  ipRouteEntry OBJECT-TYPE
  513. X                          SYNTAX  IpRouteEntry
  514. X                          ACCESS  read-write
  515. X                          STATUS  mandatory
  516. X                          ::= { ipRoutingTable 1 }
  517. X
  518. X                  IpRouteEntry ::= SEQUENCE {
  519. X                      ipRouteDest
  520. X                          IpAddress,
  521. X                      ipRouteIfIndex
  522. X                          INTEGER,
  523. X                      ipRouteMetric1
  524. X                          INTEGER,
  525. X                      ipRouteMetric2
  526. X                          INTEGER,
  527. X                      ipRouteMetric3
  528. X                          INTEGER,
  529. X                      ipRouteMetric4
  530. X                          INTEGER,
  531. X                      ipRouteNextHop
  532. X                          IpAddress,
  533. X                      ipRouteType
  534. X                          INTEGER,
  535. X                      ipRouteProto
  536. X                          INTEGER,
  537. X                      ipRouteAge
  538. X                          INTEGER
  539. X                  }
  540. X
  541. X                  ipRouteDest OBJECT-TYPE
  542. X                          SYNTAX  IpAddress
  543. X                          ACCESS  read-write
  544. X                          STATUS  mandatory
  545. X                          ::= { ipRouteEntry 1 }
  546. X
  547. X                  ipRouteIfIndex  OBJECT-TYPE
  548. X                          SYNTAX  INTEGER
  549. X                          ACCESS  read-write
  550. X                          STATUS  mandatory
  551. X                          ::= { ipRouteEntry 2 }
  552. X
  553. X                  ipRouteMetric1 OBJECT-TYPE
  554. X
  555. X                          SYNTAX  INTEGER
  556. X                          ACCESS  read-write
  557. X                          STATUS  mandatory
  558. X                          ::= { ipRouteEntry 3 }
  559. X
  560. X                  ipRouteMetric2 OBJECT-TYPE
  561. X                          SYNTAX  INTEGER
  562. X                          ACCESS  read-write
  563. X                          STATUS  mandatory
  564. X                          ::= { ipRouteEntry 4 }
  565. X
  566. X                  ipRouteMetric3 OBJECT-TYPE
  567. X                          SYNTAX  INTEGER
  568. X                          ACCESS  read-write
  569. X                          STATUS  mandatory
  570. X                          ::= { ipRouteEntry 5 }
  571. X
  572. X                  ipRouteMetric4 OBJECT-TYPE
  573. X                          SYNTAX  INTEGER
  574. X                          ACCESS  read-write
  575. X                          STATUS  mandatory
  576. X                          ::= { ipRouteEntry 6 }
  577. X
  578. X                  ipRouteNextHop OBJECT-TYPE
  579. X                          SYNTAX  IpAddress
  580. X                          ACCESS  read-write
  581. X                          STATUS  mandatory
  582. X                          ::= { ipRouteEntry 7 }
  583. X
  584. X                  ipRouteType OBJECT-TYPE
  585. X                          SYNTAX  INTEGER {
  586. X                            other(1),      -- none of the following
  587. X
  588. X                            invalid(2),    -- an invalidated route
  589. X
  590. X                                           -- route to directly
  591. X                            direct(3),     -- connected (sub-)network
  592. X
  593. X                                           -- route to a non-local
  594. X                            remote(4),     -- host/network/sub-network
  595. X                              }
  596. X                          ACCESS  read-write
  597. X                          STATUS  mandatory
  598. X                          ::= { ipRouteEntry 8 }
  599. X
  600. X                  ipRouteProto OBJECT-TYPE
  601. X                          SYNTAX  INTEGER {
  602. X                            other(1),     -- none of the following
  603. X
  604. X                                          -- non-protocol information
  605. X                                          --   e.g., manually
  606. X                            local(2),     --   configured entries
  607. X
  608. X                                          -- set via a network
  609. X                            netmgmt(3),   --   management protocol
  610. X
  611. X                                          -- obtained via ICMP,
  612. X                            icmp(4),      --   e.g., Redirect
  613. X
  614. X                                          -- the following are
  615. X                                          -- gateway routing protocols
  616. X                            egp(5),
  617. X                            ggp(6),
  618. X                            hello(7),
  619. X                            rip(8),
  620. X                            is-is(9),
  621. X                            es-is(10),
  622. X                            ciscoIgrp(11),
  623. X                            bbnSpfIgp(12),
  624. X                            oigp(13)
  625. X                              }
  626. X                          ACCESS  read-only
  627. X                          STATUS  mandatory
  628. X                          ::= { ipRouteEntry 9 }
  629. X
  630. X                  ipRouteAge OBJECT-TYPE
  631. X                          SYNTAX  INTEGER
  632. X                          ACCESS  read-write
  633. X                          STATUS  mandatory
  634. X                          ::= { ipRouteEntry 10 }
  635. X
  636. X                  -- the ICMP group
  637. X
  638. X                  icmpInMsgs OBJECT-TYPE
  639. X                          SYNTAX  Counter
  640. X                          ACCESS  read-only
  641. X                          STATUS  mandatory
  642. X                          ::= { icmp 1 }
  643. X
  644. X                  icmpInErrors OBJECT-TYPE
  645. X                          SYNTAX  Counter
  646. X                          ACCESS  read-only
  647. X                          STATUS  mandatory
  648. X                          ::= { icmp 2 }
  649. X
  650. X                  icmpInDestUnreachs OBJECT-TYPE
  651. X                          SYNTAX  Counter
  652. X
  653. X                          ACCESS  read-only
  654. X                          STATUS  mandatory
  655. X                          ::= { icmp 3 }
  656. X
  657. X                  icmpInTimeExcds OBJECT-TYPE
  658. X                          SYNTAX  Counter
  659. X                          ACCESS  read-only
  660. X                          STATUS  mandatory
  661. X                          ::= { icmp 4 }
  662. X
  663. X                  icmpInParmProbs OBJECT-TYPE
  664. X                          SYNTAX  Counter
  665. X                          ACCESS  read-only
  666. X                          STATUS  mandatory
  667. X                          ::= { icmp 5 }
  668. X
  669. X                  icmpInSrcQuenchs OBJECT-TYPE
  670. X                          SYNTAX  Counter
  671. X                          ACCESS  read-only
  672. X                          STATUS  mandatory
  673. X                          ::= { icmp 6 }
  674. X
  675. X                  icmpInRedirects OBJECT-TYPE
  676. X                          SYNTAX  Counter
  677. X                          ACCESS  read-only
  678. X                          STATUS  mandatory
  679. X                          ::= { icmp 7 }
  680. X
  681. X                  icmpInEchos OBJECT-TYPE
  682. X                          SYNTAX  Counter
  683. X                          ACCESS  read-only
  684. X                          STATUS  mandatory
  685. X                          ::= { icmp 8 }
  686. X
  687. X                  icmpInEchoReps OBJECT-TYPE
  688. X                          SYNTAX  Counter
  689. X                          ACCESS  read-only
  690. X                          STATUS  mandatory
  691. X                          ::= { icmp 9 }
  692. X
  693. X                  icmpInTimestamps OBJECT-TYPE
  694. X                          SYNTAX  Counter
  695. X                          ACCESS  read-only
  696. X                          STATUS  mandatory
  697. X                          ::= { icmp 10 }
  698. X
  699. X                  icmpInTimestampReps OBJECT-TYPE
  700. X                          SYNTAX  Counter
  701. X                          ACCESS  read-only
  702. X                          STATUS  mandatory
  703. X                          ::= { icmp 11 }
  704. X
  705. X                  icmpInAddrMasks OBJECT-TYPE
  706. X                          SYNTAX  Counter
  707. X                          ACCESS  read-only
  708. X                          STATUS  mandatory
  709. X                          ::= { icmp 12 }
  710. X
  711. X                  icmpInAddrMaskReps OBJECT-TYPE
  712. X                          SYNTAX  Counter
  713. X                          ACCESS  read-only
  714. X                          STATUS  mandatory
  715. X                          ::= { icmp 13 }
  716. X
  717. X                  icmpOutMsgs OBJECT-TYPE
  718. X                          SYNTAX  Counter
  719. X                          ACCESS  read-only
  720. X                          STATUS  mandatory
  721. X                          ::= { icmp 14 }
  722. X
  723. X                  icmpOutErrors OBJECT-TYPE
  724. X                          SYNTAX  Counter
  725. X                          ACCESS  read-only
  726. X                          STATUS  mandatory
  727. X                          ::= { icmp 15 }
  728. X
  729. X                  icmpOutDestUnreachs OBJECT-TYPE
  730. X                          SYNTAX  Counter
  731. X                          ACCESS  read-only
  732. X                          STATUS  mandatory
  733. X                          ::= { icmp 16 }
  734. X
  735. X                  icmpOutTimeExcds OBJECT-TYPE
  736. X                          SYNTAX  Counter
  737. X                          ACCESS  read-only
  738. X                          STATUS  mandatory
  739. X                          ::= { icmp 17 }
  740. X
  741. X                  icmpOutParmProbs OBJECT-TYPE
  742. X                          SYNTAX  Counter
  743. X                          ACCESS  read-only
  744. X                          STATUS  mandatory
  745. X                          ::= { icmp 18 }
  746. X
  747. X                  icmpOutSrcQuenchs OBJECT-TYPE
  748. X                          SYNTAX  Counter
  749. X                          ACCESS  read-only
  750. X                          STATUS  mandatory
  751. X                          ::= { icmp 19 }
  752. X
  753. X                  icmpOutRedirects OBJECT-TYPE
  754. X                          SYNTAX  Counter
  755. X                          ACCESS  read-only
  756. X                          STATUS  mandatory
  757. X                          ::= { icmp 20 }
  758. X
  759. X                  icmpOutEchos OBJECT-TYPE
  760. X                          SYNTAX  Counter
  761. X                          ACCESS  read-only
  762. X                          STATUS  mandatory
  763. X                          ::= { icmp 21 }
  764. X
  765. X                  icmpOutEchoReps OBJECT-TYPE
  766. X                          SYNTAX  Counter
  767. X                          ACCESS  read-only
  768. X                          STATUS  mandatory
  769. X                          ::= { icmp 22 }
  770. X
  771. X                  icmpOutTimestamps OBJECT-TYPE
  772. X                          SYNTAX  Counter
  773. X                          ACCESS  read-only
  774. X                          STATUS  mandatory
  775. X                          ::= { icmp 23 }
  776. X
  777. X                  icmpOutTimestampReps OBJECT-TYPE
  778. X                          SYNTAX  Counter
  779. X                          ACCESS  read-only
  780. X                          STATUS  mandatory
  781. X                          ::= { icmp 24 }
  782. X
  783. X                  icmpOutAddrMasks OBJECT-TYPE
  784. X                          SYNTAX  Counter
  785. X                          ACCESS  read-only
  786. X                          STATUS  mandatory
  787. X                          ::= { icmp 25 }
  788. X
  789. X                  icmpOutAddrMaskReps OBJECT-TYPE
  790. X                          SYNTAX  Counter
  791. X                          ACCESS  read-only
  792. X                          STATUS  mandatory
  793. X                          ::= { icmp 26 }
  794. X
  795. X                  -- the TCP group
  796. X
  797. X                  tcpRtoAlgorithm OBJECT-TYPE
  798. X                          SYNTAX  INTEGER {
  799. X                          other(1),    -- none of the following
  800. X                          constant(2), -- a constant rto
  801. X                          rsre(3),     -- MIL-STD-1778, Appendix B
  802. X                          vanj(4)      -- Van Jacobson's algorithm [11]
  803. X                                  }
  804. X                          ACCESS  read-only
  805. X                          STATUS  mandatory
  806. X                          ::= { tcp 1 }
  807. X
  808. X                  tcpRtoMin OBJECT-TYPE
  809. X                          SYNTAX  INTEGER
  810. X                          ACCESS  read-only
  811. X                          STATUS  mandatory
  812. X                          ::= { tcp 2 }
  813. X
  814. X                  tcpRtoMax OBJECT-TYPE
  815. X                          SYNTAX  INTEGER
  816. X                          ACCESS  read-only
  817. X                          STATUS  mandatory
  818. X                          ::= { tcp 3 }
  819. X
  820. X                  tcpMaxConn OBJECT-TYPE
  821. X                          SYNTAX  INTEGER
  822. X                          ACCESS  read-only
  823. X                          STATUS  mandatory
  824. X                          ::= { tcp 4 }
  825. X
  826. X                  tcpActiveOpens OBJECT-TYPE
  827. X                          SYNTAX  Counter
  828. X                          ACCESS  read-only
  829. X                          STATUS  mandatory
  830. X                          ::= { tcp 5 }
  831. X
  832. X                  tcpPassiveOpens OBJECT-TYPE
  833. X                          SYNTAX  Counter
  834. X                          ACCESS  read-only
  835. X                          STATUS  mandatory
  836. X                          ::= { tcp 6 }
  837. X
  838. X                  tcpAttemptFails OBJECT-TYPE
  839. X                          SYNTAX  Counter
  840. X                          ACCESS  read-only
  841. X                          STATUS  mandatory
  842. X                          ::= { tcp 7 }
  843. X
  844. X                  tcpEstabResets OBJECT-TYPE
  845. X                          SYNTAX  Counter
  846. X                          ACCESS  read-only
  847. X                          STATUS  mandatory
  848. X                          ::= { tcp 8 }
  849. X
  850. X                  tcpCurrEstab OBJECT-TYPE
  851. X                          SYNTAX  Gauge
  852. X                          ACCESS  read-only
  853. X                          STATUS  mandatory
  854. X                          ::= { tcp 9 }
  855. X
  856. X                  tcpInSegs OBJECT-TYPE
  857. X                          SYNTAX  Counter
  858. X                          ACCESS  read-only
  859. X                          STATUS  mandatory
  860. X                          ::= { tcp 10 }
  861. X
  862. X                  tcpOutSegs OBJECT-TYPE
  863. X                          SYNTAX  Counter
  864. X                          ACCESS  read-only
  865. X                          STATUS  mandatory
  866. X                          ::= { tcp 11 }
  867. X
  868. X                  tcpRetransSegs OBJECT-TYPE
  869. X                          SYNTAX  Counter
  870. X                          ACCESS  read-only
  871. X                          STATUS  mandatory
  872. X                          ::= { tcp 12 }
  873. X
  874. X                  -- the TCP connections table
  875. X
  876. X                  tcpConnTable OBJECT-TYPE
  877. X                          SYNTAX  SEQUENCE OF TcpConnEntry
  878. X                          ACCESS  read-only
  879. X                          STATUS  mandatory
  880. X                          ::= { tcp 13 }
  881. X
  882. X                  tcpConnEntry OBJECT-TYPE
  883. X                          SYNTAX  TcpConnEntry
  884. X                          ACCESS  read-only
  885. X                          STATUS  mandatory
  886. X                          ::= { tcpConnTable 1 }
  887. X
  888. X                  TcpConnEntry ::= SEQUENCE {
  889. X                      tcpConnState
  890. X                          INTEGER,
  891. X                      tcpConnLocalAddress
  892. X                          IpAddress,
  893. X                      tcpConnLocalPort
  894. X                          INTEGER (0..65535),
  895. X                      tcpConnRemAddress
  896. X                          IpAddress,
  897. X                      tcpConnRemPort
  898. X                          INTEGER (0..65535)
  899. X                  }
  900. X
  901. X                  tcpConnState OBJECT-TYPE
  902. X                          SYNTAX  INTEGER {
  903. X                                      closed(1),
  904. X                                      listen(2),
  905. X                                      synSent(3),
  906. X                                      synReceived(4),
  907. X                                      established(5),
  908. X                                      finWait1(6),
  909. X                                      finWait2(7),
  910. X                                      closeWait(8),
  911. X                                      lastAck(9),
  912. X                                      closing(10),
  913. X                                      timeWait(11)
  914. X                                  }
  915. X                          ACCESS  read-only
  916. X                          STATUS  mandatory
  917. X                          ::= { tcpConnEntry 1 }
  918. X
  919. X                  tcpConnLocalAddress OBJECT-TYPE
  920. X                          SYNTAX  IpAddress
  921. X                          ACCESS  read-only
  922. X                          STATUS  mandatory
  923. X                          ::= { tcpConnEntry 2 }
  924. X
  925. X                  tcpConnLocalPort OBJECT-TYPE
  926. X                          SYNTAX  INTEGER (0..65535)
  927. X                          ACCESS  read-only
  928. X                          STATUS  mandatory
  929. X                          ::= { tcpConnEntry 3 }
  930. X
  931. X                  tcpConnRemAddress OBJECT-TYPE
  932. X                          SYNTAX  IpAddress
  933. X                          ACCESS  read-only
  934. X                          STATUS  mandatory
  935. X                          ::= { tcpConnEntry 4 }
  936. X
  937. X                  tcpConnRemPort OBJECT-TYPE
  938. X                          SYNTAX  INTEGER (0..65535)
  939. X                          ACCESS  read-only
  940. X                          STATUS  mandatory
  941. X                          ::= { tcpConnEntry 5 }
  942. X
  943. X                  -- the UDP group
  944. X
  945. X                  udpInDatagrams OBJECT-TYPE
  946. X                          SYNTAX  Counter
  947. X                          ACCESS  read-only
  948. X                          STATUS  mandatory
  949. X                          ::= { udp 1 }
  950. X
  951. X                  udpNoPorts OBJECT-TYPE
  952. X                          SYNTAX  Counter
  953. X                          ACCESS  read-only
  954. X                          STATUS  mandatory
  955. X                          ::= { udp 2 }
  956. X
  957. X                  udpInErrors OBJECT-TYPE
  958. X                          SYNTAX  Counter
  959. X                          ACCESS  read-only
  960. X                          STATUS  mandatory
  961. X                          ::= { udp 3 }
  962. X
  963. X                  udpOutDatagrams OBJECT-TYPE
  964. X                          SYNTAX  Counter
  965. X                          ACCESS  read-only
  966. X                          STATUS  mandatory
  967. X                          ::= { udp 4 }
  968. X
  969. X                  -- the EGP group
  970. X
  971. X                  egpInMsgs OBJECT-TYPE
  972. X                          SYNTAX  Counter
  973. X                          ACCESS  read-only
  974. X                          STATUS  mandatory
  975. X                          ::= { egp 1 }
  976. X
  977. X                  egpInErrors OBJECT-TYPE
  978. X                          SYNTAX  Counter
  979. X                          ACCESS  read-only
  980. X                          STATUS  mandatory
  981. X                          ::= { egp 2 }
  982. X
  983. X                  egpOutMsgs OBJECT-TYPE
  984. X                          SYNTAX  Counter
  985. X                          ACCESS  read-only
  986. X                          STATUS  mandatory
  987. X                          ::= { egp 3 }
  988. X
  989. X                  egpOutErrors OBJECT-TYPE
  990. X                          SYNTAX  Counter
  991. X                          ACCESS  read-only
  992. X                          STATUS  mandatory
  993. X                          ::= { egp 4 }
  994. X
  995. X                  -- the EGP Neighbor table
  996. X
  997. X                  egpNeighTable OBJECT-TYPE
  998. X                          SYNTAX  SEQUENCE OF EgpNeighEntry
  999. X                          ACCESS  read-only
  1000. X                          STATUS  mandatory
  1001. X                          ::= { egp 5 }
  1002. X
  1003. X                  egpNeighEntry OBJECT-TYPE
  1004. X                          SYNTAX  EgpNeighEntry
  1005. X                          ACCESS  read-only
  1006. X                          STATUS  mandatory
  1007. X                          ::= { egpNeighTable 1 }
  1008. X
  1009. X                  EgpNeighEntry ::= SEQUENCE {
  1010. X                      egpNeighState
  1011. X                          INTEGER,
  1012. X                      egpNeighAddr
  1013. X                          IpAddress
  1014. X                  }
  1015. X
  1016. X                  egpNeighState OBJECT-TYPE
  1017. X                          SYNTAX  INTEGER {
  1018. X                                      idle(1),
  1019. X                                      acquisition(2),
  1020. X                                      down(3),
  1021. X                                      up(4),
  1022. X                                      cease(5)
  1023. X                                  }
  1024. X                          ACCESS  read-only
  1025. X                          STATUS  mandatory
  1026. X                          ::= { egpNeighEntry 1 }
  1027. X
  1028. X                  egpNeighAddr OBJECT-TYPE
  1029. X                          SYNTAX  IpAddress
  1030. X                          ACCESS  read-only
  1031. X                          STATUS  mandatory
  1032. X                          ::= { egpNeighEntry 2 }
  1033. X
  1034. X          cmu OBJECT IDENTIFIER ::= { enterprises 3 }
  1035. X          systems OBJECT IDENTIFIER ::= { cmu 1 }
  1036. X          mibs OBJECT IDENTIFIER ::= { cmu 2 }
  1037. X          cmuSNMP OBJECT IDENTIFIER ::= { systems 1 }
  1038. X          cmuKip OBJECT IDENTIFIER ::= { systems 2 }
  1039. X          cmuRouter OBJECT IDENTIFIER ::= { systems 3 }
  1040. END_OF_FILE
  1041.   if test 37470 -ne `wc -c <'nocol-3.0/src/cmu-snmp/mib.txt.cmu'`; then
  1042.     echo shar: \"'nocol-3.0/src/cmu-snmp/mib.txt.cmu'\" unpacked with wrong size!
  1043.   fi
  1044.   # end of 'nocol-3.0/src/cmu-snmp/mib.txt.cmu'
  1045. fi
  1046. if test -f 'nocol-3.0/src/cmu-snmp/snmplib/snmp_vars.c.kip' -a "${1}" != "-c" ; then 
  1047.   echo shar: Will not clobber existing file \"'nocol-3.0/src/cmu-snmp/snmplib/snmp_vars.c.kip'\"
  1048. else
  1049.   echo shar: Extracting \"'nocol-3.0/src/cmu-snmp/snmplib/snmp_vars.c.kip'\" \(33903 characters\)
  1050.   sed "s/^X//" >'nocol-3.0/src/cmu-snmp/snmplib/snmp_vars.c.kip' <<'END_OF_FILE'
  1051. X/*
  1052. X * snmp_vars.c - return a pointer to the named variable.
  1053. X *
  1054. X *
  1055. X */
  1056. X/***********************************************************
  1057. X    Copyright 1988, 1989 by Carnegie Mellon University
  1058. X
  1059. X                      All Rights Reserved
  1060. X
  1061. XPermission to use, copy, modify, and distribute this software and its 
  1062. Xdocumentation for any purpose and without fee is hereby granted, 
  1063. Xprovided that the above copyright notice appear in all copies and that
  1064. Xboth that copyright notice and this permission notice appear in 
  1065. Xsupporting documentation, and that the name of CMU not be
  1066. Xused in advertising or publicity pertaining to distribution of the
  1067. Xsoftware without specific, written prior permission.  
  1068. X
  1069. XCMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  1070. XALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
  1071. XCMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
  1072. XANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  1073. XWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
  1074. XARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  1075. XSOFTWARE.
  1076. X******************************************************************/
  1077. X#ifdef KINETICS
  1078. X#include "gw.h"
  1079. X#include "fp4/pbuf.h"
  1080. X#include "fp4/cmdmacro.h"
  1081. X#include "ab.h"
  1082. X#include "glob.h"
  1083. X#endif
  1084. X
  1085. X#if (defined(unix) && !defined(KINETICS))
  1086. X#include <sys/types.h>
  1087. X#include <netinet/in.h>
  1088. X#ifndef NULL
  1089. X#define NULL 0
  1090. X#endif
  1091. X#endif
  1092. X
  1093. X
  1094. X#include "asn1.h"
  1095. X#include "snmp.h"
  1096. X#include "snmp_impl.h"
  1097. X#include "mib.h"
  1098. X#include "inet.h"
  1099. X#include "snmp_vars.h"
  1100. X/*
  1101. X *    Each variable name is placed in the variable table, without the terminating
  1102. X * substring that determines the instance of the variable.  When a string is found that
  1103. X * is lexicographicly preceded by the input string, the function for that entry is
  1104. X * called to find the method of access of the instance of the named variable.  If
  1105. X * that variable is not found, NULL is returned, and the search through the table
  1106. X * continues (it should stop at the next entry).  If it is found, the function returns
  1107. X * a character pointer and a length or a function pointer.  The former is the address
  1108. X * of the operand, the latter is an access routine for the variable.
  1109. X *
  1110. X * u_char *
  1111. X * findVar(name, length, exact, var_len, access_method)
  1112. X * oid        *name;        IN/OUT - input name requested, output name found
  1113. X * int        length;        IN/OUT - number of sub-ids in the in and out oid's
  1114. X * int        exact;        IN - TRUE if an exact match was requested.
  1115. X * int        len;        OUT - length of variable or 0 if function returned.
  1116. X * int        access_method; OUT - 1 if function, 0 if char pointer.
  1117. X *
  1118. X * accessVar(rw, var, varLen)
  1119. X * int        rw;        IN - request to READ or WRITE the variable
  1120. X * u_char   *var;   IN/OUT - input or output buffer space
  1121. X * int        *varLen;IN/OUT - input and output buffer len
  1122. X */
  1123. X
  1124. Xstruct variable {
  1125. X    oid            name[16];        /* object identifier of variable */
  1126. X    u_char        namelen;        /* length of above */
  1127. X    char        type;        /* type of variable, INTEGER or (octet) STRING */
  1128. X    u_char        magic;        /* passed to function as a hint */
  1129. X    u_short        acl;        /* access control list for variable */
  1130. X    u_char        *(*findVar)();  /* function that finds variable */
  1131. X};
  1132. X
  1133. Xchar        version_descr[30] = "Kinetics FastPath4";
  1134. Xoid        version_id[] = {1, 3, 6, 1, 4, 1, 3, 1, 1};
  1135. Xint        version_id_len = sizeof(version_id);
  1136. Xu_long        uptime;
  1137. Xlong        cfg_nnets = MAX_INTERFACES;
  1138. Xlong        long_return;
  1139. Xu_char        return_buf[64];
  1140. X
  1141. X
  1142. Xstruct mib_ifEntry  mib_ifEntry_proto[MAX_INTERFACES] = {
  1143. X    {1, "Kinetics KFPS2 Ethernet", MIB_IFTYPE_ETHERNETCSMACD, 
  1144. X        1500, 10000000L, "", 
  1145. X    6, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 
  1146. X    {2, "Kinetics KFPS2 Appletalk", MIB_IFTYPE_OTHER,
  1147. X        1500, 230000L, "", 
  1148. X    3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
  1149. X};
  1150. Xstruct mib_ifEntry mib_ifEntry[MAX_INTERFACES];
  1151. X
  1152. Xstruct mib_ip mib_ip_proto = {
  1153. X    1, IPFRAGTTL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  1154. X};
  1155. Xstruct mib_ip mib_ip;
  1156. X
  1157. X#define ROUTE_DEFAULT    0
  1158. X#define ROUTE_LOCAL    1
  1159. Xstruct mib_ipRouteEntry mib_ipRouteEntry_proto[2] = {
  1160. X    {0, 1, 1, -1, -1, -1, 0, MIB_IPROUTETYPE_REMOTE, MIB_IPROUTEPROTO_LOCAL, 0},    /* default route */
  1161. X    {0, 1, 0, -1, -1, -1, 0, MIB_IPROUTETYPE_DIRECT, MIB_IPROUTEPROTO_LOCAL, 0}        /* local route */
  1162. X};
  1163. Xstruct mib_ipRouteEntry mib_ipRouteEntry[2];
  1164. X
  1165. Xstruct mib_udp mib_udp_proto = {
  1166. X    0, 0, 0, 0
  1167. X};
  1168. Xstruct mib_udp mib_udp;
  1169. X
  1170. Xlong    mib_icmpInMsgs;
  1171. Xlong    mib_icmpOutMsgs;
  1172. Xlong    mib_icmpInErrors;    /* not checked in KIP */
  1173. Xlong    mib_icmpOutErrors;    /* not checked in KIP */
  1174. Xlong    mib_icmpInCount[ICMP_MAXTYPE + 1];
  1175. Xlong    mib_icmpOutCount[ICMP_MAXTYPE + 1];
  1176. X
  1177. X
  1178. Xinit_snmp(){
  1179. X    bcopy((char *)mib_ifEntry_proto, (char *)mib_ifEntry, sizeof(mib_ifEntry));
  1180. X    bcopy((char *)&mib_ip_proto, (char *)&mib_ip, sizeof(mib_ip));
  1181. X    bcopy((char *)mib_ipRouteEntry_proto, (char *)mib_ipRouteEntry, sizeof(mib_ipRouteEntry));
  1182. X    bcopy((char *)&mib_udp_proto, (char *)&mib_udp, sizeof(mib_udp));
  1183. X}
  1184. X
  1185. X/*
  1186. X * These are byte offsets into their structures.
  1187. X * This really should be computed by the compiler, but the
  1188. X * compiler I'm using doesn't want to do this.
  1189. X */
  1190. X#define VERSION_DESCR    0
  1191. X#define VERSION_ID    32
  1192. X#define CFG_NNETS    48
  1193. X#define UPTIME        52
  1194. X
  1195. X#define IFINDEX        0
  1196. X#define IFDESCR        4
  1197. X#define IFTYPE        36
  1198. X#define IFMTU        40
  1199. X#define IFSPEED        44
  1200. X#define IFPHYSADDRESS    48
  1201. X#define IFADMINSTATUS    60
  1202. X#define IFOPERSTATUS    64
  1203. X#define IFLASTCHANGE    68
  1204. X#define IFINOCTETS    72
  1205. X#define IFINUCASTPKTS    76
  1206. X#define    IFINNUCASTPKTS    80
  1207. X#define    IFINDISCARDS    84
  1208. X#define    IFINERRORS    88
  1209. X#define    IFINUNKNOWNPROTOS   92
  1210. X#define    IFOUTOCTETS    96
  1211. X#define    IFOUTUCASTPKTS    100
  1212. X#define    IFOUTNUCASTPKTS    104
  1213. X#define    IFOUTDISCARDS    108
  1214. X#define    IFOUTERRORS    112
  1215. X#define    IFOUTQLEN    116
  1216. X
  1217. X#define ATIFINDEX    0
  1218. X#define ATPHYSADDRESS    4
  1219. X#define ATNETADDRESS    16
  1220. X
  1221. X#define IPFORWARDING    0
  1222. X#define IPDEFAULTTTL    4
  1223. X#define IPINRECEIVES    8
  1224. X#define IPINHDRERRORS    12
  1225. X#define IPINADDRERRORS    16
  1226. X#define IPFORWDATAGRAMS    20
  1227. X#define IPINUNKNOWNPROTOS   24
  1228. X#define IPINDISCARDS    28
  1229. X#define IPINDELIVERS    32
  1230. X#define IPOUTREQUESTS    36
  1231. X#define IPOUTDISCARDS    40
  1232. X#define IPOUTNOROUTES    44
  1233. X#define IPREASMTIMEOUT    48
  1234. X#define IPREASMREQDS    52
  1235. X#define IPREASMOKS    56
  1236. X#define IPREASMFAILS    60
  1237. X#define IPFRAGOKS    64
  1238. X#define IPFRAGFAILS    68
  1239. X#define IPFRAGCREATES    72
  1240. X
  1241. X#define IPADADDR    0
  1242. X#define IPADIFINDEX    4
  1243. X#define IPADNETMASK    8
  1244. X#define IPADBCASTADDR    12
  1245. X
  1246. X#define IPROUTEDEST    0
  1247. X#define IPROUTEIFINDEX    4
  1248. X#define IPROUTEMETRIC1    8
  1249. X#define IPROUTEMETRIC2    12
  1250. X#define IPROUTEMETRIC3    16
  1251. X#define IPROUTEMETRIC4    20
  1252. X#define IPROUTENEXTHOP    24
  1253. X#define IPROUTETYPE    28
  1254. X#define IPROUTEPROTO    32
  1255. X#define IPROUTEAGE    36
  1256. X
  1257. X#define    ICMPINMSGS        0
  1258. X#define    ICMPINERRORS        4
  1259. X#define    ICMPINDESTUNREACHS  8
  1260. X#define    ICMPINTIMEEXCDS        12
  1261. X#define    ICMPINPARMPROBS        16
  1262. X#define    ICMPINSRCQUENCHS    20
  1263. X#define    ICMPINREDIRECTS        24
  1264. X#define    ICMPINECHOS        28
  1265. X#define    ICMPINECHOREPS        32
  1266. X#define    ICMPINTIMESTAMPS    36
  1267. X#define    ICMPINTIMESTAMPREPS 40
  1268. X#define    ICMPINADDRMASKS        44
  1269. X#define    ICMPINADDRMASKREPS  48
  1270. X#define    ICMPOUTMSGS        52
  1271. X#define    ICMPOUTERRORS        56
  1272. X#define    ICMPOUTDESTUNREACHS 60
  1273. X#define    ICMPOUTTIMEEXCDS    64
  1274. X#define    ICMPOUTPARMPROBS    68
  1275. X#define    ICMPOUTSRCQUENCHS   72
  1276. X#define    ICMPOUTREDIRECTS    76
  1277. X#define    ICMPOUTECHOS        80
  1278. X#define    ICMPOUTECHOREPS        84
  1279. X#define    ICMPOUTTIMESTAMPS   88
  1280. X#define    ICMPOUTTIMESTAMPREPS    92
  1281. X#define    ICMPOUTADDRMASKS    96
  1282. X#define    ICMPOUTADDRMASKREPS 100
  1283. X
  1284. X#define UDPINDATAGRAMS        0
  1285. X#define UDPNOPORTS        4
  1286. X#define    UDPINERRORS        8
  1287. X#define UDPOUTDATAGRAMS        12
  1288. X
  1289. Xstruct variable        variables[] = {
  1290. X    /* these must be lexicographly ordered by the name field */
  1291. X    {{MIB, 1, 1, 0},        9, STRING,  VERSION_DESCR, RONLY, var_system },
  1292. X    {{MIB, 1, 2, 0},        9, OBJID,   VERSION_ID, RONLY, var_system },
  1293. X    {{MIB, 1, 3, 0},        9, TIMETICKS, UPTIME, RONLY, var_system },
  1294. X    {{MIB, 2, 1, 0},        9, INTEGER, CFG_NNETS, RONLY, var_system },
  1295. X    {{MIB, 2, 2, 1, 1, 0xFF},  11, INTEGER, IFINDEX, RONLY, var_ifEntry },
  1296. X    {{MIB, 2, 2, 1, 2, 0xFF},  11, STRING,  IFDESCR, RONLY, var_ifEntry },
  1297. X    {{MIB, 2, 2, 1, 3, 0xFF},  11, INTEGER, IFTYPE, RONLY, var_ifEntry },
  1298. X    {{MIB, 2, 2, 1, 4, 0xFF},  11, INTEGER, IFMTU, RONLY, var_ifEntry },
  1299. X    {{MIB, 2, 2, 1, 5, 0xFF},  11, GAUGE,   IFSPEED, RONLY, var_ifEntry },
  1300. X    {{MIB, 2, 2, 1, 6, 0xFF},  11, STRING,  IFPHYSADDRESS, RONLY, var_ifEntry },
  1301. X    {{MIB, 2, 2, 1, 7, 0xFF},  11, INTEGER, IFADMINSTATUS, RWRITE, var_ifEntry },
  1302. X    {{MIB, 2, 2, 1, 8, 0xFF},  11, INTEGER, IFOPERSTATUS, RONLY, var_ifEntry },
  1303. X    {{MIB, 2, 2, 1, 9, 0xFF},  11, TIMETICKS, IFLASTCHANGE, RONLY, var_ifEntry },
  1304. X    {{MIB, 2, 2, 1, 10, 0xFF}, 11, COUNTER, IFINOCTETS, RONLY, var_ifEntry },
  1305. X    {{MIB, 2, 2, 1, 11, 0xFF}, 11, COUNTER, IFINUCASTPKTS, RONLY, var_ifEntry },
  1306. X    {{MIB, 2, 2, 1, 12, 0xFF}, 11, COUNTER, IFINNUCASTPKTS, RONLY, var_ifEntry },
  1307. X    {{MIB, 2, 2, 1, 13, 0xFF}, 11, COUNTER, IFINDISCARDS, RONLY, var_ifEntry },
  1308. X    {{MIB, 2, 2, 1, 14, 0xFF}, 11, COUNTER, IFINERRORS, RONLY, var_ifEntry },
  1309. X    {{MIB, 2, 2, 1, 15, 0xFF}, 11, COUNTER, IFINUNKNOWNPROTOS, RONLY, var_ifEntry },
  1310. X    {{MIB, 2, 2, 1, 16, 0xFF}, 11, COUNTER, IFOUTOCTETS, RONLY, var_ifEntry },
  1311. X    {{MIB, 2, 2, 1, 17, 0xFF}, 11, COUNTER, IFOUTUCASTPKTS, RONLY, var_ifEntry },
  1312. X    {{MIB, 2, 2, 1, 18, 0xFF}, 11, COUNTER, IFOUTNUCASTPKTS, RONLY, var_ifEntry },
  1313. X    {{MIB, 2, 2, 1, 19, 0xFF}, 11, COUNTER, IFOUTDISCARDS, RONLY, var_ifEntry },
  1314. X    {{MIB, 2, 2, 1, 20, 0xFF}, 11, COUNTER, IFOUTERRORS, RONLY, var_ifEntry },
  1315. X    {{MIB, 2, 2, 1, 21, 0xFF}, 11, GAUGE,   IFOUTQLEN, RONLY, var_ifEntry },
  1316. X    {{MIB, 3, 1, 1, 1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, 16, INTEGER,    ATIFINDEX, RWRITE, var_atEntry }, 
  1317. X    {{MIB, 3, 1, 1, 2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, 16, STRING,        ATPHYSADDRESS, RWRITE, var_atEntry }, 
  1318. X    {{MIB, 3, 1, 1, 3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, 16, IPADDRESS,  ATNETADDRESS, RWRITE, var_atEntry },
  1319. X    {{MIB, 4, 1, 0},        9, INTEGER, IPFORWARDING, RONLY, var_ip },
  1320. X    {{MIB, 4, 2, 0},        9, INTEGER, IPDEFAULTTTL, RWRITE, var_ip },
  1321. X    {{MIB, 4, 3, 0},        9, COUNTER, IPINRECEIVES, RONLY, var_ip },
  1322. X    {{MIB, 4, 4, 0},        9, COUNTER, IPINHDRERRORS, RONLY, var_ip },
  1323. X    {{MIB, 4, 5, 0},        9, COUNTER, IPINADDRERRORS, RONLY, var_ip },
  1324. X    {{MIB, 4, 6, 0},        9, COUNTER, IPFORWDATAGRAMS, RONLY, var_ip },
  1325. X    {{MIB, 4, 7, 0},        9, COUNTER, IPINUNKNOWNPROTOS, RONLY, var_ip },
  1326. X    {{MIB, 4, 8, 0},        9, COUNTER, IPINDISCARDS, RONLY, var_ip },
  1327. X    {{MIB, 4, 9, 0},        9, COUNTER, IPINDELIVERS, RONLY, var_ip },
  1328. X    {{MIB, 4, 10, 0},        9, COUNTER, IPOUTREQUESTS, RONLY, var_ip },
  1329. X    {{MIB, 4, 11, 0},        9, COUNTER, IPOUTDISCARDS, RONLY, var_ip },
  1330. X    {{MIB, 4, 12, 0},        9, COUNTER, IPOUTNOROUTES, RONLY, var_ip },
  1331. X    {{MIB, 4, 13, 0},        9, INTEGER, IPREASMTIMEOUT, RONLY, var_ip },
  1332. X    {{MIB, 4, 14, 0},        9, COUNTER, IPREASMREQDS, RONLY, var_ip },
  1333. X    {{MIB, 4, 15, 0},        9, COUNTER, IPREASMOKS, RONLY, var_ip },
  1334. X    {{MIB, 4, 16, 0},        9, COUNTER, IPREASMFAILS, RONLY, var_ip },
  1335. X    {{MIB, 4, 17, 0},        9, COUNTER, IPFRAGOKS, RONLY, var_ip },
  1336. X    {{MIB, 4, 18, 0},        9, COUNTER, IPFRAGFAILS, RONLY, var_ip },
  1337. X    {{MIB, 4, 19, 0},        9, COUNTER, IPFRAGCREATES, RONLY, var_ip },
  1338. X    {{MIB, 4, 20, 1, 1, 0xFF, 0xFF, 0xFF, 0xFF}, 14, IPADDRESS, IPADADDR, RONLY, var_ipAddrEntry },
  1339. X    {{MIB, 4, 20, 1, 2, 0xFF, 0xFF, 0xFF, 0xFF}, 14, INTEGER,    IPADIFINDEX, RONLY, var_ipAddrEntry },
  1340. X    {{MIB, 4, 20, 1, 3, 0xFF, 0xFF, 0xFF, 0xFF}, 14, IPADDRESS, IPADNETMASK, RONLY, var_ipAddrEntry },
  1341. X    {{MIB, 4, 20, 1, 4, 0xFF, 0xFF, 0xFF, 0xFF}, 14, INTEGER,    IPADBCASTADDR, RONLY, var_ipAddrEntry },
  1342. X    {{MIB, 4, 21, 1, 1, 0xFF, 0xFF, 0xFF, 0xFF}, 14, IPADDRESS, IPROUTEDEST, RWRITE, var_ipRouteEntry },
  1343. X    {{MIB, 4, 21, 1, 2, 0xFF, 0xFF, 0xFF, 0xFF}, 14, INTEGER,    IPROUTEIFINDEX, RWRITE, var_ipRouteEntry },
  1344. X    {{MIB, 4, 21, 1, 3, 0xFF, 0xFF, 0xFF, 0xFF}, 14, INTEGER,    IPROUTEMETRIC1, RWRITE, var_ipRouteEntry },
  1345. X    {{MIB, 4, 21, 1, 4, 0xFF, 0xFF, 0xFF, 0xFF}, 14, INTEGER,    IPROUTEMETRIC2, RWRITE, var_ipRouteEntry },
  1346. X    {{MIB, 4, 21, 1, 5, 0xFF, 0xFF, 0xFF, 0xFF}, 14, INTEGER,    IPROUTEMETRIC3, RWRITE, var_ipRouteEntry },
  1347. X    {{MIB, 4, 21, 1, 6, 0xFF, 0xFF, 0xFF, 0xFF}, 14, INTEGER,    IPROUTEMETRIC4, RWRITE, var_ipRouteEntry },
  1348. X    {{MIB, 4, 21, 1, 7, 0xFF, 0xFF, 0xFF, 0xFF}, 14, IPADDRESS, IPROUTENEXTHOP, RWRITE, var_ipRouteEntry },
  1349. X    {{MIB, 4, 21, 1, 8, 0xFF, 0xFF, 0xFF, 0xFF}, 14, INTEGER,    IPROUTETYPE, RWRITE, var_ipRouteEntry },
  1350. X    {{MIB, 4, 21, 1, 9, 0xFF, 0xFF, 0xFF, 0xFF}, 14, INTEGER,    IPROUTEPROTO, RONLY, var_ipRouteEntry },
  1351. X    {{MIB, 4, 21, 1, 10, 0xFF, 0xFF, 0xFF, 0xFF}, 14, INTEGER,    IPROUTEAGE, RWRITE, var_ipRouteEntry },
  1352. X    {{MIB, 5, 1, 0},        9, COUNTER, ICMPINMSGS, RONLY, var_icmp },
  1353. X    {{MIB, 5, 2, 0},        9, COUNTER, ICMPINERRORS, RONLY, var_icmp },
  1354. X    {{MIB, 5, 3, 0},        9, COUNTER, ICMPINDESTUNREACHS, RONLY, var_icmp },
  1355. X    {{MIB, 5, 4, 0},        9, COUNTER, ICMPINTIMEEXCDS, RONLY, var_icmp },
  1356. X    {{MIB, 5, 5, 0},        9, COUNTER, ICMPINPARMPROBS, RONLY, var_icmp },
  1357. X    {{MIB, 5, 6, 0},        9, COUNTER, ICMPINSRCQUENCHS, RONLY, var_icmp },
  1358. X    {{MIB, 5, 7, 0},        9, COUNTER, ICMPINREDIRECTS, RONLY, var_icmp },
  1359. X    {{MIB, 5, 8, 0},        9, COUNTER, ICMPINECHOS, RONLY, var_icmp },
  1360. X    {{MIB, 5, 9, 0},        9, COUNTER, ICMPINECHOREPS, RONLY, var_icmp },
  1361. X    {{MIB, 5, 10, 0},        9, COUNTER, ICMPINTIMESTAMPS, RONLY, var_icmp },
  1362. X    {{MIB, 5, 11, 0},        9, COUNTER, ICMPINTIMESTAMPREPS, RONLY, var_icmp },
  1363. X    {{MIB, 5, 12, 0},        9, COUNTER, ICMPINADDRMASKS, RONLY, var_icmp },
  1364. X    {{MIB, 5, 13, 0},        9, COUNTER, ICMPINADDRMASKREPS, RONLY, var_icmp },
  1365. X    {{MIB, 5, 14, 0},        9, COUNTER, ICMPOUTMSGS, RONLY, var_icmp },
  1366. X    {{MIB, 5, 15, 0},        9, COUNTER, ICMPOUTERRORS, RONLY, var_icmp },
  1367. X    {{MIB, 5, 16, 0},        9, COUNTER, ICMPOUTDESTUNREACHS, RONLY, var_icmp },
  1368. X    {{MIB, 5, 17, 0},        9, COUNTER, ICMPOUTTIMEEXCDS, RONLY, var_icmp },
  1369. X    {{MIB, 5, 18, 0},        9, COUNTER, ICMPOUTPARMPROBS, RONLY, var_icmp },
  1370. X    {{MIB, 5, 19, 0},        9, COUNTER, ICMPOUTSRCQUENCHS, RONLY, var_icmp },
  1371. X    {{MIB, 5, 20, 0},        9, COUNTER, ICMPOUTREDIRECTS, RONLY, var_icmp },
  1372. X    {{MIB, 5, 21, 0},        9, COUNTER, ICMPOUTECHOS, RONLY, var_icmp },
  1373. X    {{MIB, 5, 22, 0},        9, COUNTER, ICMPOUTECHOREPS, RONLY, var_icmp },
  1374. X    {{MIB, 5, 23, 0},        9, COUNTER, ICMPOUTTIMESTAMPS, RONLY, var_icmp },
  1375. X    {{MIB, 5, 24, 0},        9, COUNTER, ICMPOUTTIMESTAMPREPS, RONLY, var_icmp },
  1376. X    {{MIB, 5, 25, 0},        9, COUNTER, ICMPOUTADDRMASKS, RONLY, var_icmp },
  1377. X    {{MIB, 5, 26, 0},        9, COUNTER, ICMPOUTADDRMASKREPS, RONLY, var_icmp },
  1378. X    {{MIB, 7, 1, 0},        9, COUNTER, UDPINDATAGRAMS, RONLY, var_udp }, 
  1379. X    {{MIB, 7, 2, 0},        9, COUNTER, UDPNOPORTS, RONLY, var_udp },
  1380. X    {{MIB, 7, 3, 0},        9, COUNTER, UDPINERRORS, RONLY, var_udp }, 
  1381. X    {{MIB, 7, 4, 0},        9, COUNTER, UDPOUTDATAGRAMS, RONLY, var_udp }
  1382. X};
  1383. X
  1384. X
  1385. X
  1386. X
  1387. X/*
  1388. X * getStatPtr - return a pointer to the named variable, as well as it's
  1389. X * type, length, and access control list.
  1390. X *
  1391. X * If an exact match for the variable name exists, it is returned.  If not,
  1392. X * and exact is false, the next variable lexicographically after the
  1393. X * requested one is returned.
  1394. X *
  1395. X * If no appropriate variable can be found, NULL is returned.
  1396. X */
  1397. Xu_char  *
  1398. XgetStatPtr(name, namelen, type, len, acl, exact, access_method)
  1399. X    oid        *name;        /* IN - name of var, OUT - name matched */
  1400. X    int        *namelen;   /* IN -number of sub-ids in name, OUT - subid-is in matched name */
  1401. X    u_char    *type;        /* OUT - type of matched variable */
  1402. X    int        *len;        /* OUT - length of matched variable */
  1403. X    u_short    *acl;        /* OUT - access control list */
  1404. X    int        exact;        /* IN - TRUE if exact match wanted */
  1405. X    int        *access_method; /* OUT - 1 if function, 0 if char * */
  1406. X{
  1407. X
  1408. X    register struct variable    *vp;
  1409. X
  1410. X    register int    x;
  1411. X    register u_char    *access;
  1412. X    int            result;
  1413. X
  1414. X    for(x = 0, vp = variables; x < sizeof(variables)/sizeof(struct variable); vp++, x++){
  1415. X    /*
  1416. X     * compare should be expanded inline.
  1417. X     */
  1418. X    result = compare(name, *namelen, vp->name, (int)vp->namelen);
  1419. X    if ((result < 0) || (exact && (result == 0))){
  1420. X        access = (*(vp->findVar))(vp, name, namelen, exact, len, access_method);
  1421. X        if (access != NULL)
  1422. X        break;
  1423. X    }
  1424. X    }
  1425. X    if (x == sizeof(variables)/sizeof(struct variable))
  1426. X    return NULL;
  1427. X
  1428. X    /* vp now points to the approprate struct */
  1429. X    *type = vp->type;
  1430. X    *acl = vp->acl;
  1431. X    return access;
  1432. X}
  1433. X
  1434. X
  1435. X
  1436. Xint
  1437. Xcompare(name1, len1, name2, len2)
  1438. X    register oid        *name1, *name2;
  1439. X    register int        len1, len2;
  1440. X{
  1441. X    register int    len;
  1442. X
  1443. X    /* len = minimum of len1 and len2 */
  1444. X    if (len1 < len2)
  1445. X    len = len1;
  1446. X    else
  1447. X    len = len2;
  1448. X    /* find first non-matching byte */
  1449. X    while(len-- > 0){
  1450. X    if (*name1 < *name2)
  1451. X        return -1;
  1452. X    if (*name2++ < *name1++)
  1453. X        return 1;
  1454. X    }
  1455. X    /* bytes match up to length of shorter string */
  1456. X    if (len1 < len2)
  1457. X    return -1;  /* name1 shorter, so it is "less" */
  1458. X    if (len2 < len1)
  1459. X    return 1;
  1460. X    return 0;    /* both strings are equal */
  1461. X}
  1462. X
  1463. X
  1464. Xu_char *
  1465. Xvar_system(vp, name, length, exact, var_len, access_method)
  1466. X    register struct variable *vp;   /* IN - pointer to variable entry that points here */
  1467. X    register oid    *name;        /* IN/OUT - input name requested, output name found */
  1468. X    register int    *length;    /* IN/OUT - length of input and output oid's */
  1469. X    int            exact;        /* IN - TRUE if an exact match was requested. */
  1470. X    int            *var_len;   /* OUT - length of variable or 0 if function returned. */
  1471. X    int            *access_method;    /* OUT - 1 if function, 0 if char pointer. */
  1472. X{
  1473. X    if (exact && (compare(name, *length, vp->name, (int)vp->namelen) != 0))
  1474. X    return NULL;
  1475. X    bcopy((char *)vp->name, (char *)name, (int)vp->namelen * sizeof(oid));
  1476. X    *length = vp->namelen;
  1477. X    *access_method = 0;
  1478. X    *var_len = sizeof(long);    /* default length */
  1479. X    switch (vp->magic){
  1480. X    case VERSION_DESCR:
  1481. X        *var_len = strlen(version_descr);
  1482. X        return (u_char *)version_descr;
  1483. X    case VERSION_ID:
  1484. X        *var_len = sizeof(version_id);
  1485. X        return (u_char *)version_id;
  1486. X    case CFG_NNETS:
  1487. X        return (u_char *)&cfg_nnets;
  1488. X    case UPTIME:
  1489. X        return (u_char *)&uptime;
  1490. X    default:
  1491. X        ERROR("");
  1492. X    }
  1493. X    return NULL;
  1494. X}
  1495. X
  1496. X
  1497. Xu_char *
  1498. Xvar_ifEntry(vp, name, length, exact, var_len, access_method)
  1499. X    register struct variable *vp;   /* IN - pointer to variable entry that points here */
  1500. X    register oid    *name;        /* IN/OUT - input name requested, output name found */
  1501. X    register int    *length;    /* IN/OUT - length of input and output oid's */
  1502. X    int            exact;        /* IN - TRUE if an exact match was requested. */
  1503. X    int            *var_len;   /* OUT - length of variable or 0 if function returned. */
  1504. X    int            *access_method; /* OUT - 1 if function, 0 if char pointer. */
  1505. X{
  1506. X    oid            newname[MAX_NAME_LEN];
  1507. X    register int    interface;
  1508. X    register struct mib_ifEntry    *ifp;
  1509. X    extern struct conf    conf;
  1510. X    int            result;
  1511. X
  1512. X    bcopy((char *)vp->name, (char *)newname, (int)vp->namelen * sizeof(oid));
  1513. X    /* find "next" interface */
  1514. X    for(interface = 1; interface <= MAX_INTERFACES; interface++){
  1515. X    newname[10] = (oid)interface;
  1516. X    result = compare(name, *length, newname, (int)vp->namelen);
  1517. X    if ((exact && (result == 0)) || (!exact && (result < 0)))
  1518. X        break;
  1519. X    }
  1520. X    if (interface > MAX_INTERFACES)
  1521. X    return NULL;
  1522. X    interface--; /* translate into internal index of interfaces */
  1523. X    bcopy((char *)newname, (char *)name, (int)vp->namelen * sizeof(oid));
  1524. X    *length = vp->namelen;
  1525. X    *access_method = 0;
  1526. X    *var_len = sizeof(long);
  1527. X
  1528. X    ifp = &mib_ifEntry[interface];
  1529. X    switch (vp->magic){
  1530. X        case IFDESCR:
  1531. X        *var_len = strlen(ifp->ifDescr);
  1532. X        return (u_char *)ifp->ifDescr;
  1533. X    case IFPHYSADDRESS:
  1534. X        *var_len = ifp->PhysAddrLen;
  1535. X        if (interface == 0)
  1536. X            return (u_char *)ifie.if_haddr;
  1537. X        else {
  1538. X        /*
  1539. X         * As far as IP is concerned, the "physical" address includes the Appletalk
  1540. X         * network address as well as node number.
  1541. X         */
  1542. X        return_buf[0] = ((u_char *)&conf.atneta)[0];
  1543. X        return_buf[1] = ((u_char *)&conf.atneta)[1];
  1544. X        return_buf[2] = ifab.if_dnode;
  1545. X            return (u_char *)return_buf;
  1546. X        }
  1547. X    case IFOUTQLEN:
  1548. X#ifdef notdef
  1549. X        if (interface == 0)
  1550. X        long_return = sendq->pq_len;
  1551. X        else
  1552. X        long_return = 0;    /* There is no appletalk transmit queue */
  1553. X#else
  1554. X        long_return = 0;
  1555. X#endif
  1556. X        return (u_char *)&long_return;
  1557. X    default:
  1558. X        return (u_char *)(((char *)ifp) + vp->magic);
  1559. X    }
  1560. X}
  1561. X
  1562. X/* 
  1563. X * from arp.c:
  1564. X * There is no arp.h, so this must be recreated here.
  1565. X */
  1566. X#define    ARPHLNMAX    6    /* largest arp_hln value needed */
  1567. X#define    ARPPLN        4    /* length of protocol address (IP) */
  1568. Xstruct    arptab {
  1569. X    iaddr_t at_iaddr;        /* internet address */
  1570. X    u_char    at_haddr[ARPHLNMAX];    /* hardware address */
  1571. X    u_char    at_timer;        /* minutes since last reference */
  1572. X    u_char    at_flags;        /* flags */
  1573. X    struct    pbuf *at_hold;        /* last packet until resolved/timeout */
  1574. X};
  1575. X/* at_flags field values */
  1576. X#define    ATF_INUSE    1        /* entry in use */
  1577. X#define ATF_COM        2        /* completed entry (haddr valid) */
  1578. X
  1579. X#define    ARPTAB_BSIZ    5        /* bucket size */
  1580. X#define    ARPTAB_NB    11        /* number of buckets */
  1581. X#define    ARPTAB_SIZE    (ARPTAB_BSIZ * ARPTAB_NB)
  1582. X
  1583. X
  1584. Xu_char *
  1585. Xvar_atEntry(vp, name, length, exact, var_len, access_method)
  1586. X    register struct variable *vp;    /* IN - pointer to variable entry that points here */
  1587. X    register oid        *name;    /* IN/OUT - input name requested, output name found */
  1588. X    register int        *length;    /* IN/OUT - length of input and output oid's */
  1589. X    int                exact;    /* IN - TRUE if an exact match was requested. */
  1590. X    int                *var_len;    /* OUT - length of variable or 0 if function returned. */
  1591. X    int                *access_method; /* OUT - 1 if function, 0 if char pointer. */
  1592. X{
  1593. X    /*
  1594. X     * object identifier is of form:
  1595. X     * 1.3.6.1.2.1.3.1.1.1.interface.1.A.B.C.D,  where A.B.C.D is IP address.
  1596. X     * Interface is at offset 10,
  1597. X     * IPADDR starts at offset 12.
  1598. X     */
  1599. X    oid                lowest[16];
  1600. X    oid                current[16];
  1601. X    register struct arptab  *arp;
  1602. X    struct arptab        *lowarp = 0;
  1603. X    extern struct arptab    arptab[];
  1604. X    register struct ipdad   *ipdp;
  1605. X    struct ipdad        *lowipdp = 0;
  1606. X    extern struct ipdad        ipdad[];
  1607. X    long            ipaddr;
  1608. X    int                addrlen;
  1609. X    extern struct conf        conf;
  1610. X    register u_char        *cp;
  1611. X    register oid        *op;
  1612. X    register int        count;
  1613. X
  1614. X    /* fill in object part of name for current (less sizeof instance part) */
  1615. X    bcopy((char *)vp->name, (char *)current, (int)(vp->namelen - 6) * sizeof(oid));
  1616. X    for(arp = arptab; arp < arptab + ARPTAB_SIZE; arp++){
  1617. X    if (!(arp->at_flags & ATF_COM))    /* if this entry isn't valid */
  1618. X        continue;
  1619. X    /* create new object id */
  1620. X    current[10] = 1;    /* ifIndex == 1 (ethernet) */
  1621. X    current[11] = 1;
  1622. X    cp = (u_char *)&(arp->at_iaddr);
  1623. X    op = current + 12;
  1624. X    for(count = 4; count > 0; count--)
  1625. X        *op++ = *cp++;
  1626. X    if (exact){
  1627. X        if (compare(current, 16, name, *length) == 0){
  1628. X        bcopy((char *)current, (char *)lowest, 16 * sizeof(oid));
  1629. X        lowarp = arp;
  1630. X        break;    /* no need to search further */
  1631. X        }
  1632. X    } else {
  1633. X        if ((compare(current, 16, name, *length) > 0) && (!lowarp || (compare(current, 16, lowest, 16) < 0))){
  1634. X        /*
  1635. X         * if new one is greater than input and closer to input than
  1636. X         * previous lowest, save this one as the "next" one.
  1637. X         */
  1638. X        bcopy((char *)current, (char *)lowest, 16 * sizeof(oid));
  1639. X        lowarp = arp;
  1640. X        }
  1641. X    }
  1642. X    }
  1643. X    ipaddr = conf.ipaddr + conf.ipstatic + 1;
  1644. X    for(ipdp = ipdad; ipdp < ipdad + NIPDAD; ipdp++, ipaddr++){
  1645. X    if (ipdp->timer == 0)    /* if this entry is unused, continue */
  1646. X        continue;
  1647. X    /* create new object id */
  1648. X    current[10] = 2;    /* ifIndex == 2 (appletalk) */
  1649. X    current[11] = 1;
  1650. X    cp = (u_char *)&ipaddr;
  1651. X    op = current + 12;
  1652. X    for(count = 4; count > 0; count--)
  1653. X        *op++ = *cp++;
  1654. X    if (exact){
  1655. X        if (compare(current, 16, name, *length) == 0){
  1656. X        bcopy((char *)current, (char *)lowest, 16 * sizeof(oid));
  1657. X        lowipdp = ipdp;
  1658. X        lowarp = 0;
  1659. X        break;    /* no need to search further */
  1660. X        }
  1661. X    } else {
  1662. X        if ((compare(current, 16, name, *length) > 0) && ((!lowarp && !lowipdp) || (compare(current, 16, lowest, 16) < 0))){
  1663. X        /*
  1664. X         * if new one is greater than input and closer to input than
  1665. X         * previous lowest, save this one as the "next" one.
  1666. X         */
  1667. X        bcopy((char *)current, (char *)lowest, 16 * sizeof(oid));
  1668. X        lowipdp = ipdp;
  1669. X        /* ipdad entry is lower, so invalidate arp entry */
  1670. X        lowarp = 0;
  1671. X        }
  1672. X    }
  1673. X    }
  1674. X    if (lowarp != 0){    /* arp entry was lowest */
  1675. X    addrlen = 6;
  1676. X    bcopy((char *)lowarp->at_haddr, (char *)return_buf, 6);
  1677. X    } else if (lowipdp != 0) {
  1678. X    addrlen = 3;
  1679. X    /*
  1680. X     * As far as IP is concerned, the "physical" address includes the Appletalk
  1681. X     * network address as well as node number.
  1682. X     */
  1683. X    return_buf[0] = ((u_char *)&lowipdp->net)[0];
  1684. X    return_buf[1] = ((u_char *)&lowipdp->net)[1];
  1685. X    return_buf[2] = lowipdp->node;
  1686. X    } else
  1687. X    return NULL;    /* no match */
  1688. X    bcopy((char *)lowest, (char *)name, 16 * sizeof(oid));
  1689. X    *length = 16;
  1690. X    *access_method = 0;
  1691. X    switch(vp->magic){
  1692. X    case ATIFINDEX:
  1693. X        *var_len = sizeof long_return;
  1694. X        long_return = lowest[10];
  1695. X        return (u_char *)&long_return;
  1696. X    case ATPHYSADDRESS:
  1697. X        *var_len = addrlen;
  1698. X        return (u_char *)return_buf;
  1699. X    case ATNETADDRESS:
  1700. X        *var_len = sizeof long_return;
  1701. X        cp = (u_char *)&long_return;
  1702. X        op = lowest + 12;
  1703. X        for(count = 4; count > 0; count--)
  1704. X        *cp++ = *op++;
  1705. X        return (u_char *)&long_return;
  1706. X    default:
  1707. X        ERROR("");
  1708. X   }
  1709. X   return NULL;
  1710. X}
  1711. X
  1712. Xu_char *
  1713. Xvar_ip(vp, name, length, exact, var_len, access_method)
  1714. X    register struct variable *vp;   /* IN - pointer to variable entry that points here */
  1715. X    oid        *name;        /* IN/OUT - input name requested, output name found */
  1716. X    int        *length;        /* IN/OUT - length of input and output oid's */
  1717. X    int        exact;        /* IN - TRUE if an exact match was requested. */
  1718. X    int        *var_len;        /* OUT - length of variable or 0 if function returned. */
  1719. X    int        *access_method; /* OUT - 1 if function, 0 if char pointer. */
  1720. X{
  1721. X    if (exact && (compare(name, *length, vp->name, (int)vp->namelen) != 0))
  1722. X    return NULL;
  1723. X    bcopy((char *)vp->name, (char *)name, (int)vp->namelen * sizeof(oid));
  1724. X    *length = vp->namelen;
  1725. X    *access_method = 0;
  1726. X    *var_len = sizeof(long);
  1727. X    return ((u_char *)&mib_ip) + vp->magic;
  1728. X}
  1729. X
  1730. Xu_char *
  1731. Xvar_ipRouteEntry(vp, name, length, exact, var_len, access_method)
  1732. X    register struct variable *vp;   /* IN - pointer to variable entry that points here */
  1733. X    register oid        *name;        /* IN/OUT - input name requested, output name found */
  1734. X    register int    *length;    /* IN/OUT - length of input and output strings */
  1735. X    int            exact;        /* IN - TRUE if an exact match was requested. */
  1736. X    int            *var_len;   /* OUT - length of variable or 0 if function returned. */
  1737. X    int            *access_method; /* OUT - 1 if function, 0 if char pointer. */
  1738. X{
  1739. X    oid                newname[MAX_NAME_LEN];
  1740. X    register int        entry;
  1741. X    register struct mib_ipRouteEntry    *routep;
  1742. X    int                result;
  1743. X    register int        count;
  1744. X    register u_char        *cp;
  1745. X    register oid        *op;
  1746. X    extern struct conf        conf;
  1747. X
  1748. X    /* set up a routing table to search. All other values are set at startup. */
  1749. X    routep = mib_ipRouteEntry;
  1750. X    routep[ROUTE_DEFAULT].ipRouteDest = 0;
  1751. X    routep[ROUTE_DEFAULT].ipRouteNextHop = conf.iproutedef;
  1752. X    routep[ROUTE_LOCAL].ipRouteDest = ipnetpart(conf.ipaddr);
  1753. X    routep[ROUTE_LOCAL].ipRouteNextHop = conf.ipaddr;
  1754. X
  1755. X    bcopy((char *)vp->name, (char *)newname, (int)vp->namelen * sizeof(oid));
  1756. X    /* find "next" route */
  1757. X    for(entry = 0; entry < ROUTE_ENTRIES; entry++){
  1758. X    cp = (u_char *)&routep->ipRouteDest;
  1759. X    op = newname + 10;
  1760. X    for(count = 4; count > 0; count--)
  1761. X        *op++ = *cp++;
  1762. X    result = compare(name, *length, newname, (int)vp->namelen);
  1763. X    if ((exact && (result == 0)) || (!exact && (result < 0)))
  1764. X        break;
  1765. X    routep++;
  1766. X    }
  1767. X    if (entry >= ROUTE_ENTRIES)
  1768. X    return NULL;
  1769. X    bcopy((char *)newname, (char *)name, (int)vp->namelen * sizeof(oid));
  1770. X    *length = vp->namelen;
  1771. X    *access_method = 0;
  1772. X    *var_len = sizeof(long);
  1773. X
  1774. X    routep = &mib_ipRouteEntry[entry];
  1775. X    switch (vp->magic){
  1776. X    case IPROUTENEXTHOP:
  1777. X        if (entry == ROUTE_DEFAULT)
  1778. X        return (u_char *)&conf.iproutedef;
  1779. X        else
  1780. X        return (u_char *)&conf.ipaddr;
  1781. X    default:
  1782. X        return (u_char *)(((u_char *)routep) + vp->magic);
  1783. X    }
  1784. X}
  1785. X
  1786. Xu_char *
  1787. Xvar_ipAddrEntry(vp, name, length, exact, var_len, access_method)
  1788. X    register struct variable *vp;    /* IN - pointer to variable entry that points here */
  1789. X    register oid    *name;        /* IN/OUT - input name requested, output name found */
  1790. X    register int    *length;    /* IN/OUT - length of input and output oid's */
  1791. X    int            exact;        /* IN - TRUE if an exact match was requested. */
  1792. X    int            *var_len;   /* OUT - length of variable or 0 if function returned. */
  1793. X    int            *access_method; /* OUT - 1 if function, 0 if char pointer. */
  1794. X{
  1795. X    oid            newname[14];
  1796. X    int            result;
  1797. X    extern struct conf    conf;
  1798. X    register int    count;
  1799. X    register u_char *cp;
  1800. X    register oid    *op;
  1801. X
  1802. X    bcopy((char *)vp->name, (char *)newname, (int)vp->namelen * sizeof(oid));
  1803. X    /* now find "next" ipaddr */
  1804. X    /*
  1805. X     * foreach ipaddress entry, cobble up newname with its IP address,
  1806. X     * by copying the ipaddress into the 10 - 13't subid's
  1807. X     * then compare with name.  If greater than name and less than lowest,
  1808. X     * save as new lowest.
  1809. X     * Having said all that, I'm now going to cheat because I only have one
  1810. X     * IP address (on both interfaces).
  1811. X     */
  1812. X    cp = (u_char *)&conf.ipaddr;
  1813. X    op = newname + 10;
  1814. X    for(count = sizeof(conf.ipaddr); count > 0; count--)
  1815. X    *op++ = *cp++;
  1816. X    result = compare(name, *length, newname, (int)vp->namelen);
  1817. X    if ((exact && (result != 0)) || (!exact && (result >= 0)))
  1818. X    return NULL;    /* no match */
  1819. X    bcopy((char *)newname, (char *)name, (int)vp->namelen * sizeof(oid));
  1820. X    *length = vp->namelen;
  1821. X    *access_method = 0;
  1822. X    *var_len = sizeof(long);
  1823. X
  1824. X    switch (vp->magic){
  1825. X        case IPADADDR:
  1826. X        return (u_char *)&conf.ipaddr;
  1827. X        case IPADIFINDEX:
  1828. X        /*
  1829. X         * Always return ethernet interface. SNMP
  1830. X         * has no access method to access instances
  1831. X         * on different interfaces with same IP address.
  1832. X         */
  1833. X        long_return = 1;
  1834. X        return (u_char *)&long_return;
  1835. X    case IPADNETMASK:
  1836. X        long_return = (IN_CLASSA(conf.ipaddr) ? IN_CLASSA_NET :
  1837. X            (IN_CLASSB(conf.ipaddr) ? IN_CLASSB_NET : IN_CLASSC_NET));
  1838. X        return (u_char *)&long_return;
  1839. X    case IPADBCASTADDR:
  1840. X        long_return = conf.ipbroad & 1;
  1841. X        return (u_char *)&long_return;
  1842. X    default:
  1843. X        ERROR("");
  1844. X    }
  1845. X    return NULL;
  1846. X}
  1847. X
  1848. X
  1849. Xu_char *
  1850. Xvar_icmp(vp, name, length, exact, var_len, access_method)
  1851. X    register struct variable *vp;    /* IN - pointer to variable entry that points here */
  1852. X    oid        *name;        /* IN/OUT - input name requested, output name found */
  1853. X    int        *length;        /* IN/OUT - length of input and output oid's */
  1854. X    int        exact;        /* IN - TRUE if an exact match was requested. */
  1855. X    int        *var_len;        /* OUT - length of variable or 0 if function returned. */
  1856. X    int        *access_method; /* OUT - 1 if function, 0 if char pointer. */
  1857. X{
  1858. X    if (exact && (compare(name, *length, vp->name, (int)vp->namelen) != 0))
  1859. X    return NULL;
  1860. X    bcopy((char *)vp->name, (char *)name, (int)vp->namelen * sizeof(oid));
  1861. X    *length = vp->namelen;
  1862. X    *access_method = 0;
  1863. X    *var_len = sizeof(long); /* all following variables are sizeof long */
  1864. X    switch (vp->magic){
  1865. X    case ICMPINMSGS:
  1866. X        return (u_char *)&mib_icmpInMsgs;
  1867. X    case ICMPINERRORS:
  1868. X        return (u_char *)&mib_icmpInErrors;
  1869. X    case ICMPINDESTUNREACHS:
  1870. X        return (u_char *)&mib_icmpInCount[3];
  1871. X    case ICMPINTIMEEXCDS:
  1872. X        return (u_char *)&mib_icmpInCount[11];
  1873. X    case ICMPINPARMPROBS:
  1874. X        return (u_char *)&mib_icmpInCount[12];
  1875. X    case ICMPINSRCQUENCHS:
  1876. X        return (u_char *)&mib_icmpInCount[4];
  1877. X    case ICMPINREDIRECTS:
  1878. X        return (u_char *)&mib_icmpInCount[5];
  1879. X    case ICMPINECHOS:
  1880. X        return (u_char *)&mib_icmpInCount[8];
  1881. X    case ICMPINECHOREPS:
  1882. X        return (u_char *)&mib_icmpInCount[0];
  1883. X    case ICMPINTIMESTAMPS:
  1884. X        return (u_char *)&mib_icmpInCount[13];
  1885. X    case ICMPINTIMESTAMPREPS:
  1886. X        return (u_char *)&mib_icmpInCount[14];
  1887. X    case ICMPINADDRMASKS:
  1888. X        return (u_char *)&mib_icmpInCount[17];
  1889. X    case ICMPINADDRMASKREPS:
  1890. X        return (u_char *)&mib_icmpInCount[18];
  1891. X    case ICMPOUTMSGS:
  1892. X        return (u_char *)&mib_icmpOutMsgs;
  1893. X    case ICMPOUTERRORS:
  1894. X        return (u_char *)&mib_icmpOutErrors;
  1895. X    case ICMPOUTDESTUNREACHS:
  1896. X        return (u_char *)&mib_icmpOutCount[3];
  1897. X    case ICMPOUTTIMEEXCDS:
  1898. X        return (u_char *)&mib_icmpOutCount[11];
  1899. X    case ICMPOUTPARMPROBS:
  1900. X        return (u_char *)&mib_icmpOutCount[12];
  1901. X    case ICMPOUTSRCQUENCHS:
  1902. X        return (u_char *)&mib_icmpOutCount[4];
  1903. X    case ICMPOUTREDIRECTS:
  1904. X        return (u_char *)&mib_icmpOutCount[5];
  1905. X    case ICMPOUTECHOS:
  1906. X        return (u_char *)&mib_icmpOutCount[8];
  1907. X    case ICMPOUTECHOREPS:
  1908. X        return (u_char *)&mib_icmpOutCount[0];
  1909. X    case ICMPOUTTIMESTAMPS:
  1910. X        return (u_char *)&mib_icmpOutCount[13];
  1911. X    case ICMPOUTTIMESTAMPREPS:
  1912. X        return (u_char *)&mib_icmpOutCount[14];
  1913. X    case ICMPOUTADDRMASKS:
  1914. X        return (u_char *)&mib_icmpOutCount[17];
  1915. X    case ICMPOUTADDRMASKREPS:
  1916. X        return (u_char *)&mib_icmpOutCount[18];
  1917. X    default:
  1918. X        ERROR("");
  1919. X    }
  1920. X    return NULL;
  1921. X}
  1922. X
  1923. X
  1924. Xu_char *
  1925. Xvar_udp(vp, name, length, exact, var_len, access_method)
  1926. X    register struct variable *vp;    /* IN - pointer to variable entry that points here */
  1927. X    oid        *name;        /* IN/OUT - input name requested, output name found */
  1928. X    int        *length;        /* IN/OUT - length of input and output oid's */
  1929. X    int        exact;        /* IN - TRUE if an exact match was requested. */
  1930. X    int        *var_len;        /* OUT - length of variable or 0 if function returned. */
  1931. X    int        *access_method; /* OUT - 1 if function, 0 if char pointer. */
  1932. X{
  1933. X    if (exact && (compare(name, *length, vp->name, (int)vp->namelen) != 0))
  1934. X    return NULL;
  1935. X    bcopy((char *)vp->name, (char *)name, (int)vp->namelen * sizeof(oid));
  1936. X    *length = vp->namelen;
  1937. X    *access_method = 0;
  1938. X    *var_len = sizeof(long);
  1939. X    return ((u_char *)&mib_udp) + vp->magic;
  1940. X}
  1941. END_OF_FILE
  1942.   if test 33903 -ne `wc -c <'nocol-3.0/src/cmu-snmp/snmplib/snmp_vars.c.kip'`; then
  1943.     echo shar: \"'nocol-3.0/src/cmu-snmp/snmplib/snmp_vars.c.kip'\" unpacked with wrong size!
  1944.   fi
  1945.   # end of 'nocol-3.0/src/cmu-snmp/snmplib/snmp_vars.c.kip'
  1946. fi
  1947. if test -f 'nocol-3.0/src/include/noclogd.h' -a "${1}" != "-c" ; then 
  1948.   echo shar: Will not clobber existing file \"'nocol-3.0/src/include/noclogd.h'\"
  1949. else
  1950.   echo shar: Extracting \"'nocol-3.0/src/include/noclogd.h'\" \(1332 characters\)
  1951.   sed "s/^X//" >'nocol-3.0/src/include/noclogd.h' <<'END_OF_FILE'
  1952. X/* $Header: /home/aggarwal/lsrc/nocol/src/include/RCS/noclogd.h,v 2.1 1993/10/30 03:01:43 aggarwal Exp $ */
  1953. X
  1954. X
  1955. X#ifndef __noclogd_h
  1956. X# define __noclogd_h
  1957. X
  1958. X#include <sys/types.h>
  1959. X#include <sys/socket.h>
  1960. X#include <sys/un.h>
  1961. X#include <sys/wait.h>
  1962. X#include <sys/time.h>
  1963. X#include <signal.h>
  1964. X#include <errno.h>
  1965. X#include <netdb.h>
  1966. X#include <stdio.h>
  1967. X#include <string.h>
  1968. X#include <ctype.h>
  1969. X
  1970. X#include "nocol.h"
  1971. X
  1972. X/* For config file, Unix socket, pidfile, etc. */
  1973. X#ifndef ETCDIR
  1974. X# define ETCDIR  "/nocol/etc"
  1975. X#endif
  1976. X
  1977. X#define NLOG_CONFIGFILE(s) *s= '\0'; strcat(strcat(s, ETCDIR),"/noclogd-confg")
  1978. X#define NLOG_PIDFILE(s)       *s= '\0'; strcat(strcat(s, ETCDIR),"/noclogd.pid")
  1979. X
  1980. X/* File for daemon error messages  */
  1981. X#define NLOG_ERRORFILE(s)  *s= '\0'; strcat(strcat(s, ETCDIR),"/noclogd.error")
  1982. X
  1983. X/*
  1984. X * Host where the NOCOL logging daemon runs. Needed by clients.
  1985. X * Can give an IP address instead of a name
  1986. X */
  1987. X#ifndef NLOG_HOST
  1988. X# define NLOG_HOST        "noclog.jvnc.net"    /* as a hostname */
  1989. X/*  # define NLOG_HOST        "128.121.50.2"         /* as IP addr */
  1990. X#endif
  1991. X
  1992. X/* For extracting the port from /etc/services */
  1993. X#ifndef NLOG_SERVICE
  1994. X# define NLOG_SERVICE        "noclog"
  1995. X#endif
  1996. X
  1997. X/* Port in case not available from /etc/services */
  1998. X#ifndef NLOG_PORT
  1999. X# define NLOG_PORT        5354
  2000. X#endif
  2001. X
  2002. X#ifndef NLOG_UMASK
  2003. X# define NLOG_UMASK        022
  2004. X#endif
  2005. X
  2006. X
  2007. X#endif  /* !__noclogd_h  */
  2008. END_OF_FILE
  2009.   if test 1332 -ne `wc -c <'nocol-3.0/src/include/noclogd.h'`; then
  2010.     echo shar: \"'nocol-3.0/src/include/noclogd.h'\" unpacked with wrong size!
  2011.   fi
  2012.   # end of 'nocol-3.0/src/include/noclogd.h'
  2013. fi
  2014. echo shar: End of archive 11 \(of 26\).
  2015. cp /dev/null ark11isdone
  2016. MISSING=""
  2017. 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
  2018.     if test ! -f ark${I}isdone ; then
  2019.     MISSING="${MISSING} ${I}"
  2020.     fi
  2021. done
  2022. if test "${MISSING}" = "" ; then
  2023.     echo You have unpacked all 26 archives.
  2024.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  2025. else
  2026.     echo You still must unpack the following archives:
  2027.     echo "        " ${MISSING}
  2028. fi
  2029. exit 0
  2030. exit 0 # Just in case...
  2031.