---
name: "smi_attribute"
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_attribute"
---

# smi\_attribute(3)

SMI Attribute information routines

## NAME

smiGetAttribute, smiGetFirstAttribute, smiGetNextAttribute, smiGetAttributeParentClass, smiGetAttributeParentType, smiGetFirstUniqueAttribute, smiGetNextUniqueAttribute, smiGetEvent, smiGetFirstEvent, smiGetNextEvent, smiGetAttributeFirstRange, smiGetAttributeNextRange, smiGetAttributeFirstNamedNumber, smiGetAttributeNextNamedNumber - SMI Attribute information routines

## SYNOPSIS

```
#include <smi.h>

SmiAttribute *smiGetAttribute(SmiClass *smiClassPtr, char *name);

SmiAttribute *smiGetFirstAttribute(SmiClass *smiClassPtr);

SmiAttribute *smiGetNextAttribute(SmiAttribute *smiAttributePtr);

SmiType *smiGetAttributeParentType(SmiType *smiAttributePtr);

SmiClass *smiGetAttributeParentClass(SmiType *smiAttributePtr);

SmiAttribute *smiGetFirstUniqueAttribute(SmiClass *smiClassPtr);

SmiAttribute *smiGetNextUniqueAttribute(SmiAttribute *smiAttributePtr);

SmiRange *smiGetAttributeFirstRange(SmiAttribute *smiAttributePtr);

SmiRange *smiGetAttributeNextRange(SmiRange *smiRangePtr);

SmiNamedNumber *smiGetAttributeFirstNamedNumber(SmiAttribute *smiAttributePtr);

SmiNamedNumber *smiGetAttributeNextNamedNumber(SmiNamedNumber *smiNamedNumberPtr);
typedef struct SmiAttribute {
    SmiIdentifier       name;
    SmiDecl             decl;
    SmiStatus           status;
    char                *description;
    char                *reference;
} SmiAttribute;
typedef struct SmiRange {
    SmiValue            minValue;
    SmiValue            maxValue;
} SmiRange;
typedef struct SmiNamedNumber {
    SmiIdentifier       name;
    SmiValue            value;
} SmiNamedNumber;
```

## DESCRIPTION

These functions retrieve information on a SMIng Attribute definition (SMIng).

**smiGetAttribute(SmiClass \*smiClassPtr, char \*name)** returns a pointer to **struct SmiAttribute** for the Attribute with the given *name* in the given class(*smiClassPtr*), or NULL if the attribute with the given name does not exist.

**smiGetFirstAttribute(SmiClass \*smiClassPtr)** and **smiGetNextAttribute(SmiAttribute \*smiAttributePtr)** are used to iterate through the attributes of the class given by *smiClassPtr*. They return a pointer to **struct SmiAttribute** that represents an attribute or NULL if there are no attributes left in the class, or error has occurred.

**smiGetAttributeParentClass(SmiAttribute \*smiAttributePtr)** returns a pointer to a **struct SmiClass**, pointing to the parent class of the given *smiAttributePtr*, or NULL if the attribute does not reference class.  Note that attributes always have either parent type or parent class.

**smiGetAttributeParentType(SmiType \*smiAttributePtr)** returns a pointer to a **struct SmiType**, pointing to the parent type of the given *smiAttributePtr*, or NULL if the attribute does not reference type.  Note that attributes always have either parent type or parent class.

**smiGetFirstUniqueAttribute(SmiClass \*smiClassPtr)** and **smiGetNextUniqueAttribute(SmiType \*smiAttributePtr)** are used to iterate through the unique attributes of the class given by *smiClassPtr*. They return a pointer to **struct SmiAttribute** that represents a unique attribute or NULL if there are no unique attributes left in the class, or error has occurred. This function **MUST NOT** be used for scalar classes, so it should only be called after **isClassScalar()** has returned 0.

**smiGetAttributeFirstRange(SmiAttribute \*smiAttributePtr)**, and **smiGetAttributeNextRange(SmiRange \*smiRangePtr)** are used to iterate through ranges that restrict number or octet string types. Both functions return a pointer to the **struct SmiRange** representing the range, or NULL if there are no more ranges, or error has occurred.

**smiGetAttributeFirstNamedNumber(SmiAttribute \*smiAttributePtr)** and **smiGetAttributeNextNamedNumber(SmiNamedNumber** **\*smiNamedNumberPtr)** are used to iterate through named numbers of bits or enumerations for attributes, which reference types, and to retrieve the reference restriction of a pointer.  Both functions return a pointer to the struct SmiNamedNumber representing the named number, or NULL if there are no named numbers left, or error has occurred.  **smiGetFirstNamedNumber()** can be used to retrieve the name of the identity that is restricting Pointer type, as it is stored as the name of the first named number.

## 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) 2007 Kaloyan Kanev, Jacobs University, Germany \<k.kanev@jacobs-university.de\>\
