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

# smi\_type(3)

SMI type information routines

## NAME

smiGetType, smiGetFirstType, smiGetNextType, smiGetParentType, smiGetTypeLine, smiGetFirstRange, smiGetNextRange, smiGetFirstNamedNumber, smiGetNextNamedNumber, smiGetTypeModule - SMI type information routines

## SYNOPSIS

```
#include <smi.h>

SmiType *smiGetType(SmiModule *smiModulePtr, char *type);

SmiType *smiGetFirstType(SmiModule *smiModulePtr);

SmiType *smiGetNextType(SmiType *smiTypePtr);

SmiType *smiGetParentType(SmiType *smiTypePtr);

int smiGetTypeLine(SmiType *smiTypePtr);

SmiRange *smiGetFirstRange(SmiType *smiTypePtr);

SmiRange *smiGetNextRange(SmiRange *smiRangePtr);

SmiNamedNumber *smiGetFirstNamedNumber(SmiType *smiTypePtr);

SmiNamedNumber *smiGetNextNamedNumber(SmiNamedNumber *smiNamedNumberPtr);

SmiModule *smiGetTypeModule(SmiType *smiTypePtr);
typedef struct SmiType {
    SmiIdentifier       name;
    SmiBasetype         basetype;
    SmiDecl             decl;
    char                *format;
    SmiValue            value;
    char                *units;
    SmiStatus           status;
    char                *description;
    char                *reference;
} SmiType;
typedef struct SmiNamedNumber {
    SmiIdentifier       name;
    SmiValue            value;
} SmiNamedNumber;
typedef struct SmiRange {
    SmiValue            minValue;
    SmiValue            maxValue;
} SmiRange;
```

## DESCRIPTION

These functions retrieve information on a type definition (SMIng) or a simple ASN.1 type definition (SMIv1/v2) or a TEXTUAL-CONVENTION definition (SMIv2). Base types may also be retrieved by these functions.

The **smiGetType()** function retrieves a **struct SmiType** that represents a type. *Type* may be either a fully qualified descriptor or a simple type name. If *smiModulePtr* is not NULL it used to limit the search to the given module. If the type is not found, **smiGetType()** returns NULL.

The **smiGetFirstType()** and **smiGetNextType()** functions are used to iteratively retrieve **struct SmiType**s. **smiGetFirstType()** returns the first one defined in the module specified by *smiModulePtr*. Subsequent calls to **smiGetNextType()** return the following ones.  If there are no more type definitions in the module NULL is returned.

The **smiGetParentType()** function retrieves a **struct SmiType** of the type from which the type specified by *smiTypePtr* is derived. If there is no parent type (i.e. the type specified by *smiTypePtr* is a base type), **smiGetParentType()** returns NULL.

Similarly, the **smiGetFirstRange()** and **smiGetNextRange()** functions are used to iteratively retrieve **struct SmiRange**s that represent range restrictions of the type specified by *smiTypePtr*, either size ranges of an octet string type or value ranges in case of a numeric type.

Similarly, the **smiGetFirstNamedNumber()** and **smiGetNextNamedNumber()** functions are used to iteratively retrieve **struct SmiNamedNumber**s that represent named numbers of the type specified by *smiTypePtr*, which has to be either a bit set or an enumeration type.

The **smiGetTypeModule()** function returns the module that defines the type given by *struct SmiTypePtr*.

The **smiGetTypeLine()** function returns the line number within the module where the type specified by *smiTypePtr* is defined.

## FILES

```
${prefix}/include/smi.h    SMI library header file
```

## SEE ALSO

[**libsmi**(3)](/libsmi/3.md),  [**smi\_module**(3)](/smi_module/3.md),  **smi.h**

## AUTHOR

(C) 1999-2001 Frank Strauss, TU Braunschweig, Germany \<strauss@ibr.cs.tu-bs.de\>\
