---
name: "smilint"
section: "1"
platform: "linux"
package: "smitools"
version: "0.4.8+dfsg2-17+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/smilint"
---

# smilint(1)

syntax and semantic checks of SMIv1/v2 and SPPI modules

## NAME

smilint - syntax and semantic checks of SMIv1/v2 and SPPI modules

## SYNOPSIS

**smilint** \[ **-Vhersm** \] \[ **-c** *file* \] \[ **-p** *module* \] \[ **-l** *level* \] \[ **-i** *error-pattern* \] *module(s)*

## DESCRIPTION

The **smilint** program is used to check MIB or PIB modules for syntax errors and semantics at some degree.  SMIv1/v2 style MIB modules as well as SPPI PIB modules are supported.

The rules that **smilint** is based on are taken from RFC 1155, RFC 1212 and RFC 1215 for SMIv1, RFCs 2578-2580 for SMIv2, RFC 3159 for SPPI.

## OPTIONS

- **-V, --version**

  Show the smilint version and exit.

- **-h, --help**

  Show a help text and exit.

- **-e, --error-list**

  Show a list of all known error messages and exit. Error messages can have associated tags, shown in braces at the end of each line. The tags can be used with the -i option to ignore certain error messages.

- **-r, --recursive**

  Report errors and warnings also for recursively imported modules.

- **-s, --severity**

  Show the error severity in brackets before error messages.

- **-m, --error-names**

  Show the error names in braces before error messages.

- **-c** *file***, --config=***file*

  **Read** *file* **instead of any other (global and user)** **configuration file.**

- **-p** *module***, --preload=***module*

  **Preload the module** *module* **before reading the main** **module(s). This may be helpful if an incomplete main module misses to** **import some definitions.**

- **-l** *level***, --level=***level*

  **Report errors and warnings up to the given severity** *level***.** **See below for a description of the error levels. The default error** **level is 3.**

- **-i** *prefix***, --ignore=***prefix*

  **Ignore all errors that have a tag which matches** *prefix***.** **A list of error tags can be retrieved by calling smilint with the** **-e option.**

- *module(s)*

  **These are the modules to be checked. If a module argument represents a** **path name (identified by containing at least one dot or slash character),** **this is assumed to be the exact file to read. Otherwise, if a module is** **identified by its plain module name, it is searched according to libsmi** **internal rules. See [smi\_config(3)](/smi_config/3.md) for more details.**

## ERROR AND WARNING LEVELS

**All generated error and warning messages have an associated severity level.** **The actual severity levels are:**

- 0

  **Internal error, no recovery possible. Examples are memory allocation** **failures. Errors of this level usually cause the application to abort.**

- 1

  **Major SMI/SPPI error, recovery somehow possible but may lead to severe** **problems. Examples are lexically unexpected characters or unknown** **keywords. Errors of this kind usually lead to follow-on errors.**

- 2

  **SMI/SPPI error which is probably tolerated by some** **implementations. Examples are MIB/PIB modules which mix constructs** **from different SMI/SPPI versions.**

- 3

  **SMI/SPPI error which is likely tolerated by many** **implementations. Examples are misplaced SMIv2 MODULE-IDENTITY** **invocations or SMIv2 textual conventions derived from other textual** **conventions.**

- 4

  **Something which is not strictly an error but which is recommended to** **be changed. Warnings of this level are usually considered during MIB** **reviews.**

- 5

  **Something that is basically correct but might be problematic in** **certain environments or usage scenarios. Examples are warnings that** **identifiers only differ in case or that type definitions are not used** **within the defining module.**

- 6

  **Messages of this level are auxiliary notices. Examples are messages** **that point to a previous definition in case of a redefinition.**

**Higher levels are currently not used and lead to the same effects as** **level 6 does. Note that errors up to level 3 are errors violating the** **specifications and must be fixed by the responsible author. The** **warnings generated with level 4 should be considered during normal** **MIB/PIB reviews.**

## EXAMPLE

**This example checks the file RMON2-MIB in the current directory (note** **that the \`./' prefix ensures this). The error level is raised to 6** **and warnings that claim about identifier names that exceed a length** **of 32 characters are suppressed.**

```
  $ smilint -l 6 -i namelength-32 ./RMON2-MIB
  ./RMON2-MIB:3935: unexpected type restriction
  ./RMON2-MIB:3936: unexpected type restriction
  ./RMON2-MIB:3937: unexpected type restriction
  ./RMON2-MIB:3938: unexpected type restriction
  ./RMON2-MIB:3939: unexpected type restriction
  ./RMON2-MIB:3940: unexpected type restriction
  ./RMON2-MIB:4164: scalar object must not have a `read-create' access value
```

## SEE ALSO

**The**  [**libsmi**(3)](/libsmi/3.md) **project is documented at** **http://www.ibr.cs.tu-bs.de/projects/libsmi/**. **Other commonly used MIB checkers are** **mosy**(1) and  **smicng**(1).

## AUTHORS

**(C) 1999-2004 F. Strauss, TU Braunschweig, Germany \<strauss@ibr.cs.tu-bs.de\>**\
 **(C) 1999-2002 J. Schoenwaelder, TU Braunschweig, Germany \<schoenw@ibr.cs.tu-bs.de\>**\
 **(C) 2002-2003 J. Schoenwaelder, University of Osnabrueck, Germany**\
 **(C) 2003-2004 J. Schoenwaelder, International University Bremen, Germany**\
 **(C) 2001-2002 T. Klie, TU Braunschweig, Germany \<tklie@ibr.cs.tu-bs.de\>**\
 **(C) 2002 M. Bunkus, TU Braunschweig, Germany \<bunkus@ibr.cs.tu-bs.de\>**\
 **and contributions by many other people.**\
