MIB Designer 3.2 Tutorial
MIB Designer 3.2 Tutorial
A Java SE Application
for Visual MIB Design and Editing
of SMIv1 and SMIv2 MIB Modules
iii
iv
1 System Requirements
1 System Requirements
Minimal system requirements for MIB Designer v3.2:
~ 40 MB free disk space - not including disk space required for the
Java runtime environment installation.
64 MB free RAM (128 MB or more recommended).
Java Runtime Environment (JRE) v1.6 or later installed and the JRE’s
bin directory added to the system’s PATH environment variable.
Java WebStart 5.0 (included in Java JRE 5 or later) if using the Web-
Start distribution version of MIB Designer.
File system that supports filenames with up to 64 characters.
1
2 Installation
2 Installation
There are two different MIB Designer installation packages available for
download from http://www.mibdesigner.com.
The preffered, if Java Web Start is available on your system, is the Java
Web Start download from http://www.mibdesigner.com/MIBDesigner-
WebStart.jnlp.
See section “System Require- The mibdesigner.jar file can be used on all platforms, including
ments” on page 1 for the system Windows, but without start menu integration.
requirements of the supported
platforms.
2.1 Using Java WebStart
The preffered installation option is Java WebStart, because MIB Designer
will be automatically updated with the latest version - unless you deactivate
the WebStart update option.
To start the installation simply click on http://www.mibdesigner.com/
MIBDesignerWebStart.jnlp and follow the instructions.
Once you have started MIB Designer and entered your license informa-
tion, choose File>Install... to install MIB Designer MIB files and reposito-
ry as well as other accompanied files on your system.
Once you have started MIB Designer and entered your license informa-
tion, choose File>Install... to install MIB Designer MIB files and reposito-
ry as well as other accompanied files on your system.
If you are using a restricted license you can upgrade it later without re- Please enter your license including
installing MIB Designer by choosing Help>License… from the main blanks! The license key, which is
menu. case sensitive, must be entered
A MIB file can be specified as command line parameter which is then without any blanks!
compiled and loaded on startup:
2.4 Upgrade
When installed through Java WebStart, MIB Designer will be automati-
cally updated through WebStart on application startup, if a newer version
is available on the MIB Designer web site.
If a newer version of the accompanied file set is available with the new
version, MIB Designer will ask you to install them over the current instal-
lation location. If you confirm the installation, MIB Designer will over-
write existing files with their newer version unless you have activated the
setting “Warn before overwriting files”. See “Other Options” on page 68.
2.5 Uninstall
If MIB Designer has been installed using Java WebStart, then run Note: The files installed by using
MIB Designer’s Install.. menu item
javaws -viewer must be uninstalled manually, if
they are no longer needed.
to bring up the Java WebStart viewer. Select “MIB Designer” from the
cached applications list and use Delete from the context menu to remove
MIB Designer from your WebStart cache. This will also remove any desk-
top integration from your start menu.
If you have not used Java WebStart to run MIB Designer it is sufficient
to remove the mibdesigner.jar file and optionally the accompanied
files installed by MIB Designer on its first startup.
MIB Designer holds its configuration data in the MIBDesigner3.cf
(MIBDesigner2.cf for MIB Designer 2.x) file in your home directo-
ry. To completely uninstall MIB Designer, this file has to be removed
manually. By removing it, you will have to reenter your license informa-
tion - as well as other configurations - when you reinstall MIB Designer.
3
3 What Is MIB Designer?
5
4 Setup
4 Setup
A few things need to be setup, before MIB Designer can be used to edit or
create MIB modules. Please follow the steps set forth below.
1. Use the File>Import menu ( ) to import a single MIB file, check its
syntax and - if it is OK - to add it to the MIB repository and load it for
editing.
2. If the MIB file has errors, a text editor will be opened (shown by
Figure 2-2). The encountered errors are listed above the edit area.
Once the MIB file is correct, the Import button ( ) can be used to
save and import the corrected file. If the file has still errors then these
errors will be displayed in the editor.
6
4 Setup
3. Use the File>Compile MIBs menu ( ) to add a directory or a list of MIB file ZIP archives must have a
files to the MIB repository by updating any existing MIB modules By file extension of ‘.ZIP’ or ‘.zip’ to
opening a directory all files in that sub-tree are sorted by their import be recognized by the MIB com-
dependencies and then loaded into the repository. ZIP archives found piler.
in the sub-tree are opened and the included MIB files are sorted and
loaded into the repository as if the archives were unpacked.
4. After having processed all MIB files, MIB Designer will report any
errors in a message box. The detailed error messages can be viewed by
choosing Details… from that message box. The Compiler Log window
is then shown as illustrated by Figure 2-3. The compiler log table can
be printed from the log table’s context menu and sorted by column by
clicking on the column’s header. By double clicking on a row corre-
sponding to a failed MIB file, thus a row marked with a stop ( ) sign,
the MIB file editor can be opened to correct the syntax error. After
pressing the editors Import button, the corresponding row will be
updated in the compiler log table.
5. Use the File>Add MIBs menu to add a directory or a list of files to the
repository without updating/changing any existing MIB modules. As
for the rest this method behaves similar to the above.
6. Use the File>Import Leniently menu if the MIB module has errors
that you want to correct with MIB Designer. Please check the
imported MIB module immediately after loading as described in sec-
tion “Refactor Object Names and Descriptions” on page 36, because it
may contain errors although it has been loaded successfully. This
option reduces the error checking of the SMI parser to a reasonable
minimum to facilitate the process of correcting broken MIB modules.
Section “Error Messages” on page 74 shows a list of all error messages.
7
4.2 Compiling MIB Files
8
4 Setup
The syntax completion is avail- SMI Editor - The SMI object editor shows the SMI definition of the
able in the SMI Editor and the MIB current node under the Objects and Textual-Conventions root nodes.
File editor. See “Auto Syntax Com- For objects other than a MODULE-IDENTITY construct, the SMI
pletion” on page 40. editor can be used to directly edit the objects definition. By pressing
<Ctrl>-<Space> SMI syntax completion tries to complete the SMI
text. If there is only a single valid completion, then the token (if any)
at the cursor position will be replaced by the completion. If there are
several completions, a popup dialog appears to select the appropriate
completion by pressing <Enter> or double clicking on the item to use
for completion. If there is no completion, then no changes to the text
will be done. To cancel the completion dialog press <ESC>.
SMI Preview/Navigation - The preview and navigation panel provides
a SMI preview of the selected node. In contrast to the editor, the pre-
view SMI panel contains additional navigation comments for easy
navigation through the MIB tree using hyper links. Comparison
results are also displayed in this panel. For more information about
MIB module comparison see “MIB Comparison” on page 55.
The following sections describe which steps are necessary to create a new
SMIv2 MIB module (“Creating a New MIB” on page 11) and how MIB
Designer’s object editing dialogs can be used to edit such a MIB module
(“Editing a MIB” on page 12).
10
5 Using MIB Designer
5.2.1 Import
Before an object from another MIB module can be used or referenced in a
module it must be imported. Objects are imported using the Edit>Im-
ports… menu item (alternatively: <Ctrl-Alt-I> or Import… from the
node context menu) or via the Search MIB Repository dialog (see “Search
MIB Repository for Importing Objects” on page 35). Choosing Edit>Im-
ports opens the Imports window which is shown by Figure 2-1.
To import an object definition or ASN.1 macro from a MIB module:
1. Select the MIB module that defines the object definition from the
Source MIB Module list. If you are unsure where the object is defined,
use the Search MIB Repository function to look it up.
12
5 Using MIB Designer
2. With the Add or Add All buttons, you can select the object to be
included in the MIB modules IMPORT clause.
To remove an object definition or ASN.1 macro from a MIB module:
1. Select the MIB module node under the Imports node in the MIB tree
from which the definition has been imported.
2. Select Edit from the context menu.
3. Select the object definition to be removed in the right table (named
“Imported”) and press the Remove button. If the button is disabled
then the MIB module has still references to this node. You will then
have to remove those references before you can remove the import.
By activating the option “Automatically import SMI macros” in Ed- Caution: When SMI macros are
it>Preferences, MIB Designer automatically imports all SMI macros nec- imported automatically, unneces-
essary for the current module whenever the module is checked by sary MACRO imports will be re-
View>Check. When activated this is also done automatically when saving moved from the imports clause
and MACRO imports will be
a module. grouped at the bottom of each im-
port source statement!
5.2.2 Add
To add a MIB object to the current module, select the object under which
you want to create the new object and choose Add from the Edit menu.
Alternatively, you may choose Add from the context menu. The new ob-
ject is created as the last child of the selected node. The new object has a
default name and an automatically assigned object ID. Further details on
editing MIB objects and an overview of all possible MIB objects and their
editor windows can be found in section “Moving Objects” on page 16.
13
5.2 Editing a MIB
5.2.3 Copy
MIB objects are copied to an inter- A MIB object (and its sub-tree) is copied to the internal clipboard by se-
nal clipboard which is not shared lecting the corresponding node within the MIB tree and pressing <Ctrl-C>
with other applications. (alternatively: , Edit>Copy, or Copy from node context menu). The
copy is identical to the original nodes except for the object names. The
copy’s object names are changed to ‘<original_name>n’, where n is the
number of the copy starting from 0. Its object ID and those of all objects
in the copied sub-tree are adapted when the object is being pasted. When
the sub-tree contains a MODULE-IDENTITY construct, then this object
will be transformed to an OBJECT-IDENTIFIER in the copy, because a
MIB module must contain exactly one MODULE-IDENTITY.
Whenever a node is copied to the internal clipboard, its OID is copied
to the system clipboard. Thus, copying a node can be used to export the
OID of an object as a string to an external application. Because textual-
conventions do not have an OID their object name is copied instead.
Please note that when copying/cutting a sub-tree only the OID of its root
node is copied to the system clipboard.
5.2.4 Cut
A sub-tree or a single MIB object is cut to the clipboard by selecting the
root node of the sub-tree or by selecting a leaf node, respectively and then
pressing <Ctrl-X> (alternatively: , Edit>Cut, or Cut from node context
menu). A cut sub-tree can be pasted more than once, provided that it does
not contain a MODULE IDENTITY node.
A cut sub-tree, or any cut MIB object other than a TEXTUAL-CON-
VENTION, can be pasted to OBJECT IDENTIFIERS (nodes), OB-
JECT IDENTITIES, and MODULE IDENTITIES only. If the cut
object is a TEXTUAL-CONVENTION it can be pasted to the Textual-
conventions node only.
5.2.5 Paste
A sub-tree or a single object cut or copied to the clip-board, can be inserted
beneath a selected node by pressing <Ctrl-V> ( , Edit>Paste, or Paste
from node context menu). If an object name of any of the pasted objects is
already used within the module then it will be renamed by appending 0 to
its name. If its name ends on a number the number will be incremented by
one. The OID of the pasted node (sub-tree) is changed to the next avail-
able OID after the last child’s OID.
14
5 Using MIB Designer
5.2.6 Edit
A selected node is edited by pressing <Ctrl>-E ( , Edit>Edit, or Edit from The prefix of the object ID is given
node context menu). The editor windows vary from object type to object by the parent node and therefore
type, but common to all windows is the Object Definition group. Here the fixed. The OID’s suffix however,
object’s name, ID, status, description and an optional reference can be ed- can be given by one or more dot
separated sub-identifiers (un-
ited. Please note that depending on the edited object some of the above signed numbers).
listed fields may be disabled. Textual conventions, for example, do not
have an object ID. Module identities do not have a status.
Changes to the edited object are not committed until the user closes the
editor window by pressing its Save button. When saving the changes, the
object’s ID and the name are checked for being valid and not ambiguously
defined within the current MIB module. In the case of an invalid object
ID or name, an error dialog is shown and the user may then correct the in-
valid ID or name.
In addition to editing a SMI object through editor dialogs, unreleased
SMI objects can also be edited directly by using the SMI editor (see “Edit-
ing a MIB” on page 12). Within the editor you can enter the SMI specifi-
cation of the selected node in the MIB tree. Only valid SMI syntax may be
saved into the tree by either selecting another node or pressing <Alt>-S.
MIB Designer allows to save a node even if the change renders the whole
MIB module invalid. Thus, it is recommended to check the whole MIB
module by pressing <Alt>-C after all changes have been made to a MIB
module.
1. The inline ASN.1 comment is only available for MIB objects with an
object identifier assignment. 15
5.2 Editing a MIB
If a MIB module is exported with ASN.1 comments should be used rarely, because most MIB browsers are
activated „generate MIB Designer not able to show such comments. Thus, any information that is needed to
comments“ option (see “General” understand a MIB object or module should be described in its DESCRIP-
on page 67) and reimported after- TION attribute.
wards then the generated OID
comments appear as inline com-
The built-in spell checker marks incorrectly spelled words on the fly by
ments. While exporting the mod- a dashed line. To correct a word, a context menu with up to ten sugges-
ule another time, MIB Designer tions can be opened by pressing the right mouse button. If a user diction-
detects that the comment is al- ary has been specified in the MIB Designer preferences (see “Spell
ready there and will not regener- Checking” on page 69) the context menu provides an Add button to add
ate it. the selected word into the user dictionary or to always ignore it.
16
5 Using MIB Designer
Object Name
The Object Name field specifies the node’s name. The name must start
with a lower case letter for all MIB objects except textual conventions. Tex-
tual conventions must start with an upper case letter. In any case, the name
must be unique with the current MIB module.
When changing a name, all references to that name within the same
MIB module will be changed accordingly. For example, if a name of an in-
dex column is changed, then the INDEX clause of the corresponding table
as well as the OBJECTS clause of all OBJECT-GROUP definitions refer-
encing that columnar object will be changed too.
A default object name for new objects can be specified in the preferences
dialog of MIB Designer. It is recommended to use your companies name
and an abbreviation of the product or purpose that uniquely identifies your
set of MIB objects in order to avoid object name clashes with other MIB
modules.
Object ID
The Object ID field specifies the object identifier assigned to the node.
This property consists of a read-only field denoting the parents object
name (OID prefix) and a changeable field for the node’s OID suffix. In
most cases, this suffix is a single sub-identifier which may be any unsigned
integer value between 0 and 232-1. In some cases it may be necessary to de-
fine a node without defining an object identifier for its direct parent, in
particular when defining a module identity that is not the root node of a
new MIB module.
When changing the OID suffix of a node, MIB Designer will not move
the node to the assigned new location until the user refreshes the view ( ).
This provides a more easy way of tracking changes.
Please note that the assigned OID must be unique for all nodes. Also it
is allowed to define different names for the same OID by using an OB-
JECT IDENTIFIER construct, it is not wise to do so, because many tools
available today cannot handle this correctly and there is no need for it. Be-
cause of these reasons MIB Designer does not allow defining more than
one name for an OID.
Because registered OIDs must be globally unique, MIB Designer pro-
vides an easy way to check whether an OID is already assigned to any other
MIB module (in the current MIB repository). By clicking on the Object
17
5.2 Editing a MIB
ID button, the current MIB repository will be searched for any occurrence
of the assigned OID for this object. If the edited MIB module has already
been saved to the MIB repository, occurrences in that MIB module will
also been shown, although it is normally save to ignore them.
Status
The status field specifies the validity of the object definition. If the field is
disabled a status cannot be specified for the given node. The status is then
assumed to be current. The possible values for SMIv2 modules are:
current – The definition is valid.
deprecated – The definition is valid in limited circumstances, but has
been replaced by another. The new definition typically encompasses a
wider scope, or has been changed for ease implementation.
obsolete – The definition is not valid. It was found to be flawed; could
not be implemented; was redundant or not useful; or was no longer
relevant.
Reference
The reference field specifies the source of the definition. It may refer to a
document from another standards organization, or an architectural for a
proprietary system. Although only a single line is displayed at once, multi-
ple lines can be entered. By pressing the Reference button a text editor
will open which allows a more comfortable editing of the reference text.
Like the comment editor, text entered in the reference field is back-
ground checked by the built-in spell checker. Misspelled words are marked
by a dashed red underline. Words can be corrected using a suggestion list
of up to ten words by opening a context menu with the right mouse but-
ton.
Description
By holding down the <Ctrl> but- The description field provides a textual description of the object being de-
ton while pressing the Descrip- fined. By pressing the Description button a text editor will open which al-
tion button, spell checking for the lows a more comfortable editing of the description text. In addition, the
description field can be invoked edited text is background checked for spelling errors. Misspelled words are
directly from the object editor.
marked by a dashed red underline. Words can be corrected using a sugges-
tion list of up to ten words by opening a context menu with the right
mouse button.
Please note that the above descriptions for the common properties of all
objects are not repeated in the following subsections which describe the
special properties of the respective objects.
18
5 Using MIB Designer
Changes made to an object definition will not take affect until the editor
window is closed by pressing the <Save> button. If an editor window is
closed via the <Cancel> button any changes made to the object will be dis-
carded.
20
5 Using MIB Designer
Last-Updated
Specifies the last date and time the current module has been modified in
the ExtUTCTime data type format. The format used is an extended sub-
set of the UTC (coordinated universal time) time format from ASN.1. The
format is [YY]YYMMDDHHmmZ where:
[YY]YY is the 2 or 4 digit year (using 4 digits is required for years after
1999);
MM is the month (01 through 12);
DD is the day (01 through 31);
HH is the hour (00 through 23);
mm is the minute (00 through 59); and
Z is the uppercase letter Z which denotes Greenwich Mean Time
(GMT).
21
5.2 Editing a MIB
The value of the last-updated field property must be identical to the date
and time from the first revision/description clause, if present. Thus, if there
is at least one revision entered, this field will be updated automatically, oth-
erwise it can be updated to the current date and time by pressing the Up-
date button.
Organization
The organization field specifies the name of the organization that has au-
thority over the definitions created in the current MIB module.
Contact
The contact field specifies contact points for technical information.
Revision/Description
The paired REVISION/DESCRIPTION clauses are optionally used to
specify information about the creation and revision of the module in re-
verse chronological order. In order to add a revision, press the Add button.
A new list entry will be added to the top of the list and the Last-Updated
field will be updated too. The new revision is then edited by pressing the
Edit button. The revision editor window allows freely editing the date and
time of the revision and its description or editing the UTC time by a cal-
endar popup dialog. The popup dialog is opened by clicking on the Revi-
sion button. With the Remove button one or more revisions can be
removed from the list.
If revision control is activated (see section “Exporting MIBs to XML,
HTML, XSD, PDF, and Text” on page 38) in the general preferences
menu, then adding a new revision will lock all objects defined in the cur-
rent MIB module, that have not been locked yet through a previous revi-
sion.
Removing the latest revision will unlock all associated objects, thus all
objects that have been added since the preceding revision. Removing an in-
termediate revision will associate the locks of that revision with the subse-
quently revision.
22
5 Using MIB Designer
5.2.14 Textual-Convention
TEXTUAL-CONVENTION definitions are used to create a new type. Basic SMIv2 (SNMPv2/v3) data
Since the basic data types supported by SNMP cannot be dynamically ex- types are INTEGER, Integer32,
tended, new types can only be defined by adding constraints to an existing Gauge32, Counter32, Counter64,
base type or a reduction in length of strings. Unsigned32, OBJECT IDENTIFIER,
BITS, OCTET STRING, and Opaque.
Although the textual-convention editor contains an Object Definition
group (see Figure 2-11), the object name of a textual-convention must
start with an upper case letter. The properties shown by the textual-con-
vention specific group are described below.
Figure2-11: Textual-convention
editor window 23
5.2 Editing a MIB
Syntax
The syntax field specifies the type of the syntax. The type string is shown
in a read-only text field without showing possible enumeration or range
values. The complete syntax definition is available by the field’s tool tip.
The syntax definition can be edited by pressing the Edit button. The syn-
tax editor dialog window appears where you can choose from all possible
built-in syntax types, type assignments and textual-conventions that were
imported or were defined in this MIB module.
Adding an object import from If you want to use a type assignment (SMIv1) or textual convention
within the syntax editor has im- (SMIv2) that is not already imported then you can use the Import button
mediate effect although it can be to select the definition and add it to the modules IMPORTS clause.
undone after the MIB object editor Additionally, the syntax editor window lets you specify valid string sizes
is closed (regardless whether
changes are saved or not).
and number ranges as well as enumerated values.
Using the context menu is recom- When defining enumerated values, you may add associated ASN.1 com-
mended for multi-line comments. ments by either using the Comment column of the comment’s context
menu of the Enumeration table.
A scalar type cannot have ranges and enumerated values at the same
time. Non-scalar types, for example OCTET STRING based types, can
have size (“range”) restrictions only.
Display-Hint
The DISPLAY-HINT property, which need not be present, gives a hint as
to how the value of an instance of an object with the syntax defined using
this textual convention might be displayed. It can only be specified for
types that are based on integer or octet string. Please refer to RFC 2579
section 3.1 for further details on the allowed formats.
24
5 Using MIB Designer
Syntax
Specifies the syntax of the object-type in the same manner as the syntax
clause of a textual convention (see subsection “Textual-Convention” on
page 23).
Max-Access
Specifies the maximum allowed access to the leaf object. Possible values
are:
not-accessible – The object-type is a column in a table used as an
index (or an index part) and may not be used as an operand in any
operation.
accessible-for-notify – The object-type is special operand for event
report operations.
read-only – The object-type may be an operand in only retrieval and
event report operations.
read-write – The object-type may be an operand in modification,
retrieval, and event report operations.
read-create – The object-type may be operand in modification,
retrieval, and event report operations. Additionally, it may be an oper-
and in a modification operation creating a new instance of the object-
type.
25
5.2 Editing a MIB
Default Value
Specifies an acceptable value which may be used when an instance of a row
is created via an SNMP modification request and the object-types value is
not initialized by that request. A default value cannot be specified for index
objects of tables.
For enumerated and BITS syntaxes the default value have to be chosen
from the available values by using the Choose button.
To remove the DEFVAL clause from an OBJECT-TYPE definition
empty the default value field (for enumerated or BITS values use the Clear
button of the default value selection dialog accessible through the Choose
button).
Units
Specifies a textual description of the units associated with the data type.
5.2.16 Table
Two OBJECT-TYPE constructs along with a SEQUENCE construct
specify a definition for SMI table object. An SNMP table contains rows
and columns. A table cannot be an operand or result of an SNMP opera-
tion. Thus, the maximum access for the two object-type constructs defin-
ing a table is not-accessible. Because a table is defined by two object
definitions, the table editor window shown by Figure 2-13 has two Object
Definition groups, named Table and Entry.
26
5 Using MIB Designer
By convention the name for the table object definition ends with “Table”
and the name for the entry (row) object ends with “Entry”.
The description property of the table object should describe the infor-
mation in the table or its usage as well as estimations on the maximum
number of rows and any objects whose values are associated with the table.
The description property of the entry (row) object should document
whether rows can be created or deleted via SNMP operations, and if so,
then what is required for this to happen. It should supplement the descrip-
tion of the RowStatus object of such a table.
Index / Augments
The INDEX / AUGMENTS property specifies how rows are indexed in
the table. The INDEX clause lists the ordered index items for a table. Typ-
ically, the index items are names of not-accessible columns in the table. If
a table consists of index columns only, then the last index column has to
be read-only. In addition, read-only index columns are allowed when port-
ing SMIv1 MIB modules to SMIv2.
The AUGMENTS clause documents a special relationship between two
tables. The item specified is the entry object of another table, the base table.
27
5.2 Editing a MIB
For every row in the augmenting table there has to be exactly one corre-
sponding row in the base table with the same index value.
The total length of all index-sub-identifiers plus the length of the OB-
JECT-TYPE’s OID must not exceed 128 sub-identifiers.
Columns
The Columns group specifies the columns that are part of the table. In or-
der to add (append) a column to the table, press the Add button below the
columns overview table. A column may then be moved within the table by
editing its OID. A column may be modified by selecting it and then press-
ing the Edit button. As usual, one or more columns may be removed from
the table by selecting the appropriate row(s) in the columns table and then
pressing the Remove button.
5.2.17 Notification
The NOTIFICATION-TYPE construct is used to specify the events that
can be reported by an agent (i.e., a notification originator). The OID value
assigned to a notification-type is sent with a notification in order to iden-
tify it. Figure 2-14 shows the notification-type editor window with its Ob-
ject Definition and Objects group.
Objects
The optional OBJECTS clause can be used to specify one or more scalar
or columnar objects whose values describe the event. Objects can be added
and removed from the notification-type definition by pressing the Choose
or the Remove button respectively. Alternatively, you may press Choose
28
5 Using MIB Designer
to open a shuffle dialog with which you can choose the objects that must
be at least provided with a notification.
By clicking on the right table’s header of shuffle dialog you may sort the
objects in ascending or descending order.
5.2.18 Group
The OBJECT-GROUP and NOTIFICATION-GROUP constructs are
used to define a collection of related object type definitions and notifica-
tion type definitions respectively. Consequently, both editor windows are
very similar. They consist of an Object Definition group and an Objects
group.
Every object type with a value for the MAX-ACCESS clause other than
“not-accessible” must be a member of at least one object group. A similar
rule applies to notifications. Each notification type must be a member of
at least one notification group.
Objects
The Objects group specifies one or more scalar or columnar objects that
are related to each other. Objects can be added and removed by pressing
the Choose or the Remove button respectively. The Choose button
opens a shuffle dialog which can be used to add all or any subset of avail-
able objects to the group. Analogous to the objects editor of the NOTIFI-
CATION-TYPE construct, objects may be sorted in ascending or
descending alphabetical order.
Please note that the object types grouped through an OBJECT-
GROUP should conform to the status clause of that object group defini-
tion.
29
5.2 Editing a MIB
Modules
Specifies a non-empty list of MIB modules for which compliance require-
ments are being specified. Each MIB module is named by its module name
which can be selected from a combo box, which is shown when clicking on
a list item. The module name may be (left) blank to refer to the encom-
passing MIB module. The details of a compliance requirement can be ed-
ited by selecting the corresponding module name and then pressing the
Edit button.
Mandatory Groups
The Mandatory Groups clause specifies a possibly empty list of names of
object or notification groups within the correspondent MIB module which
are unconditionally mandatory for implementation.
30
5 Using MIB Designer
Product-Release
The Product-Release field contains a textual description of the product re-
lease which includes this set of capabilities.
31
5.2 Editing a MIB
Supported Modules
The Supported Modules clause specifies a possibly empty list of MIB mod-
ules for which the agent claims a complete or partial implementation. De-
tails about the implementation of a module can be edited by selecting it
and then pressing the Edit button.
Figure2-17: Agent-capabilities
editor window The details about a module implementation can be edited by using the di-
alog window shown by Figure 2-18.
Includes
The Includes field specifies a non-empty list of MIB groups associated with
this supported MIB module which the agent claims to implement.
Variations
The Variations field specifies a possibly empty list of objects or notifica-
tions which the agent implements in some variant or refined fashion with
respect to the correspondent OBJECT-TYPE or NOTIFICATION-
TYPE definition. In order to edit the refinement details of such an object
or notification, select the corresponding object name and details will be
shown in the Details group where they can be modified too.
32
5 Using MIB Designer
33
5.3 Built-in Spell Checking
are added to the IMPORTS clause of the currently edited MIB module. If
an object is already imported by the current module, a warning message
will be displayed. If an object is a TRAP-TYPE or NOTIFICATION-
TYPE an error message will be displayed, since those objects cannot be im-
ported by a MIB module.
In addition to the search options available by the Find MIB Object di-
alog shown by “MIB repository selection dialog” on page 6, the search di-
alog for the searching the MIB Repository provides the search option
Imports which allows to search import references. This option searches ref-
erences in IMPORT, MODULE-COMPLUANCE, and AGENT-CA-
PABILITIES clauses that match the specified search pattern. To narrow
the search results to references of a certain set of MIB modules, a search
pattern for MIB module names followed by a colon (‘:’) may be prepend-
ed.
The Search and Replace function of MIB Designer can be used to re-
place object names and/or descriptions by a regular expression.
To search and replace object names and/or descriptions in a sub-tree of Do not change OIDs of released
a MIB module, select the root of the sub-tree in the MIB tree and then MIB objects as this would violate
choose Edit->Replace ( ) menu. A dialog that is similar to the search di- SMI rules and break existing appli-
alog shown by Figure 2-20 is displayed. The search option for OIDs is dis- cations.
abled, because it is better (and easier) to change OIDs by rearranging sub-
trees with Copy & Paste, Drag & Drop, or changing a sub-tree OID by
editing a MIB object.
Enter the search expression in the search field and the replacement ex-
pression or string into the replace field. The replace expression may con-
tain regular expression group references ($1, $2 etc.) to include parts of the
matching string into the replacement string.
For each match found, you will be asked whether it should be replaced
or skipped. When an object is locked, because it has already been released,
it will not be included in the search result. If you choose to replace all oc-
currences you can undo (and redo) all replacements at once. Otherwise
undo is available step by step.
37
5.6 Saving and Exporting a MIB
38
5 Using MIB Designer
In order to import a MIB file with SMI standard syntax checking, use
the green import icon ( ) or the corresponding menu item in the File
menu.
In order to import a MIB file with lenient syntax checking, use the yel-
low import icon ( ) or the corresponding menu item in the File menu.
((\d+.*)|(SIZE\s*\(.*\)))\)
Substitution Expression:
$1
3. The under bar “_” character is not allowed in enumeration labels. To
delete the “_” and change the following letter to uppercase use:
Search Expression:
([a-z][a-zA-Z0-9]*)_([a-zA-Z0-9]+\s*\(\d+\))
Substitution Expression:
$1\u$2
42
6 MIB Design
6 MIB Design
This section contains descriptions, explanations, and solutions for the top
ten MIB Design errors. These issues have been collected over years from
support questions and consulting projects. Soon it turned out, that a few
misunderstandings of the Structure of Management Information RFCs
produce a majority of over 80% of the syntax errors. This section should
help MIB authors to identify and avoid these, unfortunately very common,
errors in order to increase interoperability and usability of SNMP based so-
lutions.
Readers are encouraged to view also the following documents:
Guidelines for Authors and Reviewers of MIB Documents (RFC 4181).
Configuring Networks and Devices with Simple Network Management
Protocol (SNMP), section 3, Designing a MIB Module (RFC 3512).
Why do so many (enterprise) MIB modules contain syntax errors and oth-
er design flaws? The main reason is probably, a lack of good MIB design
tools (editors and compilers) in the early years of SNMP. MIB authors re-
lied on inaccurate implementations of MIB parsers that were not devel-
oped to do strict syntax and semantic checking but rather designed to be
error-forgiving. With an increasing number of available SNMP tools, in-
teroperability problems also increased caused by the diversity of different
error checking levels and capabilities.
Another reason for many interoperability issues is likely to be the “bad
habit” of many MIB compilers and tools to provide customizable error re-
porting levels allowing users to disable reporting of errors/warnings al-
though these errors - or even more worse - warnings report SMI standard
violations.
MIB Designer fills this gap with an unreached combination of a SMI
conforming MIB compiler with strict syntax checking and an intuitive
graphical user interface. MIB Designer has only two levels of syntax check-
ing: lenient and SMI standard. With the second level you can be sure to
avoid interoperability issues caused by SMI standard violations. The le-
nient level should be used to more easily fix a MIB module only!
The following list of common MIB Design issues is by far not complete by
means of a complete collection of MIB design errors or pitfalls. Neverthe-
less it tries to shed some light on the most commonly made and fewest un-
derstood errors:
Every SMIv2 MIB module must define exactly one MODULE-
IDENTITY immediately following IMPORTS.
43
6 MIB Design
Descriptors must start with a lower case letter and MIB module names
and type or textual convention definitions names with an upper case
letter.
In SMIv2 sub-typing and enumerating values are forbidden in
SEQUENCE clauses.
Descriptors must not contain underscore (‘_’) characters
The ASN.1 primitive type ‘INTEGER’ should only be used for
named-number lists in SMIv2.
Every accessible OBJECT- and every NOTIFICATION-TYPE defini-
tion must be contained in at least one object group.
The ExtUTCTime format used for LAST-UPDATED and REVI-
SION clauses is [YY]YYMMDDhhmmZ.
A TEXTUAL-CONVENTION cannot refer to a previously defined
TEXTUAL-CONVENTION.
The elements in a SEQUENCE clause must match a table’s lexico-
graphic ordered columns exactly.
Mixing SMIv1 and SMIv2 constructs and clauses in the same MIB
module.
44
6 MIB Design
Figure2-22: MODULE-IDENTITY
does not immediately follow IM-
The attentive reader will have recognized a second error in the above ex-
PORTS.
ample: The missing import of the MODULE-IDENTITY macro (see
RFC 2578 §3.2).
MIB parsers that differentiate between SMIv1 and SMIv2 (what any
validating MIB parser should) will report an error about the unexpected
MODULE-IDENTITY construct in the above example. A correct version
of the above MIB module would read as follows:
45
6 MIB Design
46
6 MIB Design
47
6 MIB Design
MIB Designer offers the option to import a MIB module with a lenient
MIB compiler mode and then adding the missing object group entries by
using a shuffle dialog that shows the unassigned OBJECT-TYPEs or NO-
TIFICATION-TYPEs respectively.
Although this would be legal, it is not recommended for the following rea-
sons:
1. There cannot be associated any parsable information to an ASN.1 type
assignment. In the above example important information included in
the description clause would be lost.
2. RFC 2576 §2.1.1 demands that all ASN.1 type assignments should be
converted to TEXTUAL-CONVENTION definitions in a SMIv2
MIB module.
3. Although MIB Designer can resolve such derivation chains even across
several MIB modules, some MIB compilers cannot which could cause
interoperability issues. For example, there are MIB compilers that
would not recognize that AppnTOSPrecedence in the above example
has inherited the DISPLAY-HINT “255a” from DisplayString.
problematic, since most MIB authors order the columns by the last sub-
identifier. But if this is not the case, for example if columns have been add-
ed by a new revision of a MIB module, then attention has to paid on the
order of the elements in the corresponding SEQUENCE clause.
The following example illustrates an error caused by wrong ordering of
the SEQUENCE elements. To correct the error, one would have to swap
mibdesignDontsInvalidSeqCol3 and mibdesignDontsInvalidSeqCol2 en-
tries as indicated by the red boxes. Changing the sub-identifiers of those
columns is not allowed by a revision, because this would change the behav-
ior of the table on the wire.
from SMIv2 to SMIv1. See RFC 3584 for situations where an automatic
conversion is not completely possible.
Any new SNMP MIB module should be written in SMIv2 (the corre-
sponding RFCs 2578, 2579, and 2580 are STANDARD). That’s why
MIB Designer focusses on SMIv2 and does not allow to write new MIB
modules in SMIv1. Nevertheless, MIB Designer warns MIB author’s when
defining a NOTIFICATION-TYPE that is not backward-compatible
with SMIv1 and SNMPv1 (see RFC 3584 §3 for details), because the NO-
TIFICATION-TYPE’s second to last sub-identifier is not zero. Although
RFC 3584 defines a mapping for such notifications to SNMPv1 traps, it
is wise to avoid such notification definitions for better interoperability.
52
7 Revision Control
7 Revision Control
Even a released MIB module that is already used by many sites may require
maintenance over time. According to the SMI rules, changes to a released
MIB module are subject to some restrictions which guarantee that changes
are compatible with existing implementations of that MIB specification.
Although MIB Designer cannot enforce all of these restrictions, it provides
powerful means to prevent users from making incompatible changes.
MIB Designer has a revision control mechanism that can be activated
via the Edit>Preferences menu. When this mechanism is activated, a re-
vision of a MIB module may be released by adding a revision note to its
MODULE-IDENTITY construct (see Figure 2-9). Whenever a MIB
module revision is being released, all objects new to that revision will be
locked. Locked objects are shown in the MIB tree with underlined object
name. The restrictions that apply to locked objects are listed below:
OID and object name may not be changed.
Objects may not be moved within the MIB tree nor removed from the
MIB.
The only way to delete an object is to set its status to obsolete. If a
table’s status is set to obsolete, then MIB Designer will set the status of
all columns to obsolete too. All objects referencing obsolete objects must
also have an obsolete status.
Descriptions may only be changed for clarification. The behavior of
the object may not be changed.
Object lists which are part of OBJECT-GROUP, NOTIFICTION-
GROUP, NOTIFICATIONS, MODULE-COMPLIANCE, and
AGENT-CAPABILITIES may not be changed. The INDEX clause of
a table may not be changed neither.
The SYNTAX clause of TEXTUAL-CONVENTION or OBJECT-
TYPE definitions may be changed only if it is an enumeration. Then,
new enumerations may be added. Existing labels may be changed only
for clarification purposes.
Objects added to a MIB module after it has been released, are not subject
to any restrictions. These objects are displayed not underlined in the MIB
tree and may be directly edited with the SMI editor.
53
7 Revision Control
Unlocking a SMIv2 MIB will re- If revision control is enabled, all MIB modules imported into MIB De-
move all information about which signer’s repository will be locked. Sometimes it might be useful to edit an
objects belong to which revision. imported module as if it has not been released yet, for example, if the MIB
To retain this information, the lat- module has never been released yet and has been imported by MIB De-
est revision information can be re-
moved from the MODULE-
signer. The Extra>Unlock MIB menu can then be used to unlock the MIB.
IDENTITY construct instead. Since SMIv1 modules do not have a MODULE-IDENTITY construct,
the revision control is very limited. Nevertheless, the Extra>Lock MIB
menu can be used to entirely lock a MIB.
54
8 MIB Comparison
8 MIB Comparison
MIB Designer may be used to visually compare MIB modules. This un-
equaled feature shows the differences between two MIB modules indepen-
dently from their formatting. It provides an easy way of tracking the
differences between releases of MIB modules.
In order to be able to compare two MIBs, they must be named differ-
ently and both opened. If both MIBs have to same module name, then
they can be imported one after the other. In doing so, the first MIB mod-
ule imported should be the older revision of the MIB and saved under a
different name before the second one is imported.
The current MIB module may be compared with any other loaded MIB
module by selecting the Extra>Compare… menu item. After selecting the
comparative MIB module the objects of the current module that differ
from objects of that module will be displayed with an altered background
color in the MIB tree as shown by Figure 2-30.
Green – The object has been added to the current module, thus it is
not part of the comparative module.
Yellow – The object differs from the corresponding object of the com-
parative module.
Magenta – The object has been changed in an incompatible way, for
example, an OBJECT-TYPE has been changed into an OBJECT-
IDENTIFIER. Thus, magenta indicates obvious violations of SMI
rules.
Black – The object has been deleted by changing its STATUS to obso-
lete.
For yellow and dark gray colored objects only, parts that differ from the
corresponding comparative object are shown in the SMI preview as under-
lined text (provided that HTML preview is enabled). An object and its
comparative counterpart can be displayed side by side by choosing the
Show menu item from the object node’s context menu.
The results of a comparison can be cleared for the current module by
choosing Extra>Clear Comparison from the main menu.
56
9 SMI Conversion
9 SMI Conversion
Within the Extra menu, MIB Designer provides automated SMI version
conversion between SMIv1 and SMIv2 and vice versa. Although a fully au-
tomated conversion is not possible (and eligible), MIB Designer can save
a lot of repetitive work.
58
9 SMI Conversion
61
10 Correction
10 Correction
MIB Designer provides some auto correction functions for ease of correc-
tion of common SMIv2 errors.
62
11 Tools
11 Tools
11.1 Tool Configuration
External tools like a PDF viewer, SNMP tool, or code generator program
like AgenPro 2 can be easily integrated with MIB Designer. Choose
Tools>Configure from the main menu to configure an external program
for usage with MIB Designer with the dialog shown on the left.
In the above example, four tools have been configured. Each tool is list- Figure2-31: Tool Configuration
ed by its title and gets populated in the Tools>Run Tool menu by the same
order as displayed in the configuration dialog.
To add a new tool, press the Add button and the Tool Editor dialog will
be displayed where the tool can be defined by the following properties:
A title (required), which is displayed under the Tools>Run Tool
menu.
The path of the tool’s executable (required).
An optional list of command line parameters. To allow a closer cou-
pling between MIB Designer and external tool, a set of macros can be
used in the parameter field. For an overview about available macros see
the table below.
An optional working directory for the external tool.
63
11.1 Tool Configuration
MACRO Description
$MODULE_NAME This macro will be replaced by the currently edited MIB
module name when the tool is executed.
$MODULE_AS_HTML_FILE[=<moduleName>] The current module (or the MIB module with the specified
name after the optional = sign) is exported as a HTML file
into a temporary file. The macro is then replaced by the file
name of the temporary file on the tool’s command line.
$MODULE_AS_PDF_FILE[=<moduleName>] Same as above, except that the MIB module is exported as a
PDF file.
$MODULE_AS_TXT_FILE[=<moduleName>] Same as above, except that the MIB module is exported as a
plain text file.
$MODULE_AS_XML_FILE[=<moduleName>] Same as above, except that the MIB module is exported as a
XML file.
$MODULE_AS_XSD_FILE[=<moduleName>] Same as above, except that the MIB module is exported as a
XML schema file.
$REPOSITORY This macro is replaced by the path to the MIB repository of
MIB Designer. This macro can be used to run command
line versions of MIB Explorer and AgenPro 2.
$SELECTED_OID This macro is replaced by the object identifier of the cur-
rently selected node in the MIB tree of the edited MIB mod-
ule. If the node does not have an OID (e.g. a textual
convention) then “0.0” is inserted instead.
Table 1: Macros for the tool
configuration.
To remove a tool from the configuration, select the tool in the list and press
the Remove button. To change the order of the tools in the run menu, se-
lect a tool and press the Move Up or Move Down button.
The tables that follow provide a few example tool configurations that
might be helpful illustrate the capabilities of the tool integration interface.
The PDF viewer tool will use Adobe® Acrobat® to view the cur-
rently edited MIB module in its PDF representation.
The SNMP4JCLT Sub-Tree Browser walks the sub-tree speci-
fied by the object identifier of the selected node in MIB Designer’s
MIB tree by using GETBULK SNMPv2c requests. The target SNMP
agent is the localhost on port 161. The community used is “pub-
lic”. For more information on the command line parameters of
SNMP4J see the snmp4jclt_usage.txt file.
On a Windows system, the Dump HOST-RESOURCES-MIB tool
dumps the text of the HOST-RESOURCES-MIB into the MIB
Designer tool log.
The AGENT++ Stub Generation tool executes AgenPro with
the current MIB module name as the code generation project name.
64 Of course, one needs to create and save the project under that name by
11 Tools
using the AgenPro GUI before one can successfully run the tool.
When MIB Designer and the AgenPro project share the same MIB
repository, this tool definition automates the stub generation process.
65
11.2 Tool Execution
66
12 Preferences
12 Preferences
With the preferences dialog application wide settings can be defined and
the behavior of MIB Designer can be customized. The individual settings
are described in the following sections. By pressing the Save button any
changes made to the preferences will be applied (except Look&Feel chang-
es) and MIB Designer will then scan the MIB repository for available MIB
modules. You can continue work while scanning or close the progress dia-
log if you do not want to wait until the scan is finished.
12.1 General
The general preferences section provides three sections for MIB compiler,
MIB generation, and other settings.
Subsequently added objects will be placed at the end of the MIB mod-
ule.
Order Generated Objects by Type First - Ensures that the objects are
ordered by their type first. Within each category the order is deter-
mined by an eventually enabled preserve option (above) and the lexi-
cographic ordering of the object’s OID. The order of object type
categories is as follows:
MODULE-IDENTITY
TEXTUAL-CONVENTION
OBJECT-IDENTIFIER, OBJECT-TYPE, OBJECT-IDENTITY
TRAP-TYPE, NOTIFICATION-TYPE
OBJECT-GROUP
NOTIFICATION-GROUP
MODULE-COMPLIANCE
AGENT-CAPABILITIES
12.2 Repository
The Repository setting defines the directory to store compiled MIB mod-
ules, see also section “Creating a MIB Repository” on page 6.
Compress compiled MIB modules in repository - When this option
is selected (default), the compiled MIB modules will be GZIP com-
pressed stored in the MIB repository to save disk space. When you
share the MIB repository with AgenPro prior to v2.5 or MIB Explorer
68
12 Preferences
12.3 View
12.3.1 Look & Feel
The Look & Feel setting determines the overall appearance of MIB De-
signer. There are several built-in look and feels that you can choose from.
MIB Designer needs to be restarted before changes will take effect.
Use SMI object type specific icons - When activated (default), the
node icons displayed in the MIB tree reflect the type of the SMI object
represented by the node. See also “MIB-Tree Colors and Icons” on
page 33. When deactivated, the tree icons of the current look&feel are
used.
12.5 Defaults
For new object creation, default values can be specified for common at-
tributes of SMI objects. Specifying a default value can ease object creation.
Default values can be specified for the following attributes:
Object name - Defines the default object name for new objects. It is
recommended to set this value to the mnemonic of your company or
organization. You will then only have to append the individual object
name when creating new objects.
OID increment - Some organizations prefer to leave holes in object
numbering to be able to insert objects at later time (otherwise they
could only be appended on the same level). The default is 1 which
leaves no holes.
69
12.6 Syntax Highlighting
Syntax - The default syntax should be set to the syntax of the majority
of your MIB objects to facilitate editing, for example OCTET-
STRING.
Access - The default access for new OBJECT-TYPE definitions.
12.7 Printing
Print colored - If checked, syntax highlighted text is printed with the
colors defined in “Syntax Highlighting” preferences. Otherwise only
the text styles defined therein are used.
Print header - Prints the MIB module name as header.
Print footer - Prints footer with print date and page number.
Print line number - Prints line numbers.
70
13 Trouble-Shooting
13 Trouble-Shooting
This section provides information and guidance on how to approach the
following issues:
License information is not accepted.
MIB file does not compile.
How to increase the maximum memory size for MIB Designer.
MIB objects seem to be read-only.
SMI compiler reports error 1000 without an error description.
How to get support if MIB Designer hangs or otherwise does not
work as expected.
You can check a MIB module for syntax errors at any time by using
View>Check.
5. If the steps above cannot solve your problem, ask for support at sup-
[email protected].
javaws -viewer
and then selecting the Advanced tab of the Java Control Panel. Check
the option Show Console in the Java-Console section.
Then run MIB Designer again and the console output will be shown in
a window.
73
14 Error Messages
14 Error Messages
The following table list the error messages of the MIB compiler. Most error
texts contain placeholders, like <X>, <Y>, etc., which are replaced by the
MIB compiler with values describing the context of the error. Please see the
description text for an explanation of those placeholders.
.
The file <X> could not be read, please check access rights.
0010 The length of identifier <X> exceeds 64 characters (RFC2578 §3.1, §7.1.1, §7.1.4).
It is recommended to use only identifiers with a length of less than 32 characters for interoperability
issues. Identifiers that exceed 64 characters in length must be avoided.
0050 Encountered lexical error at …
The parser encountered a string it did not expect. Please look at the list of expected tokens carefully
in order to determine the trouble cause. If the parser complains about a SMIv2 keyword like MAX-
ACCESS, please check whether the first statement after the IMPORTS clause is a MODULE-
IDENTITY definition. This is a requirement for a SMIv2 MIB module (RFC2578 $3).
1001 The DISPLAY-HINT clause value “token1” at row r, column c is invalid (RFC2579 §3.1)
The DISPLAY-HINT clause does not correspond to any of the allowed formats for INTEGER or
OCTET STRING base types.
1002 The UTC time value “token1” at row r, column c does not match the mandatory format YYM-
MDDhhmmZ or YYYYMMDDhhmmZ (RFC2578 §2)
The UTC time value does not correspond to the format YYMMDDhhmmZ or YYYYMMDDh-
hmmZ where
YY - last two digits of year (only years between 1900-1999)
YYYY - last four digits of the year (any year)
MM - month (01 through 12)
DD - day of month (01 through 31)
hh - hours (00 through 23)
mm - minutes (00 through 59)
Z - denotes GMT (the ASCII character Z)
1050 The clause <X> is not allowed within this context.
There are several clauses in SMI that are optional, but if specified those clauses need to be consistent
with other clauses in the object definition. Examples for such clauses are the ACCESS, MIN-
ACCESS, and SYNTAX clauses in MODULE-COMPLIANCE constructs, which must not be
present for variations of NOTIFICATION-TYPEs.
74
14 Error Messages
The MIB module <X> could not be found in the MIB repository and neither in the MIB modules
being compiled. Check whether to MIB module name is not misspelled (this is often the case for
older RFC MIBs).
1101 Imported MIB module <X> contains a circular import.
The MIB module <X> imports from a module that either imports itself from <X> or any other
module in the import chain imports from a preceding module.
1102 MIB module <X> is imported more than once.
The ASN.1 rules about IMPORTS that SMI is based on require that an import source is defined
not more than once in a module.
1110 <X> imported from MIB module <Y> must be imported from <Z> instead.
For historical reasons, SMI requires to import the MACRO definitions SMI is based on from some
ASN.1 modules. For SMIv1 and SMIv2 it is defined which MACRO (construct) is imported from
which ASN.1 module. Since those ASN.1 modules (e.g. SNMPv2-SMI) are not SMI themselves,
the MACRO definitions have to be removed in order to be able to compile them.
1111 Missing import statement for <X> (RFC2578 §3.2).
To reference an external object, the IMPORTS statement must be used to identify both the descrip-
tor and the module in which the descriptor is defined, where the module is identified by its ASN.1
module name.
1112 Imported object <X> is not defined in MIB module <Y>.
Use the Edit>Search MIB Repository to search for the MIB module that defines <X>.
1113 Object <X> is imported twice from MIB module <Y>.
Notification and trap type definitions as well as SEQUENCE constructs cannot be imported by
other MIB modules.
1150 Wrong module order within file.
The MIB file that failed to compile contains more than one MIB module and the order of those
MIB modules does not correspond with their import dependencies.
1200 The SYNTAX clause of the columnar OBJECT-TYPE definition <X> does not match with
the SYNTAX clause of the corresponding SEQUENCE definition.
The object <X>’s syntax differs in a SEQUENCE definition from its OBJECT-TYPE definition.
1202 The OBJECT-TYPE <X> has inconsistent maximum access (RFC2578 §7.3).
An object <X> has a MAX-ACCESS or ACCESS clause that does not match its context (RFC2578
§7.3). For example, a columnar object must not have a MAX-ACCESS value of “read-write” if any
other columnar object in the table has a MAX-ACCESS value of “read-create”.
75
14 Error Messages
1210 The conditionally GROUP clause <X> must be absent from the corresponding MANDA-
TORY-GROUPS clause (RFC2580 §5.4.2).
The object reference <X> must be part of any object group specified as conditionally or mandatory
for this compliance module.
1212 Only ‘not-implemented’ is applicable for the ACCESS clause of the notification type variation
<X> (RFC2580 §6.5.2.3).
If the notification has to be implemented, then the ACCESS clause should be removed.
1220 The CREATION-REQUIRES clause of variation <X> must only be present for conceptual
row definitions (RFC2580 §6.5.2.4).
The CREATION-REQUIRES clause must not be present unless the object named in the correspon-
dent VARIATION clause is a conceptual row, i.e., has a syntax which resolves to a SEQUENCE
containing columnar objects.
1221 Only columnar object type definitions with access read-create may be present in the CRE-
ATION REQUIRES clause of variation <X> (RFC2580 §6.5.2.4).
Other objects and columns cannot be created and thus they cannot participate in a row creation.
1500 Unresolved syntax reference <X>
The syntax (data type) <X> is not defined in the parsed MIB module and it is not imported from
another MIB module. Use the Edit>Search MIB Repository function to search the MIB repository
for object name <X> and add the corresponding IMPORT FROM clause for <X>.
1501 Unresolved object reference <X>
The object name <X> is not defined in the parsed MIB module and it is not imported from another
MIB module. Use the Edit>Search MIB Repository function to search the MIB repository for
object name <X> and add the corresponding IMPORT FROM clause for <X>.
1502 The object <X> must be defined or imported (RFC2578 §3.2).
The object <X> is not defined in the parsed MIB module and it is not imported from another MIB
module. Use the Edit>Search MIB Repository function to search the MIB repository for object
name <X> and add the corresponding IMPORT FROM clause for <X>.
1600 The object definition <X> references a <Y> definition, expected a reference to an OBJECT-
TYPE conceptual row definition instead.
The AUGMENTS clause, for example, requires that the referenced object definition is a conceptual
table definition, i.e., has a syntax which resolves to a SEQUENCE containing columnar objects.
1601 The GROUP clause <X> references a <Y> definition, expected a reference to an OBJECT-
GROUP or NOTIFICATION-GROUP instead (RFC2580 §5.4.2).
76
14 Error Messages
1602 The object reference <X> points to a <Y> definition, expected a reference to an OBJECT-
TYPE or NOTIFICATION-TYPE definition instead.
The reference to object <X> must be of type <Y> but it is of type <Z>.
1800 The SEQUENCE clause of the table entry definition <X> does not match the order or num-
ber of objects registered for that table at entry <Y>.
The column references in the SEQUENCE definition of a table must be lexicographically ordered
by their object-identifiers. The object name Y is the name of the first object reference in the
SEQUENCE definition that does not match the order of columnar objects of that table.
1801 The SEQUENCE definition for table entry <X> does not match with the number of child
objects of that node.
All objects registered below a table entry node must be included in the SEQUENCE definition of
that table entry.
1810 The OBJECT-TYPE <X> has an invalid index definition (RFC2578 §7.7).
The OBJECT-TYPE <X> has an invalid INDEX clause, i.e., an empty clause.
1811 The OBJECT-TYPE <X> has an invalid index definition because <Y> may be negative
(RFC2578 §7.7).
Index values have to be encoded as OID suffixes on the wire. Since OID sub-identifiers are 32-bit
unsigned integer values, negative values cannot be encoded over the wire. See RFC2578 §7.7 for
more details.
1812 The OBJECT-TYPE <X> has an invalid index definition (RFC2578 §7.7) because the mini-
mum total index length exceeds 128 which is the maximum SNMP OID length.
Instances of this OBJECT-TYPE <X> can never be accessed through the SNMP protocol, because
the identifying OID is longer than 128 sub-identifiers and thus cannot be represented in SNMP.
1813 The OBJECT-TYPE <X> has an invalid index definition (RFC2578 §7.7) because the sub-
index with the IMPLIED length can have a zero length.
The OBJECT-TYPE <X> has an invalid INDEX clause, because <Y> does not refer to a columnar
OBJECT-TYPE definition. An OBJECT-TYPE is columnar object, if it is part of a table defini-
tion. See RFC2578 §7.7 for more details.
1851 OBJECT-TYPE definition <X> is a scalar and therefore it must not have an INDEX clause
(RFC2578 §7.7).
Scalar objects have a fixed instance identifier (“index”) of ‘0’, thus an INDEX clause must not be
specified.
77
14 Error Messages
2000 Duplicate object registration of <X> after <Y> for the object ID <Z> (RFC2578 §3.6).
Once an object identifier has been registered it must not be reregistered. An object registration is any
object definition other than OBJECT-IDENTIFIER.
2010 Illegal object registration of <X> under <Y> for the object ID <Z>.
For example, it is not legal to register objects in the sub-tree of an OBJECT-TYPE registration.
3000 The default value of OBJECT-TYPE <X> is out of range (RFC2578 §7.9).
The values specified in a DEFVAL clause have to be valid values for the corresponding data type
syntax.
3001 The size of the default value of OBJECT-TYPE <X> is out of range (RFC2578 §7.9).
The length of the specified octet string exceeds the SIZE constraints defined for the corresponding
data type syntax.
3002 The format of the default value of OBJECT-TYPE <X> does not match its syntax (RFC2578
§7.9).
The value <X> is not properly defined for the corresponding syntax.
3003 A DEFVAL clause is not allowed for OBJECT-TYPE <X> which has a base syntax of Counter
(Counter32 or Counter64) (RFC2578 §7.9).
4000 The syntax definition of the object <X> is not a valid refinement of its base syntax (RFC2578
§9).
A refinement must not extend the range of valid values for a data type.
4010 The range restriction is invalid because …
The lower bound (first value) of range restriction must be less or equal than the corresponding upper
bound (second value). In addition, bounds for unsigned values cannot be negative.
4100 The TEXTUAL-CONVENTION definition <X> must not have a DISPLAY-HINT clause
because its SYNTAX is OBJECT IDENTIFIER, IpAddress, Counter32, Counter64, or any
enumerated syntax (BITS or INTEGER) (RFC2579 §3.1)
Only textual conventions for INTEGER and OCTET STRING base types may have a DISPLAY-
HINT clause.
4101 The DISPLAY-HINT clause value “token1” of the TEXTUAL-CONVENTION definition
<X> is not compatible with the used SYNTAX (RFC2579 §3.1)
The integer DISPLAY-HINT format must be used with the INTEGER base type only whereas the
string DISPLAY-HINT format must be used with OCTET STRING base type only.
5000 The object definition <X> must be included in an OBJECT-GROUP or a NOTIFICATION-
GROUP definition respectively (RFC2580 §3.1 and §4.1).
This requirement ensures that compliance statements for a MIB module can be written.
5100 Object group <X> must not reference OBJECT-TYPE <Y> which has a MAX-ACCESS clause
of not-accessible (RFC2580 §3.1).
79
15 Regular Expression Syntax
81
15 Regular Expression Syntax
(?imsx) (One or more letters from the set "i", "L", "m", "s", "x".) The
group matches the empty string; the letters set the correspond-
ing flags for the entire regular expression:
i - Do case-insensitive pattern matching.
m - Treat string as multiple lines. That is, change "^" and "$"
from matching the start or end of the string to matching the
start or end of any line anywhere within the string.
s - Treat string as single line. That is, change "." to match any
character whatsoever, even a newline, which normally it would
not match.
The /s and /m modifiers both override the $* setting. That is, no
matter what $* contains, /s without /m will force "^" to match
only at the beginning of the string and "$" to match only at the
end (or just before a newline at the end) of the string. Together,
as /ms, they let the "." match any character whatsoever, while yet
allowing "^" and "$" to match, respectively, just after and just
before newlines within the string.
Extend your pattern's legibility by permitting whitespace and
comments.
(?:...) A non-grouping version of regular parentheses. Matches what-
ever regular expression is inside the parentheses, but the sub-
string matched by the group cannot be retrieved after
performing a match or referenced later in the pattern.
(?#...) A comment; the contents of the parentheses are simply ignored.
(?=...) Matches if ... matches next, but doesn't consume any of the
string. This is called a lookahead assertion. For example, Isaac
(?=Asimov) will match 'Isaac ' only if it's followed by
'Asimov'.
(?!...) Matches if ... does not match next. This is a negative looka-
head assertion. For example, Isaac (?!Asimov) will
match 'Isaac ' only if it's not followed by 'Asimov'.
The special sequences consist of "\" and a character from the list below. If
the ordinary character is not on the list, then the resulting RE will match
the second character. For example, \$ matches the character "$".
\number Matches the contents of the group of the same number. Groups
are numbered starting from 1. For example, (.+) \1 matches
'the the' or '55 55', but not 'the end' (note the
space after the group). This special sequence can only be used to
match one of the first 99 groups. If the first digit of number is 0,
or number is 3 octal digits long, it will not be interpreted as a
group match, but as the character with octal value number. Inside
the "[" and "]" of a character class, all numeric escapes are
treated as characters.
\A Matches only at the start of the string.
82
15 Regular Expression Syntax
83