第 3 章 - Azure RTOS NetX AutoIP 服务的说明

本章按字母顺序介绍如下所列的所有 Azure RTOS NetX AutoIP 服务。

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

nx_auto_ip_create

创建 AutoIP 实例

原型

UINT nx_auto_ip_create(NX_AUTO_IP *auto_ip_ptr, CHAR *name,
            NX_IP *ip_ptr, VOID *stack_ptr, ULONG stack_size,
            UINT priority);

说明

此服务在指定的 IP 实例上创建 AutoIP 实例。

  • auto_ip_ptr:指向 AutoIP 控制块的指针。
  • name:AutoIP 实例的名称。
  • ip_ptr:指向 IP 实例的指针。
  • stack_ptr:指向 AutoIP 线程堆栈区域的指针。
  • stack_size:AutoIP 线程堆栈区域的大小。
  • priority:AutoIP 线程的优先级。

注意

如果使用 DHCP,则 DHCP 线程的优先级必须高于 IP 实例线程和 AutoIP 线程的优先级。

返回值

  • NX_SUCCESS:(0x00) 创建 AutoIP 成功。
  • NX_AUTO_IP_ERROR:(0xA00) 创建 AutoIP 出错。
  • NX_PTR_ERROR:(0x16) AutoIP、ip_ptr 或堆栈指针无效。
  • NX_CALLER_ERROR:(0x11) 此服务的调用方无效。

获准方式

初始化、线程

示例

/* Create the AutoIP instance "auto_ip_0" on "ip_0". */
status = nx_auto_ip_create(&auto_ip_0, "AutoIP 0", &ip_0, pointer, 4096, 1);

/* If status is NX_SUCCESS an AutoIP instance was successfully created. */

另请参阅

nx_auto_ip_delete、nx_auto_ip_set_interface、nx_auto_ip_get_address、nx_auto_ip_start、nx_auto_ip_stop

nx_auto_ip_delete

删除 AutoIP 实例

原型

UINT nx_auto_ip_delete(NX_AUTO_IP *auto_ip_ptr);

说明

此服务删除所指定 IP 实例上先前创建的 AutoIP 实例。

输入参数

  • auto_ip_ptr:指向 AutoIP 控制块的指针。

返回值

  • NX_SUCCESS:(0x00) 删除 AutoIP 成功。
  • NX_AUTO_IP_ERROR:(0xA00) 删除 AutoIP 出错。
  • NX_PTR_ERROR (0x16):AutoIP 指针无效。
  • NX_CALLER_ERROR (0x11):此服务的调用方无效。

允许来自

线程数

示例

/* Delete the AutoIP instance "auto_ip_0." */
status = nx_auto_ip_delete(&auto_ip_0);

/* If status is NX_SUCCESS an AutoIP instance was successfully deleted. */

另请参阅

nx_auto_ip_create、nx_auto_ip_set_interface、nx_auto_ip_get_address、nx_auto_ip_start、nx_auto_ip_stop

nx_auto_ip_get_address

获取当前 AutoIP 地址

原型

UINT nx_auto_ip_get_address(NX_AUTO_IP *auto_ip_ptr,
                            ULONG *local_ip_address);

说明

此服务检索当前设置的 AutoIP 地址, 如果没有当前 AutoIP 地址,则会返回 IP 地址 0.0.0.0。

输入参数

  • auto_ip_ptr:指向 AutoIP 控制块的指针。
  • local_ip_address:用于返回 IP 地址的目标。

返回值

  • NX_SUCCESS:(0x00) 获取 AutoIP 地址成功。
  • NX_AUTO_IP_NO_LOCAL:(0xA01) 没有有效的 AutoIP 地址。
  • NX_PTR_ERROR:(0x16) AutoIP 指针无效。
  • NX_CALLER_ERROR:(0x11) 此服务的调用方无效。

允许来自

初始化、计时器、线程和 ISR

示例

ULONG local_address;

/* Get the AutoIP address resolved by the instance "auto_ip_0." */
status = nx_auto_ip_get_address(&auto_ip_0, &local_address);

/* If status is NX_SUCCESS the local IP address is in "local_address." */

另请参阅

nx_auto_ip_create、nx_auto_ip_set_interface、nx_auto_ip_delete, nx_auto_ip_start、nx_auto_ip_stop

nx_auto_ip_set_interface

设置 AutoIP 的网络接口

原型

UINT nx_auto_ip_set_interface(NX_AUTO_IP *auto_ip_ptr,
                                UINT interface_index);

说明

此服务设置要由 AutoIP 探测网络 IP 地址的网络接口索引。 默认值为零(主网络接口)。 仅适用于多宿主设备。

输入参数

  • auto_ip_ptr:指向 AutoIP 控制块的指针。
  • interface_index:要探测 IP 地址的接口

返回值

  • NX_SUCCESS:(0x00) 设置 AutoIP 接口成功
  • NX_AUTO_IP_BAD_INTERFACE_INDEX:(0xA02) 网络接口无效
  • NX_PTR_ERROR:(0x16) AutoIP 指针无效。
  • NX_CALLER_ERROR:(0x11) 此服务的调用方无效。

允许来自

初始化、计时器、线程和 ISR

示例

ULONG interface_index;

/* Set the network interface on which AutoIP probes for host address. */
status = nx_auto_ip_set_interface(&auto_ip_0, interface_index);

/* If status is NX_SUCCESS the network interface is valid and set in the AutoIP control block auto_ip_0. */

另请参阅

nx_auto_ip_create、nx_auto_ip_get_address、nx_auto_ip_delete、nx_auto_ip_start、nx_auto_ip_stop

nx_auto_ip_start

启动 AutoIP 处理

原型

UINT nx_auto_ip_start(NX_AUTO_IP *auto_ip_ptr,
                    ULONG starting_local_address);

说明

此服务在先前创建的 AutoIP 实例上启动 AutoIP 协议。

输入参数

  • auto_ip_ptr:指向 AutoIP 控制块的指针。
  • starting_local_address:可选的 AutoIP 启动地址。 值为 IP_ADDRESS(0,0,0,0) 表示应派生随机的 AutoIP 地址。 否则,如果指定了有效的 AutoIP 地址,则 NetX AutoIP 会尝试分配该地址。

返回值

  • NX_SUCCESS:(0x00) 启动 AutoIP 成功。
  • NX_AUTO_IP_ERROR:(0xA00) 启动 AutoIP 出错。
  • NX_PTR_ERROR:(0x16) AutoIP 指针无效。
  • NX_CALLER_ERROR:(0x11) 此服务的调用方无效。

允许来自

初始化、线程

示例

/* Start the AutoIP instance "auto_ip_0." */
status = nx_auto_ip_start(&auto_ip_0, IP_ADDRESS(0,0,0,0));

/* If status is NX_SUCCESS an AutoIP instance was successfully started. */

另请参阅

nx_auto_ip_create、nx_auto_ip_set_interface、nx_auto_ip_delete、nx_auto_ip_get_address、nx_auto_ip_stop

nx_auto_ip_stop

停止 AutoIP 处理

原型

UINT nx_auto_ip_stop(NX_AUTO_IP *auto_ip_ptr);

说明

此服务在先前创建并启动的 AutoIP 实例上停止 AutoIP 协议。 通常,此服务在 IP 地址通过 DHCP 或手动更改为非 AutoIP 地址时使用。

输入参数

  • auto_ip_ptr:指向 AutoIP 控制块的指针。

返回值

  • NX_SUCCESS:(0x00) 停止 AutoIP 成功。
  • NX_AUTO_IP_ERROR:(0xA00) 停止 AutoIP 出错。
  • NX_PTR_ERROR:(0x16) AutoIP 指针无效。
  • NX_CALLER_ERROR:(0x11) 此服务的调用方无效。

允许来自

线程数

示例

/* Stop the AutoIP instance "auto_ip_0." */
status = nx_auto_ip_stop(&auto_ip_0);

/* If status is NX_SUCCESS an AutoIP instance was successfully stopped. */

另请参阅

nx_auto_ip_create、nx_auto_ip_set_interface、nx_auto_ip_delete、nx_auto_ip_get_address、nx_auto_ip_start