e1d581b289
MFC after: 3 weeks
247 lines
6.2 KiB
Groff
247 lines
6.2 KiB
Groff
.\"
|
|
.\" Copyright (c) 2001-2005
|
|
.\" Fraunhofer Institute for Open Communication Systems (FhG Fokus).
|
|
.\" All rights reserved.
|
|
.\" Copyright (c) 2006
|
|
.\" Hartmut Brandt
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" Author: Harti Brandt <harti@FreeBSD.org>
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" $Begemot: gensnmptree.1 383 2006-05-30 07:40:49Z brandt_h $
|
|
.\"
|
|
.Dd May 26, 2006
|
|
.Dt GENSNMPTREE 1
|
|
.Os
|
|
.Sh NAME
|
|
.Nm gensnmptree
|
|
.Nd "generate C and header files from a MIB description file"
|
|
.Sh SYNOPSIS
|
|
.Nm
|
|
.Op Fl dEehlt
|
|
.Op Fl I Ar directory
|
|
.Op Fl i Ar infile
|
|
.Op Fl p Ar prefix
|
|
.Op Ar name Ar ...
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Nm
|
|
utility is used to either generate C language tables and header files from
|
|
a MIB description or to numeric OIDs from MIB descriptions.
|
|
The first form is used only for maintaining the
|
|
.Xr bsnmpd 1
|
|
daemon or for module writers.
|
|
The second form may be used by SNMP client program writers.
|
|
.Pp
|
|
If none of the options
|
|
.Fl e ,
|
|
.Fl E
|
|
or
|
|
.Fl t
|
|
are used
|
|
.Nm
|
|
reads a MIB description from its standard input and creates two files: a
|
|
C-file
|
|
.Ar prefix Ns tree.c
|
|
containing a table used by
|
|
.Xr bsnmpd 1
|
|
during PDU processing
|
|
and a header file
|
|
.Ar prefix Ns tree.h
|
|
containing appropriate declarations of the callback functions used in this
|
|
table, the table itself and definitions for all enums.
|
|
.Pp
|
|
The following options are available:
|
|
.Bl -tag -width ".Fl E"
|
|
.It Fl d
|
|
Switch on debugging.
|
|
.It Fl E
|
|
Extract enumerations and bit constructs.
|
|
In this mode the tool emits
|
|
a header file that contains for each type given on the command line a
|
|
C-enum definition and a preprocessor define that may be used to map
|
|
values to strings.
|
|
.It Fl e
|
|
.Nm
|
|
expects MIB variable names (only the last component) on its command line.
|
|
It reads a MIB specification from standard input and for each MIB variable
|
|
name emits three C preprocessor defines on its standard output:
|
|
.Bl -tag -width ".Va OIDLEN_ Ns Ar Name"
|
|
.It Va OIDX_ Ns Ar name
|
|
This define can be used to initialize a
|
|
.Va struct asn_oid
|
|
in the following way:
|
|
.Pp
|
|
.Dl const struct asn_oid oid_sysDescr = OIDX_sysDescr;
|
|
.It Va OIDLEN_ Ns Ar name
|
|
is the length of the OID.
|
|
.It Va OID_ Ns Ar name
|
|
is the last component of the OID.
|
|
.El
|
|
.It Fl h
|
|
Print a short help page.
|
|
.It Fl I Ar directory
|
|
Add the named directory to the include path just before the standard include
|
|
directories.
|
|
.It Fl i Ar infile
|
|
Read from the named file instead of standard input.
|
|
.It Fl l
|
|
Generate local preprocessor includes.
|
|
This is used for bootstrapping
|
|
.Xr bsnmpd 1 .
|
|
.It Fl t
|
|
Instead of normal output print the resulting tree.
|
|
.It Fl p Ar prefix
|
|
Prefix the file names and the table name with
|
|
.Ar prefix .
|
|
.El
|
|
.Sh MIBS
|
|
The syntax of the MIB description file can formally be specified as follows:
|
|
.Bd -unfilled -offset indent
|
|
file := top | top file
|
|
|
|
top := tree | typedef | include
|
|
|
|
tree := head elements ')'
|
|
|
|
entry := head ':' index STRING elements ')'
|
|
|
|
leaf := head type STRING ACCESS ')'
|
|
|
|
column := head type ACCESS ')'
|
|
|
|
type := BASETYPE | BASETYPE '|' subtype | enum | bits
|
|
|
|
subtype := STRING
|
|
|
|
enum := ENUM '(' value ')'
|
|
|
|
bits := BITS '(' value ')'
|
|
|
|
value := INT STRING | INT STRING value
|
|
|
|
head := '(' INT STRING
|
|
|
|
elements := EMPTY | elements element
|
|
|
|
element := tree | leaf | column
|
|
|
|
index := type | index type
|
|
|
|
typedef := 'typedef' STRING type
|
|
|
|
include := 'include' filespec
|
|
|
|
filespec := '"' STRING '"' | '<' STRING '>'
|
|
.Ed
|
|
.Pp
|
|
.Ar BASETYPE
|
|
specifies a SNMP data type and may be one of
|
|
.Bl -bullet -offset indent -compact
|
|
.It
|
|
NULL
|
|
.It
|
|
INTEGER
|
|
.It
|
|
INTEGER32 (same as INTEGER)
|
|
.It
|
|
UNSIGNED32 (same as GAUGE)
|
|
.It
|
|
OCTETSTRING
|
|
.It
|
|
IPADDRESS
|
|
.It
|
|
OID
|
|
.It
|
|
TIMETICKS
|
|
.It
|
|
COUNTER
|
|
.It
|
|
GAUGE
|
|
.It
|
|
COUNTER64
|
|
.El
|
|
.Pp
|
|
.Ar ACCESS
|
|
specifies the accessibility of the MIB variable (which operation can be
|
|
performed) and is one of
|
|
.Bl -bullet -offset indent -compact
|
|
.It
|
|
GET
|
|
.It
|
|
SET
|
|
.El
|
|
.Pp
|
|
.Ar INT
|
|
is a decimal integer and
|
|
.Ar STRING
|
|
is any string starting with a letter or underscore and consisting of
|
|
letters, digits, underscores and minuses, that is not one of the keywords.
|
|
.Pp
|
|
The
|
|
.Ar typedef
|
|
directive associates a type with a single name.
|
|
.Pp
|
|
The
|
|
.Ar include
|
|
directive is replaced by the contents of the named file.
|
|
.Sh EXAMPLES
|
|
The following MIB description describes the system group:
|
|
.Bd -literal -offset indent
|
|
include "tc.def"
|
|
|
|
typedef AdminStatus ENUM (
|
|
1 up
|
|
2 down
|
|
)
|
|
|
|
(1 internet
|
|
(2 mgmt
|
|
(1 mibII
|
|
(1 system
|
|
(1 sysDescr OCTETSTRING op_system_group GET)
|
|
(2 sysObjectId OID op_system_group GET)
|
|
(3 sysUpTime TIMETICKS op_system_group GET)
|
|
(4 sysContact OCTETSTRING op_system_group GET SET)
|
|
(5 sysName OCTETSTRING op_system_group GET SET)
|
|
(6 sysLocation OCTETSTRING op_system_group GET SET)
|
|
(7 sysServices INTEGER op_system_group GET)
|
|
(8 sysORLastChange TIMETICKS op_system_group GET)
|
|
(9 sysORTable
|
|
(1 sysOREntry : INTEGER op_or_table
|
|
(1 sysORIndex INTEGER)
|
|
(2 sysORID OID GET)
|
|
(3 sysORDescr OCTETSTRING GET)
|
|
(4 sysORUpTime TIMETICKS GET)
|
|
))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
.Ed
|
|
.Sh SEE ALSO
|
|
.Xr bsnmpd 1
|
|
.Sh AUTHORS
|
|
.An Hartmut Brandt Aq harti@FreeBSD.org
|