第 3 章 - Azure RTOS NetX Duo SNMP 代理服务说明

本章按字母顺序介绍了所有 Azure RTOS NetX Duo SNMP 代理服务(如下所列)。

在以下 API 说明的“返回值”部分中,以粗体显示的值不受定义用于禁用 API 错误检查的 NX_DISABLE_ERROR_CHECKING 影响,而不以粗体显示的值会被完全禁用。

nx_snmp_agent_auth_trap_key_use

为陷阱消息指定身份验证密钥

原型

UINT nx_snmp_agent_auth_trap_key_use(
    NX_SNMP_AGENT *agent_ptr, 
    NX_SNMP_SECURITY_KEY *key);

说明

此服务指定用于在陷阱消息的 SNMPv3 安全性标头中设置身份验证参数的密钥。 为密钥提供 NX_NULL 值将禁用身份验证。

注意

此密钥必须事先已创建。 请参阅 nx_snmp_agent_md5_key_create 或 nx_snmp_agent_sha_key_create。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • key 指向之前创建的 MD5 或 SHA 密钥的指针。

返回值

  • NX_SUCCESS (0x00) 已成功设置身份验证密钥。
  • NX_NOT_ENABLED (0x14) 已禁用 SNMP 安全
  • NX_PTR_ERROR (0x07) SNMP 代理指针无效。

允许来自

初始化、线程

示例

/* Use previously created “my_key” for SNMPv3 trap message authentication.  */
status =  nx_snmp_agent_auth_trap_key_use(&my_agent, &my_key);


/* If status is NX_SUCCESS the SNMP Agent will use “my_key” for
   for authentication parameters in trap messages.  */

nx_snmp_agent_authenticate_key_use

为响应消息指定身份验证密钥

原型

UINT nx_snmp_agent_authenticate_key_use(
    NX_SNMP_AGENT *agent_ptr, 
    NX_SNMP_SECURITY_KEY *key);

说明

此服务为设置后发出的所有请求指定用于 SNMPv3 安全参数中的身份验证参数的密钥。 为密钥提供 NX_NULL 值将禁用身份验证。

注意

此密钥必须事先已创建。 请参阅 nx_snmp_agent_md5_key_create 或 nx_snmp_agent_sha_key_create。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • key 指向之前创建的 MD5 或 SHA 密钥的指针。

返回值

  • NX_SUCCESS (0x00) 已成功设置 SNMP 密钥。
  • NX_NOT_ENABLED (0x14) 已禁用 SNMP 安全
  • NX_PTR_ERROR (0x07) SNMP 代理指针无效。

允许来自

初始化、线程

示例

/* Use previously created “my_key” for SNMPv3 authentication.  */
status =  nx_snmp_agent_authenticate_key_use(&my_agent, &my_key);


/* If status is NX_SUCCESS the SNMP Agent will use “my_key” for
   for setting the authentication parameters of SNMPv3 requests.  */

nx_snmp_agent_community_get

检索社区名称

原型

UINT nx_snmp_agent_community_get(
    NX_SNMP_AGENT *agent_ptr, 
    UCHAR **community_string_ptr);

说明

此服务从 SNMP 代理接收到的最新 SNMP 请求检索社区名称。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • community_string_ptr 指向用于返回 SNMP 代理社区字符串的字符串指针的指针。

返回值

  • NX_SUCCESS (0x00) 已成功获取 SNMP 社区。
  • NX_PTR_ERROR (0x07) 输入指针无效。

允许来自

初始化、线程

示例

UCHAR *string_ptr;

/* Pickup the community string pointer for my_agent.  */
status =  nx_snmp_agent_community_get(&my_agent, &string_ptr);


/* If status is NX_SUCCESS the pointer “string_ptr” points to the
   last community name supplied to the SNMP agent.  */

nx_snmp_agent_request_get_type_test

指示最后一个 SNMP 请求是 GET 类型还是 SET 类型

原型

UINT nx_snmp_agent_request_get_type_test(
    NX_SNMP_AGENT *agent_ptr,
    UINT *is_get_type);

说明

此服务指示来自 SNMP 管理器的最新请求是 GET 类型(GET、GETNEXT 或 GETBULK)还是 SET 类型。 它旨在与用户名回调一起使用,如果请求是 GET 类型,则 SNMPv1 或 SNMPv2 应用程序需要将接收到的社区字符串与 SNMP 代理公共字符串进行比较,如果请求是 SET 类型,则与 SNMP 代理专用字符串进行比较。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • is_get_type 指向请求类型状态的指针:
    如果是 GET 类型,则为 NX_TRUE
    如果是 SET 类型,则为 NX_FALSE

返回值

  • NX_SUCCESS (0x00) 已成功返回类型
  • NX_PTR_ERROR (0x07) 输入指针无效。

允许来自

初始化、线程

示例

UINT is_get_type;

/* Determine if the current SNMP request is a GET or SET type.  */
status =  nx_snmp_agent_request_get_type_test(&my_agent, &is_get_type);


/* If status is NX_SUCCESS, is_get_type will indicate the request type.  */

nx_snmp_agent_context_engine_set

设置上下文引擎(仅限 SNMP v3)

原型

UINT nx_snmp_agent_context_engine_set(
    NX_SNMP_AGENT *agent_ptr, 
    UCHAR *context_engine, 
    UINT context_engine_size);

说明

此服务设置 SNMP 代理的上下文引擎。 它仅适用于 SNMPv3 处理。 如果应用程序使用身份验证和加密,则应在创建安全密钥之前调用此服务,因为在密钥创建过程中使用了上下文引擎 ID。 如果未调用,NetX Duo SNMP 在 nxd_snmp.c: 的顶部提供默认上下文引擎

UCHAR _nx_snmp_default_context_engine[NX_SNMP_MAX_CONTEXT_STRING] =  
    {0x80, 0x00, 0x03, 0x10, 0x01, 0xc0, 0xa8, 0x64, 0xaf};

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • context_engine 指向上下文引擎字符串的指针。
  • context_engine_size 上下文引擎字符串的大小。 请注意,上下文引擎中的最大字节数由 NX_SNMP_MAX_CONTEXT_STRING 定义。

返回值

  • NX_SUCCESS (0x00) 已成功设置 SNMP 上下文引擎。
  • NX_NOT_ENABLED (0x14) 未启用 SNMPv3
  • NX_SNMP_ERROR (0x100) 上下文引擎大小错误。
  • NX_PTR_ERROR (0x07) 输入指针无效。

允许来自

初始化、线程

示例

UCHAR my_engine[] = {0x80, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07};

/* Set the context engine for my_agent.  */
status =  nx_snmp_agent_context_engine_set(&my_agent, my_engine, 9);


/* If status is NX_SUCCESS the context engine has been set.  */

nx_snmp_agent_context_name_set

设置上下文名称(仅限 SNMP v3)

原型

UINT nx_snmp_agent_context_name_set(
    NX_SNMP_AGENT *agent_ptr, 
    UCHAR *context_name, 
    UINT context_name_size);

说明

此服务设置 SNMP 代理的上下文名称。 它仅适用于 SNMPv3 处理。 如果未调用,NetX Duo SNMP 代理会将上下文名称留空。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • context_name 指向上下文名称字符串的指针。
  • context_name_size 指向上下文名称字符串的指针。 请注意,上下文名称中的最大字节数由 NX_SNMP_MAX_CONTEXT_STRING 定义。

返回值

  • NX_SUCCESS (0x00) 已成功设置 SNMP 上下文名称。
  • NX_SNMP_ERROR (0x100) 上下文名称大小错误。
  • NX_PTR_ERROR (0x07) 输入指针无效。

允许来自

初始化、线程

示例

/* Set the context name for my_agent.  */
status =  nx_snmp_agent_context_name_set(&my_agent, “my_context_name”, 15);


/* If status is NX_SUCCESS the context name has been set.  */

nx_snmp_agent_create

创建 SNMP 代理

原型

UINT nx_snmp_agent_create(
    NX_SNMP_AGENT *agent_ptr, 
    CHAR *snmp_agent_name,
    NX_IP *ip_ptr,
    VOID *stack_ptr, 
    ULONG stack_size,
    NX_PACKET_POOL *pool_ptr,
    UINT (*snmp_agent_username_process)(
        struct NX_SNMP_AGENT_STRUCT *agent_ptr,
        UCHAR *username),
    UINT (*snmp_agent_get_process)(
        struct NX_SNMP_AGENT_STRUCT *agent_ptr,
        UCHAR *object_requested, 
        NX_SNMP_OBJECT_DATA *object_data),
    UINT (*snmp_agent_getnext_process)(
        struct NX_SNMP_AGENT_STRUCT *agent_ptr,
        UCHAR *object_requested, 
        NX_SNMP_OBJECT_DATA *object_data),
    UINT (*snmp_agent_set_process)(
        struct NX_SNMP_AGENT_STRUCT 
        *agent_ptr, UCHAR *object_requested, 
        NX_SNMP_OBJECT_DATA *object_data));

说明

此服务在指定的 IP 实例上创建 SNMP 代理。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • snmp_agent_name 指向 SNMP 代理名称字符串的指针。
  • ip_ptr:指向 IP 实例的指针。
  • stack_ptr 指向 SNMP 代理线程堆栈的指针。
  • stack_size 堆栈大小(以字节为单位)。
  • pool_ptr 指向此 SNMP 代理的默认数据包池的指针。
  • snmp_agent_username_process 指向应用程序的用户名处理例程的函数指针。
  • snmp_agent_get_process 指向应用程序的 GET 请求处理例程的函数指针。
  • snmp_agent_getnext_process 指向应用程序的 GETNEXT 请求处理例程的函数指针。
  • snmp_agent_set_process 指向应用程序的 SET 请求处理例程的函数指针。

返回值

  • NX_SUCCESS (0x00) 已成功创建 SNMP 代理。
  • NX_SNMP_ERROR (0x100) SNMP 代理创建错误。
  • NX_PTR_ERROR (0x07) 输入指针无效。

允许来自

初始化、线程

示例

NX_SNMP_AGENT my_agent;

/* Create the SNMP Agent “my_agent.”  */
status =  nx_snmp_agent_create(&my_agent, "My SNMP Agent", &ip_0, stack_start_ptr,
                4096, &pool_0, my_username_processing, my_get_processing, 
                my_getnext_processing, my_set_processing);


/* If status is NX_SUCCESS the SNMP Agent “my_agent” has been created.  */

nx_snmp_agent_current_version_get

获取 SNMP 数据包版本

原型

UINT nx_snmp_agent_current_version_get(
    NX_SNMP_AGENT *agent_ptr, 
    UINT *version);

说明

此服务检索从接收到的最新 SNMP 数据包分析的 SNMP 版本。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • version 指向从接收到的 SNMP 数据包分析的 SNMP 版本的指针

返回值

  • NX_SUCCESS (0x00) 已成功获取 SNMP 版本
  • NX_PTR_ERROR (0x07) 指针输入无效

允许来自

线程数

示例

UINT          snmp_version;
NX_SNMP_AGENT my_agent;

/* Get the version of the last received SNMP packet. */
status =  nx_snmp_agent_current_version_get (&my_agent, &snmp_version);


/* If status is NX_SUCCESS, snmp_version contains 
   the received packet SNMP version.  */

nx_snmp_agent_private_string_test

验证专用字符串是否与代理专用字符串匹配

原型

UINT nx_snmp_agent_private_string_test(
    NX_SNMP_AGENT *agent_ptr, 
    UCHAR *community_string,          
    UINT *is_private);

说明

此服务将以 null 结尾的输入社区字符串与 SNMP 代理专用字符串进行比较,并指示它们是否匹配。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • community_string 指向要比较的字符串的指针
  • is_private 指向比较结果的指针
    NX_TRUE - 字符串匹配
    NX_FALSE - 字符串不匹配

返回值

  • NX_SUCCESS (0x00) 已成功比较
  • NX_PTR_ERROR (0x07) 指针输入无效

允许来自

线程数

示例

UINT    	is_private;
UCHAR   	*community_string_ptr;
NX_SNMP_AGENT 	my_agent;

/* Determine if the community string matches the agent private string */
status =  nx_snmp_agent_private_string_test(&my_agent, community_string_ptr,  
                                            &is_private);


/* If status is NX_SUCCESS, is_private will indicate if there is a match. 
   If is_private is NX_TRUE, they match.  */

nx_snmp_agent_public_string_test

验证接收到的公共字符串是否与代理的公共字符串匹配

原型

UINT nx_snmp_agent_public_string_test(
    NX_SNMP_AGENT *agent_ptr, 
    UCHAR *community_string,          
    UINT *is_public);

说明

此服务将以 null 结尾的输入社区字符串与 SNMP 代理公共字符串进行比较,并指示它们是否匹配。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • community_string 指向要比较的字符串的指针
  • is_public 指向比较结果的指针
    NX_TRUE - 字符串匹配
    NX_FALSE - 字符串不匹配

返回值

  • NX_SUCCESS (0x00) 已成功比较
  • NX_PTR_ERROR (0x07) 指针输入无效

允许来自

线程数

示例

UINT    	is_public;
UCHAR   	*community_string_ptr;
NX_SNMP_AGENT 	my_agent;


/* Determine if the community string matches the agent public string */
status =  nx_snmp_agent_public_string_test(&my_agent, community_string_ptr,  
                                           &is_public);


/* If status is NX_SUCCESS, is_public will indicate if there is a match. 
   If is_public is true they match.  */

nx_snmp_agent_version_set

为每个 SNMP 版本设置 SNMP 代理状态

原型

UINT nx_snmp_agent_version_set(
    NX_SNMP_AGENT *agent_ptr, 
    UINT enabled_v1,
    UINT enable_v2, 
    UINT enable_v3);

说明

此服务为 SNMP 代理上的每个 SNMP 版本 V1、V2 和 V3 设置状态(已启用/已禁用)。 请注意,用户可配置的选项(NX_SNMP_DISABLE_V1、NX_SNMP_DISABLE_V2 和 NX_SNMP_DISABLE_V3)将替代这些运行时设置。 默认情况下,所有三个版本均启用 SNMP 代理。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • enabled_v1 将 SNMP V1 的已启用状态设置为“打开/关闭”。
  • enabled_v2 将 SNMP V2 的已启用状态设置为“打开/关闭”。
  • enabled_v3 将 SNMP V3 的已启用状态设置为“打开/关闭”。

返回值

  • NX_SUCCESS (0x00) 已成功设置 SNMP 版本
  • NX_PTR_ERROR (0x07) 指针输入无效

允许来自

线程数

示例

UINT          v1_on = NX_TRUE;
UINT          v2_on = NX_TRUE;
UINT          v3_on = NX_FALSE;

NX_SNMP_AGENT my_agent;

/* Enable/Disable each SNMP protocol (version) for the SNMP Agent) */
status =  nx_snmp_agent_version_set(&my_agent, v1_on, v2_on, v3_on);


/* If status is NX_SUCCESS, my_agent is enabled only for V1 and V2 assuming 
   NX_SNMP_DISABLE_V1 and NX_SNMP_DISABLE_V2 are not defined. */

nx_snmp_agent_private_string_set

设置 SNMP 代理专用字符串

原型

UINT nx_snmp_agent_private_string_set(
    NX_SNMP_AGENT *agent_ptr, 
    UCHAR *community_string);

说明

此服务将 SNMP 代理专用社区字符串与以 null 结尾的输入字符串一起设置。 默认值为 NULL(未设置专用字符串),因此 SNMP 代理不会接受收到带有“专用”社区字符串的任何 SNMP 数据包进行读/写访问。 输入字符串必须小于或等于用户可配置的 NX_SNMP_MAX_USER_NAME-1(获得空间以容纳 null 结尾)大小。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • community_string 指向要分配的专用字符串的指针

返回值

  • NX_SUCCESS (0x00) 已成功设置专用字符串
  • NX_SNMP_ERROR_TOOBIG (0x01) 字符串大小太大
  • NX_PTR_ERROR (0x07) 指针输入无效

允许来自

线程数

示例

NX_SNMP_AGENT my_agent;

/* Set the SNMP agent’s private community string */
status =  nx_snmp_agent_private_string_set(&my_agent, “private”));


/* If status is NX_SUCCESS, the SNMP agent private string is set.  */

nx_snmp_agent_public_string_set

设置 SNMP 代理公共字符串

原型

UINT nx_snmp_agent_public_string_set(
    NX_SNMP_AGENT *agent_ptr, 
    UCHAR *community_string);

说明

此服务将 SNMP 代理公共社区字符串与以 null 结尾的输入字符串一起设置。 社区字符串必须小于或等于用户可配置的 NX_SNMP_MAX_USER_NAME-1(获得空间以容纳 null 结尾)大小。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • community_string 指向要分配的公共字符串的指针

返回值

  • NX_SUCCESS (0x00) 已成功设置公共字符串
  • NX_SNMP_ERROR_TOOBIG (0x01) 字符串大小太大
  • NX_PTR_ERROR (0x07) 指针输入无效

允许来自

线程数

示例

NX_SNMP_AGENT my_agent;

/* Set the SNMP agent’s public string. */
nx_snmp_agent_public_string_set(&my_agent, “my_public”));


/* If status is NX_SUCCESS, the SNMP agent public string is set.  */

nx_snmp_agent_delete

删除 SNMP 代理

原型

UINT nx_snmp_agent_delete(NX_SNMP_AGENT *agent_ptr);

说明

此服务用于删除之前创建的 SNMP 代理。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。

返回值

  • NX_SUCCESS (0x00) 已成功删除 SNMP 代理。
  • NX_PTR_ERROR (0x07) 输入指针无效。

允许来自

初始化、线程

示例

/* Delete the SNMP Agent “my_agent.”  */
status =  nx_snmp_agent_delete(&my_agent);


/* If status is NX_SUCCESS the SNMP Agent “my_agent” has been deleted.  */

nx_snmp_agent_set_interface

设置 SNMP 代理网络接口

原型

UINT nx_snmp_agent_set_interface(
    NX_SNMP_AGENT *agent_ptr,  
    UINT if_index);

说明

此服务为输入接口索引指定的 SNMP 代理设置 SNMP 网络接口。 这仅适用于具有支持多个网络接口的 NetX Duo 5.6 或更高版本的 SNMP 主机应用程序。 如果主机未指定,则主接口的默认值为零。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • If_index 指定 SNMP 接口的索引。

返回值

  • NX_SUCCESS (0x00) 已成功设置 SNMP 接口。
  • NX_PTR_ERROR (0x07) 输入指针无效。

允许来自

初始化、线程

示例

/* Set the SNMP Agent “my_agent” to the secondary interface.  */
if_index = 1;
status =  nx_snmp_agent_set_interface(&my_agent, if_index);


/* If status is NX_SUCCESS the SNMP agent interface is set.  */

nx_snmp_agent_md5_key_create

创建 md5 密钥(仅限 SNMP v3)

原型

UINT nx_snmp_agent_md5_key_create(
    NX_SNMP_AGENT *agent_ptr, 
    UCHAR *password, 
    NX_SNMP_SECURITY_KEY *destination_key);

说明

此服务创建一个可用于身份验证和加密的 MD5 密钥。

此服务已弃用。 鼓励开发人员迁移到 nx_snmp_agent_md5_key_create_extended。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • password 指向密码字符串的指针。
  • destination_key 指向 SNMP 密钥数据结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功创建密钥。
  • NX_NOT_ENABLED (0x14) 未启用安全。
  • NX_PTR_ERROR (0x07) 输入指针无效。

允许来自

初始化、线程

示例

NX_SNMP_SECURITY_KEY my_key;

/* Create the MD5 key for “my_agent.”   */
status =  nx_snmp_agent_md5_key_create(&my_agent, “authpw”, &my_key);


/* If status is NX_SUCCESS an MD5 key has been created.  */

nx_snmp_agent_md5_key_create_extended

创建 md5 密钥(仅限 SNMP v3)

原型

UINT nx_snmp_agent_md5_key_create_extended(
    NX_SNMP_AGENT *agent_ptr, 
    UCHAR *password, 
    UINT password_length,
    NX_SNMP_SECURITY_KEY *destination_key);

说明

此服务创建一个可用于身份验证和加密的 MD5 密钥。

此服务将替换 nx_snmp_agent_md5_key_create。该版本需要调用方提供密码长度。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • password 指向密码字符串的指针。
  • password_length 密码字符串的长度。
  • destination_key 指向 SNMP 密钥数据结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功创建密钥。
  • NX_NOT_ENABLED (0x14) 未启用安全。
  • NX_SNMP_FAILED (0x102) SNMP 失败。
  • NX_PTR_ERROR (0x07) 输入指针无效。

允许来自

初始化、线程

示例

NX_SNMP_SECURITY_KEY my_key;

/* Create the MD5 key for “my_agent.”   */
status =  nx_snmp_agent_md5_key_create_extended(&my_agent, “authpw”, 6, &my_key);


/* If status is NX_SUCCESS the key for the password “authpw” has been created.  */

nx_snmp_agent_priv_trap_key_use

为陷阱消息指定加密密钥

原型

UINT nx_snmp_agent_priv_trap_key_use(
    NX_SNMP_AGENT *agent_ptr, 
    NX_SNMP_SECURITY_KEY *key);

说明

此服务指定之前创建的私钥用于加密和解密 SNMPv3 陷阱消息。

注意

必须事先创建身份验证密钥。 SNMP v3 隐私(加密)要求进行身份验证。 有关详细信息,请参阅 nx_snmp_agent_auth_trap_key_use。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • key 指向之前创建的密钥的指针。

返回值

  • NX_SUCCESS (0x00) 已成功设置私钥。
  • NX_NOT_ENABLED (0x14) 未启用安全。
  • NX_PTR_ERROR (0x07) 输入指针无效。

允许来自

初始化、线程

示例

/* Use the “my_privacy_key” for the SNMP Agent “my_agent” trap messages.   */
status =  nx_snmp_agent_priv_trap_key_use(&my_agent, &my_privacy_key);


/* If status is NX_SUCCESS the privacy key is registered with the SNMP agent.  */

nx_snmp_agent_privacy_key_use

为响应消息指定加密密钥

原型

UINT nx_snmp_agent_privacy_key_use(
    NX_SNMP_AGENT *agent_ptr, 
    NX_SNMP_SECURITY_KEY *key);

说明

此服务指定之前创建的密钥用于加密和解密 SNMPv3 响应消息。

注意

必须事先指定身份验证密钥。 SNMP v3 加密也需要创建身份验证密钥。 有关详细信息,请参阅 nx_snmp_agent_authentiation_key_us。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • key 指向之前创建的密钥的指针。

返回值

  • NX_SUCCESS (0x00) 已成功设置私钥。
  • NX_NOT_ENABLED (0x14) 未启用安全。
  • NX_PTR_ERROR (0x07) 输入指针无效。

允许来自

初始化、线程

示例

/* Use the “my_privacy_key” for the SNMP Agent “my_agent.”   */
status =  nx_snmp_agent_privacy_key_use(&my_agent, &my_privacy_key);


/* If status is NX_SUCCESS the privacy key is registered with the SNMP agent.  */

nx_snmp_agent_sha_key_create

创建 SHA 密钥(仅限 SNMP v3)

原型

UINT nx_snmp_agent_sha_key_create(
    NX_SNMP_AGENT *agent_ptr, 
    UCHAR *password, 
    NX_SNMP_SECURITY_KEY *destination_key);

说明

此服务创建一个可用于身份验证和加密的 SHA 密钥。

此服务已弃用。 鼓励开发人员迁移到 nx_snmp_agent_sha_key_create_extended。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • password 指向密码字符串的指针。
  • destination_key 指向 SNMP 密钥数据结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功创建密钥。
  • NX_SNMP_ERROR (0x100) 密钥创建错误。
  • NX_PTR_ERROR (0x07) SNMP 代理或密钥指针无效。

允许来自

初始化、线程

示例

NX_SNMP_SECURITY_KEY my_key;

/* Create the SHA key for “my_agent.”   */
status =  nx_snmp_agent_sha_key_create(&my_agent, “authpw”, &my_key);


/* If status is NX_SUCCESS the key for the password “authpw” has been created.  */

nx_snmp_agent_md5_key_create_extended

创建 SHA 密钥(仅限 SNMP v3)

原型

UINT nx_snmp_agent_sha_key_create_extended(
    NX_SNMP_AGENT *agent_ptr, 
    UCHAR *password, 
    UINT password_length,
    NX_SNMP_SECURITY_KEY *destination_key);

说明

此服务创建一个可用于身份验证和加密的 SHA 密钥。

此服务将替换 nx_snmp_agent_sha_key_create。该版本需要调用方提供密码长度。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • password 指向密码字符串的指针。
  • password_length 密码字符串的长度。
  • destination_key 指向 SNMP 密钥数据结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功创建密钥。
  • NX_SNMP_ERROR (0x100) 密钥创建错误。
  • NX_SNMP_FAILED (0x102) 密钥创建失败。
  • NX_PTR_ERROR (0x07) SNMP 代理或密钥指针无效。

允许来自

初始化、线程

示例

NX_SNMP_SECURITY_KEY my_key;

/* Create the SHA key for “my_agent.”   */
status =  nx_snmp_agent_sha_key_create_extended(&my_agent, “authpw”, 6, &my_key);


/* If status is NX_SUCCESS the key for the password “authpw” has been created.  */

nx_snmp_agent_start

启动 SNMP 代理

原型

UINT nx_snmp_agent_start(NX_SNMP_AGENT *agent_ptr);

说明

此服务将 UDP 套接字绑定到 SNMP 端口 161,并启动“SNMP 代理线程”任务。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。

返回值

  • NX_SUCCESS (0x00) 已成功启动 SNMP 代理。
  • NX_SNMP_ERROR (0x100) SNMP 代理启动错误。
  • NX_PTR_ERROR (0x07) 输入指针无效。

允许来自

初始化、线程

示例

/* Start the previously created SNMP Agent “my_agent.”   */
status =  nx_snmp_agent_start(&my_agent);


/* If status is NX_SUCCESS the SNMP Agent “my_agent” has been started.  */

nx_snmp_agent_stop

停止 SNMP 代理

原型

UINT nx_snmp_agent_stop(NX_SNMP_AGENT *agent_ptr);

说明

此服务停止“SNMP 代理线程”任务,并取消 UDP 套接字到 SNMP 端口的绑定。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。

返回值

  • NX_SUCCESS (0x00) 已成功停止 SNMP 代理。
  • NX_PTR_ERROR (0x07) SNMP 代理指针无效。

允许来自

线程数

示例

/* Stop the previously created and started SNMP Agent “my_agent.”   */
status =  nx_snmp_agent_stop(&my_agent);


/* If status is NX_SUCCESS the SNMP Agent “my_agent” has been stopped.  */

nx_snmp_agent_trap_send

发送 SNMPv1 陷阱(仅限 IPv4)

原型

UINT nx_snmp_agent_trap_send(
    NX_SNMP_AGENT *agent_ptr, 
    ULONG ip_address,
    UCHAR *enterprise, 
    UINT trap_type,
    UINT trap_code, 
    ULONG elapsed_time, 
    NX_SNMP_TRAP_OBJECT *object_list_ptr);

说明

此服务将 SNMP 陷阱发送到指定 IPv4 地址中的 SNMP 管理器。 在 NetX Duo 中发送 SNMP 陷阱的首选方法是使用 nxd_snmp_agent_trap_send 服务。 nx_snmp_agent_trap_send 包含在 NetX Duo 中,以支持现有 NetX SNMP 代理应用程序。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • ip_address SNMP 管理器的 IPv4 地址。
  • enterprise 企业对象 ID 字符串 (sysObectID)。
  • trap_type 请求的陷阱的类型,如下所示:
    • NX_SNMP_TRAP_COLDSTART (0)
    • NX_SNMP_TRAP_WARMSTART (1)
    • NX_SNMP_TRAP_LINKDOWN (2)
    • NX_SNMP_TRAP_LINKUP (3)
    • NX_SNMP_TRAP_AUTHENTICATE_FAILURE (4)
    • NX_SNMP_TRAP_EGPNEIGHBORLOSS (5)
  • trap_code 特定陷阱代码。
  • elapsed_time 已运行时间系统 (sysUpTime)。
  • object_list_ptr 要包含在 SNMP 陷阱中的对象及其关联值的数组。 此列表以 NX_NULL 结尾。

返回值

  • NX_SUCCESS (0x00) 已成功发送 SNMP 陷阱。
  • NX_SNMP_ERROR (0x100) 发送 SNMP 陷阱时出错。
  • NX_NOT_ENABLED (0x14) 未启用 SNMPv1。
  • NX_PTR_ERROR (0x07) 输入指针无效。

允许来自

线程数

示例

NX_SNMP_TRAP_OBJECT trap_list[5];

ULONG dest_ip_address = IP_ADDRESS(1,2,3,4);

/* Build list of objects to supply in the trap.  */
trap_list[0].nx_snmp_object_string_ptr =  "1.3.6.1.2.1.2.2.1.1.0";
trap_list[0].nx_snmp_object_data.nx_snmp_object_data_type =  NX_SNMP_INTEGER;
trap_list[0].nx_snmp_object_data.nx_snmp_object_data_msw =   counter;
trap_list[1].nx_snmp_object_string_ptr =  "1.3.6.1.2.1.1.3.0";
trap_list[1].nx_snmp_object_data.nx_snmp_object_data_type =  NX_SNMP_TIME_TICS;
trap_list[1].nx_snmp_object_data.nx_snmp_object_data_msw =   tx_time_get();
trap_list[2].nx_snmp_object_string_ptr =  NX_NULL; /* Terminate list!  */

/* Send trap to SNMP manager at 193.2.2.61.  */
status =  nx_snmp_agent_trap_send(&my_agent,dest_ip_address,
 		                           "1.3.6.7.7.7", NX_SNMP_TRAP_LINKUP, counter++, 
                                  tx_time_get(), trap_list);

/* If status is NX_SUCCESS the SNMP trap has been sent.  */

nxd_snmp_agent_trap_send

发送 SNMPv1 陷阱(IPv4 和 IPv6)

原型

UINT nxd_snmp_agent_trap_send(
    NX_SNMP_AGENT *agent_ptr, 
    ULONG ip_address,
    UCHAR *enterprise, UINT trap_type, 
    UINT trap_code,
    ULONG elapsed_time, 
    NX_SNMP_TRAP_OBJECT *object_list_ptr);

说明

此服务将 SNMP 陷阱发送到指定 IP 地址中的 SNMP 管理器。 在 NetX 中发送 SNMP 陷阱的等效方法是 nxd_snmp_agent_trap_send 服务。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • ip_address SNMP 管理器的 IPv4 或 IPv6 地址。
  • enterprise 企业对象 ID 字符串 (sysObectID)。
  • trap_type 请求的陷阱的类型,如下所示:
    • NX_SNMP_TRAP_COLDSTART (0)
    • NX_SNMP_TRAP_WARMSTART (1)
    • NX_SNMP_TRAP_LINKDOWN (2)
    • NX_SNMP_TRAP_LINKUP (3)
    • NX_SNMP_TRAP_AUTHENTICATE_FAILURE (4)
    • NX_SNMP_TRAP_EGPNEIGHBORLOSS (5)
  • trap_code 特定陷阱代码。
  • elapsed_time 已运行时间系统 (sysUpTime)。
  • object_list_ptr 要包含在 SNMP 陷阱中的对象及其关联值的数组。 此列表以 NX_NULL 结尾。

返回值

  • NX_SUCCESS (0x00) 已成功发送 SNMP 陷阱。
  • NX_SNMP_ERROR (0x100) 发送 SNMP 陷阱时出错。
  • NX_NOT_ENABLED (0x14) 未启用 SNMPv1。
  • NX_PTR_ERROR (0x07) 输入指针无效。

允许来自

线程数

示例

NX_SNMP_TRAP_OBJECT trap_list[5];

NXD_ADDRESS dest_ip_address;

    dest_ip_address.nxd_ip_version = NX_IP_VERSION_V6 ;
    dest_ip_address.nxd_ip_address.v6[0] = 0x20010db8;
    dest_ip_address.nxd_ip_address.v6[1] = 0xf101;
    dest_ip_address.nxd_ip_address.v6[2] = 0x00000000;
    dest_ip_address.nxd_ip_address.v6[3] = 0x00000101;

/* Build list of objects to supply in the trap.  */
trap_list[0].nx_snmp_object_string_ptr =  "1.3.6.1.2.1.2.2.1.1.0";
trap_list[0].nx_snmp_object_data.nx_snmp_object_data_type =  NX_SNMP_INTEGER;
trap_list[0].nx_snmp_object_data.nx_snmp_object_data_msw =   counter;
trap_list[1].nx_snmp_object_string_ptr =  "1.3.6.1.2.1.1.3.0";
trap_list[1].nx_snmp_object_data.nx_snmp_object_data_type =  NX_SNMP_TIME_TICS;
trap_list[1].nx_snmp_object_data.nx_snmp_object_data_msw =   tx_time_get();
trap_list[2].nx_snmp_object_string_ptr =  NX_NULL; /* Terminate list!  */

/* Send trap to SNMP manager at 193.2.2.61.  */
status =  nxd_snmp_agent_trap_send(&my_agent,&dest_ip_address,
 		         "1.3.6.7.7.7", NX_SNMP_TRAP_LINKUP, counter++, tx_time_get(), 
               trap_list);

/* If status is NX_SUCCESS the SNMP trap has been sent.  */

nx_snmp_agent_trapv2_send

发送 SNMPv2 陷阱(仅限 IPv4)

原型

UINT nx_snmp_agent_trapv2_send(
    NX_SNMP_AGENT *agent_ptr, 
    NXD_ADDRESS *ip_address,
    UCHAR *community,
    UINT trap_type, 
    ULONG elapsed_time,
    NX_SNMP_TRAP_OBJECT *object_list_ptr);

说明

此服务将 SNMPv2 陷阱发送到指定 IPv4 地址中的 SNMP 管理器。 在 NetX Duo 中发送 SNMP 陷阱的首选方法是使用 nxd_snmp_agent_trapv2_send 服务。 nx_snmp_agent_trapv2_send 包含在 NetX Duo 中,以支持现有 NetX SNMP 代理应用程序。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • ip_address SNMP 管理器的 IPv4 地址。
  • community 社区名称(用户名)。
  • trap_type
    请求的陷阱的类型。 标准事件如下:
    • NX_SNMP_TRAP_COLDSTART (0)
    • NX_SNMP_TRAP_WARMSTART (1)
    • NX_SNMP_TRAP_LINKDOWN (2)
    • NX_SNMP_TRAP_LINKUP (3)
    • NX_SNMP_TRAP_AUTHENTICATE_FAILURE (4)
    • NX_SNMP_TRAP_EGPNEIGHBORLOSS (5) 对于专有数据:
    • NX_SNMP_TRAP_CUSTOM (0xFFFFFFFF)(在 nxd_snmp.h 中定义)
  • elapsed_time 已运行时间系统 (sysUpTime)。
  • object_list_ptr 要包含在 SNMP 陷阱中的对象及其关联值的数组。 此列表以 NX_NULL 结尾。

返回值

  • NX_SUCCESS (0x00) 已成功发送 SNMP 陷阱。
  • NX_SNMP_ERROR (0x100) 发送 SNMP 陷阱时出错。
  • NX_NOT_ENABLED (0x14) 未启用 SNMPv2。
  • NX_PTR_ERROR (0x07) 输入指针无效。

允许来自

线程数

示例

NX_SNMP_TRAP_OBJECT trap_list[5];
ULONG  dest_ip_address = IP_ADDRESS(1,2,3,4);

/* Build an empty object list, since it is not needed for the 
   NX_SNMP_TRAP_COLDSTART trap.  */
trap_list[0].nx_snmp_object_string_ptr =  NX_NULL;

/* Send trap to SNMP manager at 193.2.2.61.  */
Status =  nx_snmp_agent_trapv2_send(&my_agent,dest_ip_address, "public",
               NX_SNMP_TRAP_COLDSTART, tx_time_get(), trap_list);

/* If status is NX_SUCCESS the SNMP trap has been sent.  */

nx_snmp_agent_trapv2_oid_send

发送直接指定 OID 的 SNMPv2 陷阱

原型

UINT nx_snmp_agent_trapv2_oid_send(
    NX_SNMP_AGENT *agent_ptr, 
    ULONG ip_address,
    UCHAR *community,        
    UCHAR *oid,
    ULONG elapsed_time,   
    NX_SNMP_TRAP_OBJECT *object_list_ptr);

说明

此服务将 SNMPv2 陷阱发送到指定 IP 地址(仅限 IPv4)中的 SNMP 管理器,并允许调用方直接指定 OID。 在 NetX Duo 中发送具有指定 OID 的 SNMP 陷阱的首选方法是使用 nxd_snmp_agent_trapv2_oid_send 服务。 nx_snmp_agent_trapv2_oid_ send 包含在 NetX Duo 中,以支持现有 NetX SNMP 代理应用程序。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • ip_address SNMP 管理器的 IP 地址。
  • community 社区名称(用户名)。
  • oid 指向包含 OID 的缓冲区的指针。
  • elapsed_time 已运行时间系统 (sysUpTime)。
  • object_list_ptr 要包含在 SNMP 陷阱中的对象及其关联值的数组。 此列表以 NX_NULL 结尾。

返回值

  • NX_SUCCESS (0x00) 已成功发送 SNMP 陷阱。
  • NX_SNMP_ERROR (0x100) 发送 SNMP 陷阱时出错。
  • NX_PTR_ERROR (0x16) SNMP 代理或参数指针无效。
  • NX_IP_ADDRESS_ERROR (0x21) 目标 IP 地址无效。
  • NX_OPTION_ERROR (0x0a) 参数无效。

允许来自

线程数

示例

NX_SNMP_TRAP_OBJECT trap_list[5];

/* Build an empty object list */
trap_list[0].nx_snmp_object_string_ptr =  NX_NULL;

/* Send trap to SNMP manager at 193.2.2.61.  */
Status =  nx_snmp_agent_trapv2_oid_send(&my_agent, IP_ADDRESS(193,2,2,61), 
                                       "public", (UCHAR *)"0.9.9.9.9.9.9.9.9.9",  
                                       (tx_time_get()), trap_list);

/* If status is NX_SUCCESS the SNMP trap has been sent.  */

nxd_snmp_agent_trapv2_send

发送 SNMPv2 陷阱(IPv4 和 IPv6)

原型

UINT nxd_snmp_agent_trapv2_send(
    NX_SNMP_AGENT *agent_ptr, 
    NXD_ADDRESS *ip_address, 
    UCHAR *community, UINT trap_type, 
    ULONG elapsed_time, 
    NX_SNMP_TRAP_OBJECT *object_list_ptr);

说明

此服务将 SNMP V2 陷阱发送到指定 IP 地址中的 SNMP 管理器。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • ip_address SNMP 管理器的 IP(IPv4 或 IPv6)地址。
  • community 社区名称(用户名)。
  • trap_type
    请求的陷阱的类型。 标准事件如下:
    • NX_SNMP_TRAP_COLDSTART (0)
    • NX_SNMP_TRAP_WARMSTART (1)
    • NX_SNMP_TRAP_LINKDOWN (2)
    • NX_SNMP_TRAP_LINKUP (3)
    • NX_SNMP_TRAP_AUTHENTICATE_FAILURE (4)
    • NX_SNMP_TRAP_EGPNEIGHBORLOSS (5) 对于专有数据:
    • NX_SNMP_TRAP_CUSTOM (0xFFFFFFFF)(在 nxd_snmp.h 中定义)
  • elapsed_time 已运行时间系统 (sysUpTime)。
  • object_list_ptr 要包含在 SNMP 陷阱中的对象及其关联值的数组。 此列表以 NX_NULL 结尾。

返回值

  • NX_SUCCESS (0x00) 已成功发送 SNMP 陷阱。
  • NX_SNMP_ERROR (0x100) 发送 SNMP 陷阱时出错。
  • NX_NOT_ENABLED (0x14) 未启用 SNMPv2。
  • NX_SNMP_INVALID_IP_PROTOCOL_ERROR (0x104) IP 版本不受支持
  • NX_PTR_ERROR (0x07) 输入指针无效。

允许来自

线程数

示例

NX_SNMP_TRAP_OBJECT trap_list[5];
NXD_ADDRESS dest_ip_address;

    dest_ip_address.nxd_ip_version = NX_IP_VERSION_V6 ;
    dest_ip_address.nxd_ip_address.v6[0] = 0x20010db8;
    dest_ip_address.nxd_ip_address.v6[1] = 0xf101;
    dest_ip_address.nxd_ip_address.v6[2] = 0x00000000;
    dest_ip_address.nxd_ip_address.v6[3] = 0x00000101;

/* Build an empty object list, since it is not needed for the 
   NX_SNMP_TRAP_COLDSTART trap.  */
trap_list[0].nx_snmp_object_string_ptr =  NX_NULL;

/* Send a standard event trap to SNMP manager at 193.2.2.61.  */
Status =  nxd_snmp_agent_trapv2_send(&my_agent,&dest_ip_address, "public",
                                    NX_SNMP_TRAP_COLDSTART, tx_time_get(),  
                                    trap_list);

/* If status is NX_SUCCESS the SNMP trap has been sent.  */

nxd_snmp_agent_trapv2_oid_send

发送直接指定 OID 的 SNMPv2 陷阱

原型

UINT nxd_snmp_agent_trapv2_oid_send(
    NX_SNMP_AGENT *agent_ptr, 
    NXD_ADDRESS *ip_address, 
    UCHAR *community,        
    UCHAR *oid, ULONG elapsed_time,   
    NX_SNMP_TRAP_OBJECT *object_list_ptr);

说明

此服务将 SNMP v2 陷阱发送到指定 IP 地址 (IPv4/IPv6) 中的 SNMP 管理器,并允许调用方直接指定 OID。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • ip_address SNMP 管理器的 IP 地址 (IPv4/IPv6)。
  • community 社区名称(用户名)。
  • oid 指向包含 OID 的缓冲区的指针。
  • elapsed_time 已运行时间系统 (sysUpTime)。
  • object_list_ptr 要包含在 SNMP 陷阱中的对象及其关联值的数组。 此列表以 NX_NULL 结尾。

返回值

  • NX_SUCCESS (0x00) 已成功发送 SNMP 陷阱。
  • NX_SNMP_ERROR (0x100) 发送 SNMP 陷阱时出错。
  • NX_PTR_ERROR (0x16) SNMP 代理或参数指针无效。
  • NX_IP_ADDRESS_ERROR (0x21) 目标 IP 地址无效。
  • NX_OPTION_ERROR (0x0a) 参数无效。

允许来自

线程数

示例

NX_SNMP_TRAP_OBJECT trap_list[5];
NXD_ADDRESS         address;


/* Build an empty object list */
trap_list[0].nx_snmp_object_string_ptr =  NX_NULL;

address.nxd_ip_version = NX_IP_VERSION_V4;
address.nxd_ip_address.v4 = IP_ADDRESS(193,2,2,61)

/* Send trap to SNMP manager at 193.2.2.61.  */
Status =  nxd_snmp_agent_trapv2_oid_send(&my_agent, &address, 
                                       "public", (UCHAR *)"0.9.9.9.9.9.9.9.9.9",  
                                       tx_time_get(), trap_list);

/* If status is NX_SUCCESS the SNMP trap has been sent.  */

nx_snmp_agent_trapv3_send

发送 SNMPv3 陷阱(仅限 IPv4)

原型

UINT nx_snmp_agent_trapv3_send(
    NX_SNMP_AGENT *agent_ptr, 
    ULONG ip_address,
    UCHAR *username,
    UINT trap_type, 
    ULONG elapsed_time,
    NX_SNMP_TRAP_OBJECT *object_list_ptr);

说明

此服务将 SNMPv3 陷阱发送到指定 IPv4 地址中的 SNMP 管理器。 在 NetX Duo 中发送 SNMP 陷阱的首选方法是使用 nxd_snmp_agent_trapv3_send 服务。 nx_snmp_agent_trapv3_send 包含在 NetX Duo 中,以支持现有 NetX SNMP 代理应用程序。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • ip_address SNMP 管理器的 IPv4 地址。
  • username 社区名称(用户名)。
  • trap_type
    请求的陷阱的类型。 标准事件如下:
    • NX_SNMP_TRAP_COLDSTART (0)
    • NX_SNMP_TRAP_WARMSTART (1)
    • NX_SNMP_TRAP_LINKDOWN (2)
    • NX_SNMP_TRAP_LINKUP (3)
    • NX_SNMP_TRAP_AUTHENTICATE_FAILURE (4)
    • NX_SNMP_TRAP_EGPNEIGHBORLOSS (5) 对于专有数据:
    • NX_SNMP_TRAP_CUSTOM (0xFFFFFFFF)(在 nxd_snmp.h 中定义)
  • elapsed_time 已运行时间系统 (sysUpTime)。
  • object_list_ptr 要包含在 SNMP 陷阱中的对象及其关联值的数组。 此列表以 NX_NULL 结尾。

返回值

  • NX_SUCCESS (0x00) 已成功发送 SNMP 陷阱。
  • NX_SNMP_ERROR (0x100) 发送 SNMP 陷阱时出错。
  • NX_NOT_ENABLED (0x14) 未启用 SNMPv3
  • NX_PTR_ERROR (0x07) 输入指针无效。

允许来自

初始化、线程

示例

NX_SNMP_TRAP_OBJECT trap_list[5];
ULONG dest_ip_address = IP_ADDRESS(1,2,3,4);

/* Build an empty object list, since it is not needed for the 
   NX_SNMP_TRAP_COLDSTART trap.  */
trap_list[0].nx_snmp_object_string_ptr =  NX_NULL;

/* Send trap to SNMP manager at 193.2.2.61.  */
Status =  nx_snmp_agent_trapv3_send(&my_agent, dest_ip_address, "public",
               NX_SNMP_TRAP_COLDSTART, tx_time_get(), trap_list);

/* If status is NX_SUCCESS the SNMP trap has been sent.  */

nx_snmp_agent_trapv3_oid_send

发送直接指定 OID 的 SNMPv3 陷阱

原型

UINT nx_snmp_agent_trapv3_oid_send(
    NX_SNMP_AGENT *agent_ptr, 
    ULONG ip_address,
    UCHAR *username,        
    UCHAR *oid,
    ULONG elapsed_time,   
    NX_SNMP_TRAP_OBJECT *object_list_ptr);

说明

此服务将 SNMPv3 陷阱发送到指定 IP 地址(仅限 IPv4)中的 SNMP 管理器,并允许调用方直接指定 OID。 在 NetX Duo 中发送具有指定 OID 的 SNMP 陷阱的首选方法是使用 nxd_snmp_agent_trapv3_oid_send 服务。 nx_snmp_agent_trapv3_oid_ send 包含在 NetX Duo 中,以支持现有 NetX SNMP 代理应用程序。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • ip_address SNMP 管理器的 IP 地址。
  • username 社区名称(用户名)。
  • oid 指向包含 OID 的缓冲区的指针。
  • elapsed_time 已运行时间系统 (sysUpTime)。
  • object_list_ptr 要包含在 SNMP 陷阱中的对象及其关联值的数组。 此列表以 NX_NULL 结尾。

返回值

  • NX_SUCCESS (0x00) 已成功发送 SNMP 陷阱。
  • NX_SNMP_ERROR (0x100) 发送 SNMP 陷阱时出错。
  • NX_PTR_ERROR (0x16) SNMP 代理或参数指针无效。
  • NX_IP_ADDRESS_ERROR (0x21) 目标 IP 地址无效。
  • NX_OPTION_ERROR (0x0a) 参数无效。

允许来自

线程数

示例

NX_SNMP_TRAP_OBJECT trap_list[5];

/* Build an empty object list */
trap_list[0].nx_snmp_object_string_ptr =  NX_NULL;

/* Send trap to SNMP manager at 193.2.2.61.  */
Status =  nx_snmp_agent_trapv3_oid_send(&my_agent, IP_ADDRESS(193,2,2,61), 
                                       "public", (UCHAR *)"0.9.9.9.9.9.9.9.9.9",  
                                       (tx_time_get()), trap_list);

/* If status is NX_SUCCESS the SNMP trap has been sent.  */

nxd_snmp_agent_trapv3_send

发送 SNMPv3 陷阱(IPv4 和 IPv6)

原型

UINT nxd_snmp_agent_trapv3_send(
    NX_SNMP_AGENT *agent_ptr, 
    NXD_ADDRESS *ip_address, 
    UCHAR *username, UINT trap_type, 
    ULONG elapsed_time, 
    NX_SNMP_TRAP_OBJECT *object_list_ptr);

说明

此服务将 SNMP 陷阱发送到指定 IP 地址中的 SNMP 管理器。 此陷阱基本上与 SNMP v2 陷阱相同,只是陷阱消息格式包含在 SNMP v3 PDU 中。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • ip_address SNMP 管理器的 IP(IPv4 或 IPv6)地址。
  • username 社区名称(用户名)。
  • trap_type
    请求的陷阱的类型。 标准事件如下:
    • NX_SNMP_TRAP_COLDSTART (0)
    • NX_SNMP_TRAP_WARMSTART (1)
    • NX_SNMP_TRAP_LINKDOWN (2)
    • NX_SNMP_TRAP_LINKUP (3)
    • NX_SNMP_TRAP_AUTHENTICATE_FAILURE (4)
    • NX_SNMP_TRAP_EGPNEIGHBORLOSS (5)
      对于专有数据:
    • NX_SNMP_TRAP_CUSTOM (0xFFFFFFFF)(在 nxd_snmp.h 中定义)
  • elapsed_time 已运行时间系统 (sysUpTime)。
  • object_list_ptr 要包含在 SNMP 陷阱中的对象及其关联值的数组。 此列表以 NX_NULL 结尾。

返回值

  • NX_SUCCESS (0x00) 已成功发送 SNMP 陷阱。
  • NX_SNMP_ERROR (0x100) 发送 SNMP 陷阱时出错。
  • NX_NOT_ENABLED (0x14) 未启用 SNMPv3
  • NX_SNMP_INVALID_IP_PROTOCOL_ERROR (0x104) IP 版本不受支持
  • NX_PTR_ERROR (0x07) 输入指针无效。

允许来自

线程数

示例

NX_SNMP_TRAP_OBJECT trap_list[5];
NXD_ADDRESS dest_ip_address;

    dest_ip_address.nxd_ip_version = NX_IP_VERSION_V6 ;
    dest_ip_address.nxd_ip_address.v6[0] = 0x20010db8;
    dest_ip_address.nxd_ip_address.v6[1] = 0xf101;
    dest_ip_address.nxd_ip_address.v6[2] = 0x00000000;
    dest_ip_address.nxd_ip_address.v6[3] = 0x00000101;

/* Build an empty object list, since it is not needed for the 
   NX_SNMP_TRAP_COLDSTART trap.  */
trap_list[0].nx_snmp_object_string_ptr =  NX_NULL;

/* Send trap to SNMP manager at 193.2.2.61.  */
Status =  nxd_snmp_agent_trapv3_send(&my_agent, &dest_ip_address, "public",
                                    NX_SNMP_TRAP_COLDSTART, tx_time_get(),  
                                    trap_list);

/* If status is NX_SUCCESS the SNMP trap has been sent.  */

nxd_snmp_agent_trapv3_oid_send

发送直接指定 OID 的 SNMPv3 陷阱

原型

UINT nxd_snmp_agent_trapv3_oid_send(
    NX_SNMP_AGENT *agent_ptr, 
    NXD_ADDRESS *ip_address, 
    UCHAR *username,        
    UCHAR *oid, ULONG elapsed_time,   
    NX_SNMP_TRAP_OBJECT *object_list_ptr);

说明

此服务将 SNMPv3 陷阱发送到指定 IP 地址 (IPv4/IPv6) 中的 SNMP 管理器,并允许调用方直接指定 OID。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针。
  • ip_address 指向 SNMP 管理器的 IP 地址的指针。
  • username 用户名(社区名称)。
  • oid 指向包含 OID 的缓冲区的指针。
  • elapsed_time 已运行时间系统 (sysUpTime)。
  • object_list_ptr 要包含在 SNMP 陷阱中的对象及其关联值的数组。 此列表以 NX_NULL 结尾。

返回值

  • NX_SUCCESS (0x00) 已成功发送 SNMP 陷阱。
  • NX_SNMP_ERROR (0x100) 发送 SNMP 陷阱时出错。
  • NX_PTR_ERROR (0x16) SNMP 代理或参数指针无效。
  • NX_IP_ADDRESS_ERROR (0x21) 目标 IP 地址无效。

允许来自

线程数

示例

NXD_ADDRESS         ip_address;
NX_SNMP_TRAP_OBJECT trap_list[5];

/* Build an empty object list */
trap_list[0].nx_snmp_object_string_ptr =  NX_NULL;

ip_address.nxd_ip_version = NX_IP_VERSION_V4;
ip_address.nxd_ip_address.v4 = IP_ADDRESS(193,2,2,61);

/* Send trap to SNMP manager at 193.2.2.61.  */
Status =  nxd_snmp_agent_trapv3_oid_send(&my_agent, &ip_address, 
                                       "public", (UCHAR *)"0.9.9.9.9.9.9.9.9.9",  
                                       tx_time_get(), trap_list);

/* If status is NX_SUCCESS the SNMP trap has been sent.  */

nx_snmp_agent_v3_context_boots_set

设置重新启动的次数(如果已启用 SNMPv3)

原型

UINT nx_snmp_agent_v3_context_boots_set(
    NX_SNMP_AGENT *agent_ptr, 
    UINT boots);

说明

此服务设置 SNMP 代理记录的重新启动次数。 只有为 SNMP 代理启用了 SNMPv3,此服务才可用,因为启动计数仅在 SNMPv3 协议中使用。

输入参数

  • agent_ptr 指向 SNMP 代理控制块的指针
  • boots 要将 SNMP 代理启动计数设置为的值

返回值

  • NX_SUCCESS (0x00) 已成功设置启动计数
  • NX_SNMP_ERROR (0x100) 设置启动计数时出错
  • NX_PTR_ERROR (0x07) 输入指针无效

允许来自

初始化、线程

示例

UINT my_boots = 4;

if (my_agent.nx_snmp_agent_v3_enabled == NX_TRUE)
{
   status = nx_snmp_agent_v3_context_boots_set(&my_agent, my_boots);
}


/* If status is NX_SUCCESS the SNMP boot count is set.  */

nx_snmp_object_compare

比较两个对象

原型

UINT nx_snmp_object_compare(
    UCHAR *object,
    UCHAR *reference_object);

说明

此服务将提供的对象 ID 与引用对象 ID 进行比较。 这两个对象 ID 均采用 ASCII SMI 表示法,例如,这两个对象必须以 ASCII 字符串“1.3.6”开头。

此服务已弃用。 鼓励开发人员迁移到 nx_snmp_object_compare_extended。

输入参数

  • object 指向对象 ID 的指针。
  • reference_object 指向引用对象 ID 的指针。

返回值

  • NX_SUCCESS (0x00) 此对象与引用对象匹配。
  • NX_SNMP_NEXT_ENTRY (0x101) 对象小于引用对象。
  • NX_SNMP_ERROR (0x100) 对象大于引用对象。
  • NX_PTR_ERROR (0x07) 输入指针无效。

允许来自

初始化、线程

示例

/* Compare “requested_object” with the sysDescr object ID of 
   "1.3.6.1.2.1.1.1.0".  */
Status =  nx_snmp_object_compare(requested_object, "1.3.6.1.2.1.1.1.0");

/* If status is NX_SUCCESS, requested_object is the sysDescr object. 
   Otherwise, if status is NX_SNMP_NEXT_ENTRY, the requested object is
   less than the sysDescr. If status is NX_SNMP_ERROR, the object is 
   greater than sysDescr. */

nx_snmp_object_compare_extended

比较两个对象

原型

UINT nx_snmp_object_compare_extended(
    UCHAR *request_object, 
    UINT requested_object_length,
    UCHAR *reference_object
    UINT reference_object_length);

说明

此服务将提供的对象 ID 与引用对象 ID 进行比较。 这两个对象 ID 均采用 ASCII SMI 表示法,例如,这两个对象必须以 ASCII 字符串“1.3.6”开头。

此服务将替换 nx_snmp_object_compare。该版本要求调用方提供长度信息。

输入参数

  • request_object 指向请求对象 ID 的指针。
  • request_object_length 请求对象 ID 的长度。
  • reference_object 指向引用对象 ID 的指针。
  • request_object_length 引用对象 ID 的长度。

返回值

  • NX_SUCCESS (0x00) 此对象与引用对象匹配。
  • NX_SNMP_NEXT_ENTRY (0x101) 对象小于引用对象。
  • NX_SNMP_ERROR (0x100) 对象大于引用对象。
  • NX_PTR_ERROR (0x07) 输入指针无效。

允许来自

初始化、线程

示例

/* Compare “requested_object” with the sysDescr object ID of 
   "1.3.6.1.2.1.1.1.0".  */
Status =  nx_snmp_object_compare_extended(requested_object, 17,
                                          "1.3.6.1.2.1.1.1.0", 17);

/* If status is NX_SUCCESS, requested_object is the sysDescr object. 
   Otherwise, if status is NX_SNMP_NEXT_ENTRY, the requested object is
   less than the sysDescr. If status is NX_SNMP_ERROR, the object is 
   greater than sysDescr. */

nx_snmp_object_copy

复制对象

原型

UINT  nx_snmp_object_copy(
    UCHAR *source_object_name, 
    UCHAR *destination_object_name);

说明

此服务将 ASCII SIM 表示法中的源对象复制到目标对象。

此服务已弃用。 鼓励开发人员迁移到 nx_snmp_object_copy_extended。

输入参数

  • source_object_name 指向源对象 ID 的指针。
  • destination_object_name 指向目标对象 ID 的指针。

返回值

  • size 复制到目标名称的字节数。 如果错误,则返回零。

允许来自

初始化、线程

示例

/* Copy “my_object” to “my_new_object”.  */
size =  nx_snmp_object_copy(my_object, my_new_object);

/* Size contains the number of bytes copied. */

nx_snmp_object_copy_extended

复制对象

原型

UINT  nx_snmp_object_copy_extended(
    UCHAR *source_object_name, 
    UINT source_object_name_length,
    UCHAR *destination_object_name_buffer,
    UINT destination_object_name_buffer_size);

说明

此服务将 ASCII SIM 表示法中的源对象复制到目标对象。

此服务将替换 nx_snmp_object_copy。该版本要求调用方提供长度信息。

输入参数

  • source_object_name 指向源对象 ID 的指针。
  • source_object_name_length 源对象 ID 的长度。
  • destination_object_name_buffer 指向目标对象缓冲区的指针。
  • destination_object_name_buffer_size 目标对象缓冲区的大小。

返回值

  • size 复制到目标名称的字节数。 如果错误,则返回零。

允许来自

初始化、线程

示例

UCHAR	my_object = "1.3.6.1.2.1.1.1.0";
UCHAR	my_new_object[32];


/* Copy “my_object” to “my_new_object”.  */
size =  nx_snmp_object_copy(my_object, 17, my_new_object, sizeof(my_new_object));

/* Size contains the number of bytes copied. */

nx_snmp_object_counter_get

获取计数器对象

原型

UINT  nx_snmp_object_counter_get(
    VOID *source_ptr, 
    NX_SNMP_OBJECT_DATA *object_data);

说明

此服务在源指针指定的地址处检索计数器对象,并将其放置在 NetX 对象数据结构中。 此例程通常是从 GET 或 GETNEXT 应用程序回调例程调用的。

输入参数

  • source_ptr 指向计数器源的指针。
  • object_data 指向目标对象结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功检索计数器对象。
  • NX_PTR_ERROR (0x07) 输入指针无效。

允许来自

初始化、线程

示例

/* Get the ifInOctets (1.3.6.1.2.1.2.2.1.10.0) MIB-2 object.  */
status =  nx_snmp_object_counter_get(&ifInOctets, my_object);

/* If status is NX_SUCCESS, the ifInOctets object has been 
   retrieved and is ready to be returned. */

nx_snmp_object_counter_set

设置计数器对象

原型

UINT  nx_snmp_object_counter_set(
    VOID *destination_ptr, 
    NX_SNMP_OBJECT_DATA *object_data);

说明

此服务使用 NetX 对象数据结构中的计数器值在目标指针指定的地址处设置计数器。 此例程通常是从 SET 应用程序回调例程调用的。

输入参数

  • destination_ptr 指向计数器目标的指针。
  • object_data 指向计数器源对象结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功设置计数器对象。
  • NX_SNMP_ERROR_WRONGTYPE (0x07) 对象类型无效。
  • NX_PTR_ERROR (0x07) 输入指针无效。

允许来自

初始化、线程

示例

/* Set the ifInOctets (1.3.6.1.2.1.2.2.1.10.0) MIB-2 object with
   the counter object value contained in my_object.  */
status =  nx_snmp_object_counter_set(&ifInOctets, my_object);

/* If status is NX_SUCCESS, the ifInOctets object has been 
   set. */

nx_snmp_object_counter64_get

获取 64 位计数器对象

原型

UINT  nx_snmp_object_counter64_get(
    VOID *source_ptr, 
    NX_SNMP_OBJECT_DATA *object_data);

说明

此服务在源指针指定的地址处检索 64 位计数器对象,并将其放置在 NetX 对象数据结构中。 此例程通常是从 GET 或 GETNEXT 应用程序回调例程调用的。

输入参数

  • source_ptr 指向计数器源的指针。
  • object_data 指向目标对象结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功检索计数器对象。
  • NX_PTR_ERROR (0x07) 输入指针无效

允许来自

初始化、线程

示例

/* Get the value of my_64_bit_counter and place it into my_object
   for return.  */
status =  nx_snmp_object_counter64_get(&my_64_bit_counter, my_object);

/* If status is NX_SUCCESS, the my_64_bit_counter object has been 
   retrieved and is ready to be returned. */

nx_snmp_object_counter64_set

设置 64 位计数器对象

原型

UINT  nx_snmp_object_counter64_set(
    VOID *destination_ptr, 
    NX_SNMP_OBJECT_DATA *object_data);

说明

此服务使用 NetX 对象数据结构中的计数器值在目标指针指定的地址处设置 64 位计数器。 此例程通常是从 SET 应用程序回调例程调用的。

输入参数

  • destination_ptr 指向计数器目标的指针。
  • object_data 指向计数器源对象结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功设置计数器对象。
  • NX_SNMP_ERROR_WRONGTYPE (0x07) 对象类型无效。
  • NX_PTR_ERROR (0x07) 输入指针无效。

允许来自

初始化、线程

示例

/* Set the value of my_64_bit_counter with the value in my_object.  */
status =  nx_snmp_object_counter64_set(&my_64_bit_counter, my_object);

/* If status is NX_SUCCESS, the my_64_bit_counter object has been 
   set. */

nx_snmp_object_end_of_mib

设置 end-of-mib 值

原型

UINT  nx_snmp_object_end_of_mib(
    VOID *not_used_ptr, 
    NX_SNMP_OBJECT_DATA *object_data);

说明

此服务创建一个发出指示 MIB 结束的信号的对象,通常是从 GET 或 GETNEXT 应用程序回调例程调用的。

输入参数

  • not_used_ptr 未使用指针 – 应为 NX_NULL。
  • object_data 指向目标对象结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功生成 end-of-mib 对象。
  • NX_PTR_ERROR (0x07) 输入指针无效

允许来自

初始化、线程

示例

/* Place an end-of-mib value in my_object.  */
status =  nx_snmp_object_end_of_mib(NX_NULL, my_object);

/* If status is NX_SUCCESS, the my_object is now an end-of-mib object. */

nx_snmp_object_gauge_get

获取仪表对象

原型

UINT  nx_snmp_object_gauge_get(
    VOID *source_ptr, 
    NX_SNMP_OBJECT_DATA *object_data);

说明

此服务在源指针指定的地址处检索仪表对象,并将其放置在 NetX 对象数据结构中。 此例程通常是从 GET 或 GETNEXT 应用程序回调例程调用的。

输入参数

  • source_ptr 指向仪表源的指针。
  • object_data 指向目标对象结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功检索仪表对象。
  • NX_PTR_ERROR (0x07) 输入指针无效

允许来自

初始化、线程

示例

/* Get the value of ifSpeed (1.3.6.1.2.1.2.2.1.5.0) and place it in my_object
   for return.  */
status =  nx_snmp_object_gauge_get(&ifSpeed, my_object);

/* If status is NX_SUCCESS, the my_object now contains the ifSpeed gauge value. */

nx_snmp_object_gauge_set

设置仪表对象

原型

UINT  nx_snmp_object_gauge_set(
    VOID *destination_ptr,
    NX_SNMP_OBJECT_DATA *object_data);

说明

此服务使用 NetX 对象数据结构中的仪表值在目标指针指定的地址处设置仪表。 此例程通常是从 SET 应用程序回调例程调用的。

输入参数

  • destination_ptr 指向仪表目标的指针。
  • object_data 指向仪表源对象结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功设置仪表对象。
  • NX_SNMP_ERROR_WRONGTYPE (0x07) 对象类型无效。
  • NX_PTR_ERROR (0x07) 输入指针无效

允许来自

初始化、线程

示例

/* Set the value of “my_gauge” from the gauge value in my_object.  */
status =  nx_snmp_object_gauge_set(&my_gauge, my_object);

/* If status is NX_SUCCESS, the my_gauge now contains the new gauge value. */

nx_snmp_object_id_get

获取对象 ID

原型

UINT nx_snmp_object_id_get(
    VOID *source_ptr, 
    NX_SNMP_OBJECT_DATA *object_data);

说明

此服务在源指针指定的地址处检索对象 ID(在 ASCII SIM 表示法中),并将其放置在 NetX 对象数据结构中。 此例程通常是从 GET 或 GETNEXT 应用程序回调例程调用的。

输入参数

  • source_ptr 指向对象 ID 源的指针。
  • object_data 指向目标对象结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功检索对象 ID。
  • NX_SNMP_ERROR (0x100) 对象的长度无效
  • NX_PTR_ERROR (0x07) 输入指针无效

允许来自

初始化、线程

示例

/* Get the value of sysObjectID(1.3.6.1.2.1.1.2.0) and place it in my_object
   for return.  */
status =  nx_snmp_object_id_get(&sysObjectID, my_object);

/* If status is NX_SUCCESS, the my_object now contains the sysObjectID value. */

nx_snmp_object_id_set

设置对象 ID

原型

UINT  nx_snmp_object_id_set(
    VOID *destination_ptr, 
    NX_SNMP_OBJECT_DATA *object_data);

说明

此服务使用 NetX 对象数据结构中的对象 ID 在目标指针指定的地址处设置对象 ID(在 ASCII SIM 表示法中)。 此例程通常是从 SET 应用程序回调例程调用的。

输入参数

  • destination_ptr 指向对象 ID 目标的指针。
  • object_data 指向对象结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功设置对象 ID。
  • NX_SNMP_ERROR_WRONGTYPE (0x07) 对象类型无效。
  • NX_PTR_ERROR (0x07) 输入指针无效

允许来自

初始化、线程

示例

/* Set the string “my_object_id” with the object ID value contained 
   in my_object.  */
status =  nx_snmp_object_id_set(my_object_id, my_object);

/* If status is NX_SUCCESS, the my_object_id now contains the object ID value. */

nx_snmp_object_integer_get

获取整数对象

原型

UINT  nx_snmp_object_integer_get(
    VOID *source_ptr, 
    NX_SNMP_OBJECT_DATA *object_data);

说明

此服务在源指针指定的地址处检索整数对象,并将其放置在 NetX 对象数据结构中。 此例程通常是从 GET 或 GETNEXT 应用程序回调例程调用的。

输入参数

  • source_ptr 指向整数源的指针。
  • object_data 指向目标对象结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功检索整数对象。
  • NX_PTR_ERROR (0x07) 输入指针无效

允许来自

初始化、线程

示例

/* Get the value of sysServices (1.3.6.1.2.1.1.7.0) and place it in my_object
   for return.  */
status =  nx_snmp_object_integer_get(&sysServices, my_object);

/* If status is NX_SUCCESS, the my_object now contains the sysServices value. */

nx_snmp_object_integer_set

设置整数对象

原型

UINT  nx_snmp_object_integer_set(
    VOID *destination_ptr,
    NX_SNMP_OBJECT_DATA *object_data);

说明

此服务使用 NetX 对象数据结构中的整数值在目标指针指定的地址处设置整数。 此例程通常是从 SET 应用程序回调例程调用的。

输入参数

  • destination_ptr 指向整数目标的指针。
  • object_data 指向整数源对象结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功设置整数对象。
  • NX_SNMP_ERROR_WRONGTYPE (0x07) 对象类型无效。
  • NX_PTR_ERROR (0x07) 输入指针无效

允许来自

初始化、线程

示例

/* Set the value of ifAdminStatus from the integer value in my_object.  */
status =  nx_snmp_object_integer_set(&ifAdminStatus, my_object);

/* If status is NX_SUCCESS, ifAdnminStatus now contains the new integer value. */

nx_snmp_object_ip_address_get

获取 IP 地址对象(仅限 IPv4)

原型

UINT  nx_snmp_object_ip_address_get(
    VOID *source_ptr,
    NX_SNMP_OBJECT_DATA *object_data);

说明

此服务在源指针指定的地址处检索 IP 地址对象,并将其放置在 NetX 对象数据结构中。 此例程通常是从 GET 或 GETNEXT 应用程序回调例程调用的。

输入参数

  • source_ptr 指向 IPv4 地址源的指针。
  • object_data 指向目标对象结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功检索 IP 地址对象。
  • NX_PTR_ERROR (0x07) 输入指针无效

允许来自

初始化、线程

示例

/* Get the value of ipAdEntAddr (1.3.6.1.2.1.4.20.1.1.0) and place it in my_object
   for return.  */
status =  nx_snmp_object_ip_address_get(&ipAdEntAddr, my_object);

/* If status is NX_SUCCESS, the my_object now contains the ipAdEntAddr value. */

nx_snmp_object_ipv6_address_get

获取 IP 地址对象(仅限 IPv6)

原型

UINT  nx_snmp_object_ipv6_address_get(
    VOID *source_ptr,
    NX_SNMP_OBJECT_DATA *object_data);

说明

此服务在源指针指定的地址处检索 IPv6 地址对象,并将其放置在 NetX 对象数据结构中。 此例程通常是从 GET 或 GETNEXT 应用程序回调例程调用的。

输入参数

  • source_ptr 指向 IPv6 地址源的指针。
  • object_data 指向目标对象结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功检索 IP 地址对象。
  • NX_SNMP_ERROR_WRONGTYPE (0x07) 输入 SNMP 对象代码不正确
  • NX_NOT_ENABLED (0x14) 未启用 IPv6
  • NX_PTR_ERROR (0x07) 输入指针无效

允许来自

初始化、线程

示例

/* Get the value of ipAdEntAddr (1.3.6.1.2.1.4.20.1.1.0) and place it in my_object
   for return.  */
status =  nx_snmp_object_ipv6_address_get(&ipAdEntAddr, my_object);

/* If status is NX_SUCCESS, the my_object now contains the ipAdEntAddr value. */

nx_snmp_object_ip_address_set

设置 IPv4 地址对象

原型

UINT  nx_snmp_object_ip_address_set(
    VOID *destination_ptr, 
    NX_SNMP_OBJECT_DATA *object_data);

说明

此服务使用 NetX 对象数据结构中的 IP 地址在目标指针指定的地址处设置 IPv4 地址。 此例程通常是从 SET 应用程序回调例程调用的。

输入参数

  • destination_ptr 指向要设置的 IP 地址的指针。
  • object_data 指向 IP 地址对象结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功设置 IP 地址对象。
  • NX_SNMP_ERROR_WRONGTYPE (0x07) 对象类型无效。
  • NX_PTR_ERROR (0x07) 输入指针无效

允许来自

初始化、线程

示例

/* Set the value of atNetworkAddress to the IP address in my_object.  */
status =  nx_snmp_object_ip_address_set(&atNetworkAddress, my_object);

/* If status is NX_SUCCESS, atNetWorkAddress now contains the new IP address. */

nx_snmp_object_ipv6_address_set

设置 IPv6 地址对象

原型

UINT  nx_snmp_object_ipv6_address_set(
    VOID *destination_ptr, 
    NX_SNMP_OBJECT_DATA *object_data);

说明

此服务使用 NetX 对象数据结构中的 IP 地址在目标指针指定的地址处设置 IPv6 地址。 此例程通常是从 SET 应用程序回调例程调用的。

输入参数

  • destination_ptr 指向要设置的 IP 地址的指针。
  • object_data 指向 IP 地址对象结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功设置 IPv6 地址对象。
  • NX_SNMP_ERROR_WRONGTYPE (0x07) 对象类型无效。
  • NX_NOT_ENABLED (0x14) 未启用 IPv6
  • NX_PTR_ERROR (0x07) 输入指针无效

允许来自

初始化、线程

示例

/* Set the value of atNetworkAddress to the IP address in my_object.  */
status =  nx_snmp_object_ipv6_address_set(&atNetworkAddress, my_object);

/* If status is NX_SUCCESS, atNetWorkAddress now contains the new IP address. */

nx_snmp_object_no_instance

设置 no-instance 对象

原型

UINT  nx_snmp_object_no_instance(
    VOID *not_used_ptr, 
    NX_SNMP_OBJECT_DATA *object_data);

说明

此服务创建一个发出指示没有指定对象的实例的信号的对象,通常是从 GET 或 GETNEXT 应用程序回调例程调用的。

输入参数

  • not_used_ptr 未使用指针 – 应为 NX_NULL。
  • object_data 指向目标对象结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功生成 no-instance 对象。
  • NX_PTR_ERROR (0x07) 输入指针无效

允许来自

初始化、线程

示例

/* Place no-instance value in my_object.  */
status =  nx_snmp_object_no_instance(NX_NULL, my_object);

/* If status is NX_SUCCESS, the my_object is now a no-instance object. */

nx_snmp_object_not_found

设置 not-found 对象

原型

UINT  nx_snmp_object_not_found(
    VOID *not_used_ptr, 
    NX_SNMP_OBJECT_DATA *object_data);

说明

此服务创建一个发出指示找不到对象的信号的对象,通常是从 GET 或 GETNEXT 应用程序回调例程调用的。

输入参数

  • not_used_ptr 未使用指针 – 应为 NX_NULL。
  • object_data 指向目标对象结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功生成 not-found 对象。
  • NX_PTR_ERROR (0x07) 输入指针无效

允许来自

初始化、线程

示例

/* Place not-found value in my_object.  */
status =  nx_snmp_object_not_found(NX_NULL, my_object);

/* If status is NX_SUCCESS, the my_object is now a not-found object. */

nx_snmp_object_octet_string_get

获取八进制字符串对象

原型

UINT  nx_snmp_object_octet_string_get(
    VOID *source_ptr,
    NX_SNMP_OBJECT_DATA *object_data, 
    UINT length);

说明

此服务在源指针指定的地址处检索八进制字符串,并将其放置在 NetX 对象数据结构中。 此例程通常是从 GET 或 GETNEXT 应用程序回调例程调用的。

输入参数

  • source_ptr 指向八进制字符串源的指针。
  • object_data 指向目标对象结构的指针。
  • length 八进制字符串的字节数。

返回值

  • NX_SUCCESS (0x00) 已成功检索八进制字符串对象。
  • NX_PTR_ERROR (0x07) 输入指针无效

允许来自

初始化、线程

示例

/* Get the value of the 6-byte ifPhysAddress (1.3.6.1.2.1.2.2.1.6.0) and place 
   it in my_object for return.  */
status =  nx_snmp_object_octet_string_get(ifPhysAddress, my_object, 6);

/* If status is NX_SUCCESS, the my_object now contains the ifPhysAddress value. */

nx_snmp_object_octet_string_set

设置八进制字符串对象

原型

UINT  nx_snmp_object_octet_string_set(
    VOID *destination_ptr, 
    NX_SNMP_OBJECT_DATA *object_data);

说明

此服务使用 NetX 对象数据结构中的八进制字符串在目标指针指定的地址处设置八进制字符串。 此例程通常是从 SET 应用程序回调例程调用的。

输入参数

  • destination_ptr 指向八进制字符串目标的指针。
  • object_data 指向八进制字符串源对象结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功设置八进制字符串对象。
  • NX_SNMP_ERROR_WRONGTYPE (0x07) 对象类型无效。
  • NX_PTR_ERROR (0x07) 输入指针无效

允许来自

初始化、线程

示例

/* Set the value of sysContact (1.3.6.1.2.1.1.4.0) from the 
   octet string in my_object.  */
status =  nx_snmp_object_octet_string_set(sysContact, my_object);

/* If status is NX_SUCCESS, sysContact now contains the new octet string. */

nx_snmp_object_string_get

获取 ASCII 字符串对象

原型

UINT  nx_snmp_object_string_get(
    VOID *source_ptr, 
    NX_SNMP_OBJECT_DATA *object_data);

说明

此服务在源指针指定的地址处检索 ASCII 字符串,并将其放置在 NetX 对象数据结构中。 此例程通常是从 GET 或 GETNEXT 应用程序回调例程调用的。

输入参数

  • source_ptr 指向 ASCII 字符串源的指针。
  • object_data 指向目标对象结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功检索 ASCII 字符串对象。
  • NX_SNMP_ERROR (0x100) 字符串太大
  • NX_PTR_ERROR (0x07) 输入指针无效

允许来自

初始化、线程

示例

/* Get the value of the sysDescr (1.3.6.1.2.1.1.1.0) and place 
   it in my_object for return.  */
status =  nx_snmp_object_string_get(sysDescr, my_object);

/* If status is NX_SUCCESS, the my_object now contains the sysDescr string. */

nx_snmp_object_string_set

设置 ASCII 字符串对象

原型

UINT  nx_snmp_object_string_set(
    VOID *destination_ptr, 
    NX_SNMP_OBJECT_DATA *object_data);

说明

此服务使用 NetX 对象数据结构中的 ASCII 字符串在目标指针指定的地址处设置 ASCII 字符串。 此例程通常是从 SET 应用程序回调例程调用的。

输入参数

  • destination_ptr 指向 ASCII 字符串目标的指针。
  • object_data 指向 ASCII 字符串源对象结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功设置 ASCII 字符串对象。
  • NX_SNMP_ERROR (0x100) 字符串太大。
  • NX_SNMP_ERROR_BADVALUE (0x03) 字符串中的字符无效
  • NX_SNMP_ERROR_WRONGTYPE (0x07) 对象类型无效。
  • NX_PTR_ERROR (0x07) 输入指针无效

允许来自

初始化、线程

示例

/* Set the value of sysContact (1.3.6.1.2.1.1.4.0) from the 
   ASCII string in my_object.  */
status =  nx_snmp_object_string_set(sysContact, my_object);

/* If status is NX_SUCCESS, sysContact now contains the new ASCII string. */

nx_snmp_object_timetics_get

获取 timetics 对象

原型

UINT  nx_snmp_object_timetics_get(
    VOID *source_ptr, 
    NX_SNMP_OBJECT_DATA *object_data);

说明

此服务在源指针指定的地址处检索 timetics,并将其放置在 NetX 对象数据结构中。 此例程通常是从 GET 或 GETNEXT 应用程序回调例程调用的。

输入参数

  • source_ptr 指向 timetics 源的指针。
  • object_data 指向目标对象结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功检索 timetics 对象。
  • NX_PTR_ERROR (0x07) 输入指针无效

允许来自

初始化、线程

示例

/* Get the value of the sysUpTime (1.3.6.1.2.1.1.3.0) and place 
   it in my_object for return.  */
status =  nx_snmp_object_timetics_get(sysUpTime, my_object);

/* If status is NX_SUCCESS, the my_object now contains the sysUpTime value. */

nx_snmp_object_timetics_set

设置 timetics 对象

原型

UINT  nx_snmp_object_timetics_set(
    VOID *destination_ptr, 
    NX_SNMP_OBJECT_DATA *object_data);

说明

此服务使用 NetX 对象数据结构中的 timetics 在目标指针指定的地址处设置 timetics 变量。 此例程通常是从 SET 应用程序回调例程调用的。

输入参数

  • destination_ptr 指向 timetics 目标的指针。
  • object_data 指向 time tics源对象结构的指针。

返回值

  • NX_SUCCESS (0x00) 已成功设置 timetics 对象。
  • NX_SNMP_ERROR_WRONGTYPE (0x07) 对象类型无效。
  • NX_PTR_ERROR (0x07) 输入指针无效

允许来自

初始化、线程

示例

/* Set the value of “my_time” from the timetics value in my_object.  */
status =  nx_snmp_object_timetics_set(&my_time, my_object);

/* If status is NX_SUCCESS, my_time now contains the new timetics. */