1--
2-- Copyright (c) 2001-2003
3--	Fraunhofer Institute for Open Communication Systems (FhG Fokus).
4--	All rights reserved.
5--
6-- Author: Harti Brandt <harti@freebsd.org>
7--
8-- Redistribution and use in source and binary forms, with or without
9-- modification, are permitted provided that the following conditions
10-- are met:
11-- 1. Redistributions of source code must retain the above copyright
12--    notice, this list of conditions and the following disclaimer.
13-- 2. Redistributions in binary form must reproduce the above copyright
14--    notice, this list of conditions and the following disclaimer in the
15--    documentation and/or other materials provided with the distribution.
16--
17-- THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18-- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19-- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20-- ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
21-- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22-- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23-- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24-- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25-- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26-- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27-- SUCH DAMAGE.
28--
29-- $Begemot: bsnmp/snmpd/BEGEMOT-SNMPD.txt,v 1.23 2004/08/06 08:47:08 brandt Exp $
30--
31-- Begemot Private SNMPd MIB.
32--
33BEGEMOT-SNMPD-MIB DEFINITIONS ::= BEGIN
34
35IMPORTS
36    MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, Counter32,
37    Unsigned32, IpAddress
38	FROM SNMPv2-SMI
39    TEXTUAL-CONVENTION, TruthValue, RowStatus
40	FROM SNMPv2-TC
41    MODULE-COMPLIANCE, OBJECT-GROUP
42	FROM SNMPv2-CONF
43    begemot
44	FROM BEGEMOT-MIB;
45
46begemotSnmpd MODULE-IDENTITY
47    LAST-UPDATED "200212040000Z"
48    ORGANIZATION "Fraunhofer FOKUS, CATS"
49    CONTACT-INFO
50	    "		Hartmut Brandt
51
52	     Postal:	Fraunhofer Institute for Open Communication Systems
53			Kaiserin-Augusta-Allee 31
54			10589 Berlin
55			Germany
56
57	     Fax:	+49 30 3463 7352
58
59	     E-mail:	harti@freebsd.org"
60    DESCRIPTION
61	    "The MIB module for the Begemot SNMP daemon."
62    ::= { begemot 1 }
63
64begemotSnmpdObjects	OBJECT IDENTIFIER ::= { begemotSnmpd 1 }
65begemotSnmpdDefs	OBJECT IDENTIFIER ::= { begemotSnmpd 2 }
66
67-- --------------------------------------------------------------------------
68
69SectionName ::= TEXTUAL-CONVENTION
70    DISPLAY-HINT "14a"
71    STATUS	current
72    DESCRIPTION
73	"Name of a loadable module. Should consist of alphanumeric characers
74	only, the first character must be a letter."
75    SYNTAX	OCTET STRING (SIZE(1..14))
76
77-- --------------------------------------------------------------------------
78--
79-- Agent types
80--
81begemotSnmpdAgent	OBJECT IDENTIFIER ::= { begemotSnmpdDefs 1 }
82
83begemotSnmpdAgentFreeBSD OBJECT-IDENTITY
84    STATUS	current
85    DESCRIPTION
86	    "Identifies the agent as running on FreeBSD."
87    ::= { begemotSnmpdAgent 1 }
88
89-- --------------------------------------------------------------------------
90--
91-- The Config Group
92--
93begemotSnmpdConfig	OBJECT IDENTIFIER ::= { begemotSnmpdObjects 1 }
94
95begemotSnmpdTransmitBuffer OBJECT-TYPE
96    SYNTAX	INTEGER (484..65535)
97    MAX-ACCESS	read-write
98    STATUS	current
99    DESCRIPTION
100	    "The size of the receive buffer in bytes. Larger messages
101	    are dropped by SNMPd."
102    DEFVAL	{ 2048 }
103    ::= { begemotSnmpdConfig 1 }
104
105begemotSnmpdReceiveBuffer OBJECT-TYPE
106    SYNTAX	INTEGER (484..65535)
107    MAX-ACCESS	read-write
108    STATUS	current
109    DESCRIPTION
110	    "The size of the transmit buffer in bytes. Larger messages
111	    cannot be sent by the SNMPd."
112    DEFVAL	{ 2048 }
113    ::= { begemotSnmpdConfig 2 }
114
115begemotSnmpdCommunityDisable OBJECT-TYPE
116    SYNTAX	TruthValue
117    MAX-ACCESS	read-write
118    STATUS	current
119    DESCRIPTION
120	    "Disables all access to the CommunityTable from SNMP. Once
121	    set it cannot be cleared."
122    DEFVAL	{ false }
123    ::= { begemotSnmpdConfig 3 }
124
125begemotSnmpdTrap1Addr OBJECT-TYPE
126    SYNTAX	IpAddress
127    MAX-ACCESS	read-write
128    STATUS	current
129    DESCRIPTION
130	    "The trap sink for v1 traps."
131    ::= { begemotSnmpdConfig 4 }
132
133begemotSnmpdVersionEnable OBJECT-TYPE
134    SYNTAX	Unsigned32
135    MAX-ACCESS	read-only
136    STATUS	current
137    DESCRIPTION
138	    "The SNMP versions that the agent processes. The following
139	    bits are defined:
140
141	    0x00000001	- SNMPv1
142	    0x00000002	- SNMPv2c"
143    DEFVAL	{ 3 }
144    ::= { begemotSnmpdConfig 5 }
145
146--
147-- Trap destinations
148--
149begemotTrapSinkTable OBJECT-TYPE
150    SYNTAX	SEQUENCE OF BegemotTrapSinkEntry
151    MAX-ACCESS	not-accessible
152    STATUS	current
153    DESCRIPTION
154	    "A table with destinations for standard traps."
155    INDEX	{ begemotTrapSinkAddr, begemotTrapSinkPort }
156    ::= { begemotSnmpdObjects 2 }
157
158begemotTrapSinkEntry OBJECT-TYPE
159    SYNTAX	BegemotTrapSinkEntry
160    MAX-ACCESS	not-accessible
161    STATUS	current
162    DESCRIPTION
163	    "Entry describes one trap destination."
164    INDEX	{ begemotTrapSinkAddr, begemotTrapSinkPort }
165    ::= { begemotTrapSinkTable 1 }
166
167BegemotTrapSinkEntry ::= SEQUENCE {
168    begemotTrapSinkAddr		IpAddress,
169    begemotTrapSinkPort		INTEGER,
170    begemotTrapSinkStatus	RowStatus
171}
172
173begemotTrapSinkAddr OBJECT-TYPE
174    SYNTAX	IpAddress
175    MAX-ACCESS	not-accessible
176    STATUS	current
177    DESCRIPTION
178	    "Destination IP address of the manager station where to send
179	    traps."
180    ::= { begemotTrapSinkEntry 1 }
181
182begemotTrapSinkPort OBJECT-TYPE
183    SYNTAX	INTEGER (1..65535)
184    MAX-ACCESS	not-accessible
185    STATUS	current
186    DESCRIPTION
187	    "Destination UDP port of the manager station where to send
188	    traps."
189    ::= { begemotTrapSinkEntry 2 }
190
191begemotTrapSinkStatus OBJECT-TYPE
192    SYNTAX	RowStatus
193    MAX-ACCESS	read-create
194    STATUS	current
195    DESCRIPTION
196	    "Used to create/activate/destroy the entry."
197    ::= { begemotTrapSinkEntry 3 }
198
199--
200-- SNMP port table
201--
202begemotSnmpdPortTable OBJECT-TYPE
203    SYNTAX	SEQUENCE OF BegemotSnmpdPortEntry
204    MAX-ACCESS	not-accessible
205    STATUS	current
206    DESCRIPTION
207	    "A table with descriptions of UDP ports to listen on
208	    for SNMP messages."
209    ::= { begemotSnmpdObjects 4 }
210
211begemotSnmpdPortEntry OBJECT-TYPE
212    SYNTAX	BegemotSnmpdPortEntry
213    MAX-ACCESS	not-accessible
214    STATUS	current
215    DESCRIPTION
216	    "An entry in the table with descriptions of UDP ports to
217	    listen on for SNMP messages."
218    INDEX	{ begemotSnmpdPortAddress, begemotSnmpdPortPort }
219    ::= { begemotSnmpdPortTable 1 }
220
221BegemotSnmpdPortEntry ::= SEQUENCE {
222    begemotSnmpdPortAddress	IpAddress,
223    begemotSnmpdPortPort	INTEGER,
224    begemotSnmpdPortStatus	INTEGER
225}
226
227begemotSnmpdPortAddress OBJECT-TYPE
228    SYNTAX	IpAddress
229    MAX-ACCESS	not-accessible
230    STATUS	current
231    DESCRIPTION
232	    "The IP address to bind to."
233    ::= { begemotSnmpdPortEntry 1 }
234
235begemotSnmpdPortPort OBJECT-TYPE
236    SYNTAX	INTEGER (1..65535)
237    MAX-ACCESS	not-accessible
238    STATUS	current
239    DESCRIPTION
240	    "The UDP port to listen on for SNMP messages."
241    ::= { begemotSnmpdPortEntry 2 }
242
243begemotSnmpdPortStatus OBJECT-TYPE
244    SYNTAX	INTEGER { valid(1), invalid(2) }
245    MAX-ACCESS	read-create
246    STATUS	current
247    DESCRIPTION
248	    "Set status to 1 to create entry, set it to 2 to delete it."
249    ::= { begemotSnmpdPortEntry 3 }
250
251---
252--- Community table
253---
254begemotSnmpdCommunityTable OBJECT-TYPE
255    SYNTAX	SEQUENCE OF BegemotSnmpdCommunityEntry
256    MAX-ACCESS	not-accessible
257    STATUS	current
258    DESCRIPTION
259	    "A table with the community strings for access control."
260    ::= { begemotSnmpdObjects 5 }
261
262begemotSnmpdCommunityEntry OBJECT-TYPE
263    SYNTAX	BegemotSnmpdCommunityEntry
264    MAX-ACCESS	not-accessible
265    STATUS	current
266    DESCRIPTION
267	    "A table with the community strings for access control.
268	    When begemotSnmpdCommDisable is true, this table disappears."
269    INDEX	{ begemotSnmpdCommunityModule, begemotSnmpdCommunityIndex }
270    ::= { begemotSnmpdCommunityTable 1 }
271
272BegemotSnmpdCommunityEntry ::= SEQUENCE {
273    begemotSnmpdCommunityModule	SectionName,
274    begemotSnmpdCommunityIndex	Unsigned32,
275    begemotSnmpdCommunityString	OCTET STRING,
276    begemotSnmpdCommunityDescr	OCTET STRING
277}
278
279begemotSnmpdCommunityModule OBJECT-TYPE
280    SYNTAX	SectionName
281    MAX-ACCESS	not-accessible
282    STATUS	current
283    DESCRIPTION
284	    "Index of the module that has registered this community.
285	    For global communities this is the empty string."
286    ::= { begemotSnmpdCommunityEntry 1 }
287
288begemotSnmpdCommunityIndex OBJECT-TYPE
289    SYNTAX	Unsigned32 (1..4294967295)
290    MAX-ACCESS	not-accessible
291    STATUS	current
292    DESCRIPTION
293	    "The numerical index of the community (private to the module)."
294    ::= { begemotSnmpdCommunityEntry 2 }
295
296begemotSnmpdCommunityString OBJECT-TYPE
297    SYNTAX	OCTET STRING
298    MAX-ACCESS	read-write
299    STATUS	current
300    DESCRIPTION
301	    "The string for access to SNMPd."
302    ::= { begemotSnmpdCommunityEntry 3 }
303
304begemotSnmpdCommunityDescr OBJECT-TYPE
305    SYNTAX	OCTET STRING
306    MAX-ACCESS	read-only
307    STATUS	current
308    DESCRIPTION
309	    "A description what this community is good for."
310    ::= { begemotSnmpdCommunityEntry 4 }
311
312--
313-- Module table
314--
315begemotSnmpdModuleTable OBJECT-TYPE
316    SYNTAX	SEQUENCE OF BegemotSnmpdModuleEntry
317    MAX-ACCESS	not-accessible
318    STATUS	current
319    DESCRIPTION
320	    "A table describing all the currently loaded dynamic modules.
321	    Writing to this table loads and unloads modules."
322    ::= { begemotSnmpdObjects 6 }
323
324begemotSnmpdModuleEntry OBJECT-TYPE
325    SYNTAX	BegemotSnmpdModuleEntry
326    MAX-ACCESS	not-accessible
327    STATUS	current
328    DESCRIPTION
329	    "A table entry describing a loadable module."
330    INDEX	{ begemotSnmpdModuleSection }
331    ::= { begemotSnmpdModuleTable 1 }
332
333BegemotSnmpdModuleEntry ::= SEQUENCE {
334    begemotSnmpdModuleSection	SectionName,
335    begemotSnmpdModulePath	OCTET STRING,
336    begemotSnmpdModuleComment	OCTET STRING
337}
338
339begemotSnmpdModuleSection OBJECT-TYPE
340    SYNTAX	SectionName
341    MAX-ACCESS	not-accessible
342    STATUS	current
343    DESCRIPTION
344	    "The string used for matching configuration file sections
345	    and indexes the module table."
346    ::= { begemotSnmpdModuleEntry 1 }
347
348
349begemotSnmpdModulePath OBJECT-TYPE
350    SYNTAX	OCTET STRING
351    MAX-ACCESS	read-create
352    STATUS	current
353    DESCRIPTION
354	    "The path name of the module. Set to empty string
355	    to unload a module. The path of an existing module
356	    may not be changed."
357    ::= { begemotSnmpdModuleEntry 2 }
358
359begemotSnmpdModuleComment OBJECT-TYPE
360    SYNTAX	OCTET STRING
361    MAX-ACCESS	read-only
362    STATUS	current
363    DESCRIPTION
364	    "A comment describing this module."
365    ::= { begemotSnmpdModuleEntry 3 }
366
367
368-- --------------------------------------------------------------------------
369--
370-- The STATISTICS Group
371--
372begemotSnmpdStats	OBJECT IDENTIFIER ::= { begemotSnmpdObjects 7 }
373
374begemotSnmpdStatsNoRxBufs OBJECT-TYPE
375    SYNTAX	Counter32
376    MAX-ACCESS	read-only
377    STATUS	current
378    DESCRIPTION
379	    "Number of times a receive buffer could not be allocated
380	    for a packet."
381    ::= { begemotSnmpdStats 1 }
382
383begemotSnmpdStatsNoTxBufs OBJECT-TYPE
384    SYNTAX	Counter32
385    MAX-ACCESS	read-only
386    STATUS	current
387    DESCRIPTION
388	    "Number of times a transmit buffer could not be allocated
389	    for a packet."
390    ::= { begemotSnmpdStats 2 }
391
392begemotSnmpdStatsInTooLongPkts OBJECT-TYPE
393    SYNTAX	Counter32
394    MAX-ACCESS	read-only
395    STATUS	current
396    DESCRIPTION
397	    "Number of packets received that were longer than the
398	    receive buffer. These packets are dropped."
399    ::= { begemotSnmpdStats 3 }
400
401begemotSnmpdStatsInBadPduTypes OBJECT-TYPE
402    SYNTAX	Counter32
403    MAX-ACCESS	read-only
404    STATUS	current
405    DESCRIPTION
406	    "Number of packets received with a bad type field."
407    ::= { begemotSnmpdStats 4 }
408
409--
410-- The Debug Group
411--
412begemotSnmpdDebug	OBJECT IDENTIFIER ::= { begemotSnmpdObjects 8 }
413
414begemotSnmpdDebugDumpPdus OBJECT-TYPE
415    SYNTAX	TruthValue
416    MAX-ACCESS	read-write
417    STATUS	current
418    DESCRIPTION
419	    "Dump PDUs to log file if true."
420    DEFVAL	{ false }
421    ::= { begemotSnmpdDebug 1 }
422
423begemotSnmpdDebugSnmpTrace OBJECT-TYPE
424    SYNTAX	Unsigned32
425    MAX-ACCESS	read-write
426    STATUS	current
427    DESCRIPTION
428	    "Tracing flags for the SNMP library. These flags have the
429	    following meaning:
430		0x00000001	trace GET operator
431		0x00000002	trace GETNEXT operator
432		0x00000004	trace SET operator
433		0x00000008	trace dependency processing
434		0x00000010	trace node finding
435		0x10000000	log ASN1 errors
436		0x20000000	log SNMP errors
437	    Individual values can be or-ed together."
438    DEFVAL	{ 0 }
439    ::= { begemotSnmpdDebug 2 }
440
441begemotSnmpdDebugSyslogPri OBJECT-TYPE
442    SYNTAX	INTEGER (0..8)
443    MAX-ACCESS	read-write
444    STATUS	current
445    DESCRIPTION
446	    "Events with this or higher priority should not be logged."
447    DEFVAL	{ 7 }	-- don't log debug messages
448    ::= { begemotSnmpdDebug 3 }
449
450--
451-- Local port table
452--
453begemotSnmpdLocalPortTable OBJECT-TYPE
454    SYNTAX	SEQUENCE OF BegemotSnmpdLocalPortEntry
455    MAX-ACCESS	not-accessible
456    STATUS	current
457    DESCRIPTION
458	    "A table with descriptions of local (unix domain) ports to listen
459	    on for SNMP messages."
460    ::= { begemotSnmpdObjects 9 }
461
462begemotSnmpdLocalPortEntry OBJECT-TYPE
463    SYNTAX	BegemotSnmpdLocalPortEntry
464    MAX-ACCESS	not-accessible
465    STATUS	current
466    DESCRIPTION
467	    "An entry in the table with descriptions of local ports to
468	    listen on for SNMP messages."
469    INDEX	{ begemotSnmpdLocalPortPath }
470    ::= { begemotSnmpdLocalPortTable 1 }
471
472BegemotSnmpdLocalPortEntry ::= SEQUENCE {
473    begemotSnmpdLocalPortPath	OCTET STRING,
474    begemotSnmpdLocalPortStatus	INTEGER,
475    begemotSnmpdLocalPortType	INTEGER
476}
477
478begemotSnmpdLocalPortPath OBJECT-TYPE
479    SYNTAX	OCTET STRING (SIZE(1..104))
480    MAX-ACCESS	not-accessible
481    STATUS	current
482    DESCRIPTION
483	    "The path name to create and listen on."
484    ::= { begemotSnmpdLocalPortEntry 1 }
485
486begemotSnmpdLocalPortStatus OBJECT-TYPE
487    SYNTAX	INTEGER { valid(1), invalid(2) }
488    MAX-ACCESS	read-create
489    STATUS	current
490    DESCRIPTION
491	    "Set status to 1 to create entry, set it to 2 to delete it."
492    ::= { begemotSnmpdLocalPortEntry 2 }
493
494begemotSnmpdLocalPortType OBJECT-TYPE
495    SYNTAX	INTEGER {
496			dgram-unpriv(1),
497			dgram-priv(2),
498			stream-unpriv(3),
499			stream-priv(4)
500		}
501    MAX-ACCESS	read-create
502    STATUS	current
503    DESCRIPTION
504	    "Type of the port. If the type is unpriv SET operations
505	    are allowed from all clients if the community matches. For
506	    priv SET operations are allowed only from peers with uid
507	    zero. If the daemon cannot determine the peer uid it disallows
508	    the SET operation for -priv ports."
509    ::= { begemotSnmpdLocalPortEntry 3 }
510
511--
512-- Transport mapping table
513--
514begemotSnmpdTransportMappings	OBJECT IDENTIFIER ::= { begemotSnmpdObjects 10 }
515
516begemotSnmpdTransportTable OBJECT-TYPE
517    SYNTAX	SEQUENCE OF BegemotSnmpdTransportEntry
518    MAX-ACCESS	not-accessible
519    STATUS	current
520    DESCRIPTION
521	    "A table containing all the currently loaded transport mappings."
522    ::= { begemotSnmpdTransportMappings 1 }
523
524begemotSnmpdTransportEntry OBJECT-TYPE
525    SYNTAX	BegemotSnmpdTransportEntry
526    MAX-ACCESS	not-accessible
527    STATUS	current
528    DESCRIPTION
529	    "An entry in the table with the transport mappings."
530    INDEX	{ begemotSnmpdTransportName }
531    ::= { begemotSnmpdTransportTable 1 }
532
533BegemotSnmpdTransportEntry ::= SEQUENCE {
534    begemotSnmpdTransportName	OCTET STRING,
535    begemotSnmpdTransportStatus	INTEGER,
536    begemotSnmpdTransportOid	OBJECT IDENTIFIER
537}
538
539begemotSnmpdTransportName OBJECT-TYPE
540    SYNTAX	OCTET STRING (SIZE(1..256))
541    MAX-ACCESS	not-accessible
542    STATUS	current
543    DESCRIPTION
544	    "The name of the mapping."
545    ::= { begemotSnmpdTransportEntry 1 }
546
547begemotSnmpdTransportStatus OBJECT-TYPE
548    SYNTAX	RowStatus
549    MAX-ACCESS	read-only
550    STATUS	current
551    DESCRIPTION
552	    "Used to create/activate/destroy the entry."
553    ::= { begemotSnmpdTransportEntry 2 }
554
555begemotSnmpdTransportOid OBJECT-TYPE
556    SYNTAX	OBJECT IDENTIFIER
557    MAX-ACCESS	read-only
558    STATUS	current
559    DESCRIPTION
560	    "A pointer to the group with the transport-dependend stuff."
561    ::= { begemotSnmpdTransportEntry 3 }
562
563--
564-- XXX These should go into their own MIB
565--
566begemotSnmpdTransUdp	OBJECT IDENTIFIER ::= { begemotSnmpdTransportMappings 2 }
567begemotSnmpdTransLsock	OBJECT IDENTIFIER ::= { begemotSnmpdTransportMappings 3 }
568
569END
570