第 3 章 - Azure RTOS NetX Duo DHCP 服务器服务的说明

本章按字母顺序介绍了所有 NetX Duo DHCP 服务器服务(如下所列)。

注意

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

nx_dhcp_server create

创建 DHCP 服务器实例

原型

UINT nx_dhcp_server_create(
    NX_DHCP_SERVER *dhcp_ptr,
    NX_IP *ip_ptr,
    VOID *stack_ptr,
    ULONG stack_size,
    CHAR *input_address_list,
    CHAR *name_ptr,
    NX_PACKET_POOL *packet_pool_ptr);

说明

此服务使用以前创建的 IP 实例创建 DHCP 服务器实例。

重要

应用程序必须确保为 IP 创建服务创建的数据包池的最小有效负载为 548 字节,其中不包括 UDP、IP 和以太网标头。

输入参数

  • dhcp_ptr:指向 DHCP 服务器控制块的指针。
  • ip_ptr:指向 DHCP 服务器 IP 实例的指针。
  • stack_ptr:指向 DHCP 服务器堆栈位置的指针。
  • stack_size:DHCP 服务器堆栈的大小 input_address_list:指向服务器的 IP 地址列表的指针
  • name_ptr:指向 DHCP 服务器名称的指针 packet_pool_ptr:指向 DHCP 服务器数据包池的指针

返回值

  • NX_SUCCESS (0x00):成功创建了 DHCP 服务器。
  • NX_DHCP_INADEQUATE_PACKET_POOL_PAYLOAD (0XA9):数据包有效负载太小错误
  • NX_DHCP_NO_SERVER_OPTION_LIST (0X96):服务器选项列表为空
  • NX_DHCP_PARAMETER_ERROR (0x92):无效的非指针输入
  • NX_CALLER_ERROR (0x11):服务调用方无效。
  • NX_PTR_ERROR (0x16):无效的指针输入。

允许来自

应用程序

示例

/* Create a DHCP Server instance. */

status = nx_dhcp_server_create(&dhcp_server, &server_ip, pointer,
    DEMO_SERVER_STACK_SIZE, SERVER_IP_ADDRESS_LIST, "DHCP server", &server_pool);

/* If status is NX_SUCCESS a DHCP Server instance was successfully created. */

nx_dhcp_create_server_ip_address_list

创建 IP 地址池

原型

UINT nx_dhcp_create_server_ip_address_list(
    NX_DHCP_SERVER *dhcp_ptr,
    UINT iface_index,
    ULONG start_ip_address,
    ULONG end_ip_address,
    UINT *addresses_added);

说明

此服务为指定的 DHCP 服务器创建要分配的特定于网络接口的可用 IP 地址池。 开始和结束 IP 地址必须与指定的网络接口匹配。 如果 IP 地址列表不够大(在用户可配置的 NX_DHCP_IP_ADDRESS_MAX_LIST_SIZE 参数中设置),添加的 IP 地址的实际数量可能小于总地址。

输入参数

  • dhcp_ptr:指向 DHCP 服务器控制块的指针。
  • iface_index:与网络接口对应的索引
  • start_ip_address:第一个可用的 IP 地址
  • end_ip_address:最后一个可用的 IP 地址
  • addresses_added:添加到列表的 IP 地址数

返回值

  • NX_SUCCESS (0x00):成功创建了 DHCP 服务器。
  • NX_DHCP_SERVER_BAD_INTERFACE_INDEX (0XA1):索引与地址不匹配
  • NX_DHCP_INVALID_IP_ADDRESS_LIST (0X99):无效的地址输入
  • NX_DHCP_INVALID_IP_ADDRESS (0x9B):不合逻辑的开始/结束地址
  • NX_PTR_ERROR (0x16):无效的指针输入。

允许来自

应用程序

示例

/* Create a pool of available IP addresses to assign. */

status = nx_dhcp_create_server_ip_list(&dhcp_server, iface_index,
    START_IP_ADDRESS_LIST, END_IP_ADDRESS_LIST, &addresses_added);

/* If status is NX_SUCCESS a IP address list was successfully created.
    addresses_added indicates how many IP addresses were actually added to the
    list. */

nx_dhcp_clear_client_record

从服务器数据库中删除客户端记录

原型

UINT nx_dhcp_clear_client_record(
    NX_DHCP_SERVER *dhcp_ptr,
    NX_DHCP_CLIENT *dhcp_client_ptr);

说明

此服务从服务器数据库中清除客户端记录。

输入参数

  • dhcp_ptr:指向 DHCP 服务器控制块的指针。
  • dhcp_client_ptr:指向要删除的 DHCP 客户端的指针

返回值

  • NX_SUCCESS (0x00):成功创建了 DHCP 服务器。
  • NX_PTR_ERROR (0x16):无效的指针输入。
  • NX_CALLER_ERROR (0x11):服务的非线程调用方

允许来自

应用程序

示例

/* Remove Client record from the server database. */
status = nx_dhcp_clear_client_record(&dhcp_server, &dhcp_client_ptr);

/* If status is NX_SUCCESS the specified Client was removed from the database. */

nx_dhcp_set_interface_network_parameters

设置 DHCP 选项的网络参数

原型

UINT nx_dhcp_set_interface_network_parameters(
    NX_DHCP_SERVER *dhcp_ptr,
    UINT iface_index, 
    ULONG subnet_mask,
    ULONG default_gateway_address,
    ULONG dns_server_address);

说明

此服务为指定接口的网络关键参数设置默认值。 DHCP 服务器会将这些选项包含在其提供给 DHCP 客户端的 OFFER 和 ACK 回复中。 如果主机设置了运行 DHCP 服务器的接口参数,则这些参数的默认设置如下:路由器设置为 DHCP 服务器本身的主接口网关,DNS 服务器地址设置为 DHCP 服务器本身,子网掩码设置为与配置的 DHCP 服务器接口相同。

输入参数

  • dhcp_ptr:指向 DHCP 服务器控制块的指针。
  • iface_index:与网络接口对应的索引
  • subnet_mask:客户端网络的子网掩码
  • default_gateway_address:客户端的路由器 IP 地址
  • dns_server_address:客户端网络的 DNS 服务器

返回值

  • NX_SUCCESS (0x00):成功创建了 DHCP 服务器。
  • NX_DHCP_SERVER_BAD_INTERFACE_INDEX (0XA1):索引与地址不匹配
  • NX_DHCP_INVALID_NETWORK_PARAMETERS (0XA3):无效的网络参数
  • NX_PTR_ERROR (0x16):无效的指针输入。

允许来自

应用程序

示例

/* Set network parameters for a specific interface. */

status = nx_dhcp_set_interface_network_parameters(&dhcp_server, iface_index,
    NX_DHCP_SUBNET_MASK, NX_DHCP_DEFAULT_GATEWAY,
    NX_DHCP_DNS_SERVER);

/* If status is NX_SUCCESS network parameters were successfully set. */

nx_dhcp_server_delete

删除 DHCP 服务器实例

原型

UINT nx_dhcp_server_delete(NX_DHCP_SERVER *dhcp_ptr);

说明

此服务删除先前创建的 DHCP 服务器实例。

输入参数

  • dhcp_ptr:指向 DHCP 服务器实例的指针。

返回值

  • NX_SUCCESS (0x00):成功删除了 DHCP 服务器。
  • NX_PTR_ERROR (0x16):无效的指针输入。
  • NX_DHCP_PARAMETER_ERROR (0x92):无效的非指针输入
  • NX_CALLER_ERROR (0x11):服务调用方无效。

获准方式

线程数

示例

/* Delete a DHCP Server instance. */

status = nx_dhcp_server_delete(&dhcp_server);

/* If status is NX_SUCCESS the DHCP Server instance was successfully deleted. */

nx_dhcp_server_start

启动 DHCP 服务器处理

原型

UINT nx_dhcp_server_start(NX_DHCP_SERVER *dhcp_ptr);

说明

此服务启动 DHCP 服务器处理,其中包括创建服务器 UDP 套接字、绑定 DHCP 端口以及等待接收客户端 DHCP 请求。

输入参数

  • dhcp_ptr:指向以前所创建 DHCP 实例的指针。

返回值

  • NX_SUCCESS (0x00):成功启动了服务器。
  • NX_DHCP_ALREADY_STARTED (0x93):已启动 DHCP。
  • NX_PTR_ERROR (0x16):无效的指针输入。
  • NX_CALLER_ERROR (0x11):服务调用方无效。
  • NX_DHCP_PARAMETER_ERROR (0x92):无效的非指针输入

允许来自

线程数

示例

/* Start the DHCP Server processing for this IP instance. */

status = nx_dhcp_server_start(&dhcp_server);

/* If status is NX_SUCCESS the DHCP Server was successfully started. */

nx_dhcp_server_stop

停止 DHCP 服务器处理

原型

UINT nx_dhcp_server_stop(NX_DHCP_SERVER *dhcp_ptr);

说明

此服务停止 DHCP 服务器处理,其中包括接收 DHCP 客户端请求。

输入参数

  • dhcp_ptr:指向 DHCP 服务器实例的指针。

返回值

  • NX_SUCCESS (0x00):成功停止了 DHCP。
  • NX_DHCP_ALREADY_STARTED (0x93):已启动 DHCP。
  • NX_PTR_ERROR (0x16):无效的指针输入。
  • NX_CALLER_ERROR (0x11):服务调用方无效。
  • NX_DHCP_PARAMETER_ERROR (0x92):无效的非指针输入

允许来自

线程数

示例

/* Stop the DHCP Server processing for this IP instance. */

status = nx_dhcp_server_stop(&dhcp_server);

/* If status is NX_SUCCESS the DHCP Server was successfully stopped. */