Google 致力于为黑人社区推动种族平等。查看具体行动

SRP

此模块包含控制 SRP 客户端行为的函数。

摘要

此模块包含服务注册协议的功能。

此模块包含 SRP 客户端缓冲区和服务池的函数。

此模块中的函数只有在启用 OPENThread_CONFIG_SRP_CLIENT_BUFFERS_ENABLE 功能时才可用。

枚举

anonymous enum{
  OT_SRP_SERVER_SERVICE_FLAG_BASE_TYPE = 1 << 0,
  OT_SRP_SERVER_SERVICE_FLAG_SUB_TYPE = 1 << 1,
  OT_SRP_SERVER_SERVICE_FLAG_ACTIVE = 1 << 2,
  OT_SRP_SERVER_SERVICE_FLAG_DELETED = 1 << 3
}
枚举
anonymous enum{
  OT_SRP_SERVER_FLAGS_ANY_SERVICE = (OT_SRP_SERVER_SERVICE_FLAG_BASE_TYPE | OT_SRP_SERVER_SERVICE_FLAG_SUB_TYPE | OT_SRP_SERVER_SERVICE_FLAG_ACTIVE | OT_SRP_SERVER_SERVICE_FLAG_DELETED),
  OT_SRP_SERVER_FLAGS_BASE_TYPE_SERVICE_ONLY = (OT_SRP_SERVER_SERVICE_FLAG_BASE_TYPE | OT_SRP_SERVER_SERVICE_FLAG_ACTIVE | OT_SRP_SERVER_SERVICE_FLAG_DELETED),
  OT_SRP_SERVER_FLAGS_SUB_TYPE_SERVICE_ONLY = (OT_SRP_SERVER_SERVICE_FLAG_SUB_TYPE | OT_SRP_SERVER_SERVICE_FLAG_ACTIVE | OT_SRP_SERVER_SERVICE_FLAG_DELETED),
  OT_SRP_SERVER_FLAGS_ANY_TYPE_ACTIVE_SERVICE = (OT_SRP_SERVER_SERVICE_FLAG_BASE_TYPE | OT_SRP_SERVER_SERVICE_FLAG_SUB_TYPE | OT_SRP_SERVER_SERVICE_FLAG_ACTIVE),
  OT_SRP_SERVER_FLAGS_ANY_TYPE_DELETED_SERVICE = (OT_SRP_SERVER_SERVICE_FLAG_BASE_TYPE | OT_SRP_SERVER_SERVICE_FLAG_SUB_TYPE | OT_SRP_SERVER_SERVICE_FLAG_ACTIVE)
}
枚举
otSrpClientItemState{
  OT_SRP_CLIENT_ITEM_STATE_TO_ADD,
  OT_SRP_CLIENT_ITEM_STATE_ADDING,
  OT_SRP_CLIENT_ITEM_STATE_TO_REFRESH,
  OT_SRP_CLIENT_ITEM_STATE_REFRESHING,
  OT_SRP_CLIENT_ITEM_STATE_TO_REMOVE,
  OT_SRP_CLIENT_ITEM_STATE_REMOVING,
  OT_SRP_CLIENT_ITEM_STATE_REGISTERED,
  OT_SRP_CLIENT_ITEM_STATE_REMOVED
}
枚举
此枚举指定 SRP 客户端项(服务或主机信息)状态。
otSrpServerAddressMode{
  OT_SRP_SERVER_ADDRESS_MODE_UNICAST = 0,
  OT_SRP_SERVER_ADDRESS_MODE_ANYCAST = 1
}
枚举
此枚举表示 SRP 服务器使用的地址模式。
otSrpServerState{
  OT_SRP_SERVER_STATE_DISABLED = 0,
  OT_SRP_SERVER_STATE_RUNNING = 1,
  OT_SRP_SERVER_STATE_STOPPED = 2
}
枚举
表示 SRP 服务器的状态。

类型定义符

otSrpClientAutoStartCallback)(const otSockAddr *aServerSockAddr, void *aContext) typedef
void(*
此函数指针类型定义了 SRP 客户端在回调自动启动或停止时使用的回调。
otSrpClientBuffersServiceEntry typedef
此结构体表示 SRP 客户端服务池条目。
otSrpClientCallback)(otError aError, const otSrpClientHostInfo *aHostInfo, const otSrpClientService *aServices, const otSrpClientService *aRemovedServices, void *aContext) typedef
void(*
此函数指针类型定义了 SRP 客户端用于通知用户更改/事件/错误的回调。
otSrpClientHostInfo typedef
此结构表示 SRP 客户端主机信息。
otSrpClientService typedef
此结构表示 SRP 客户端服务。
otSrpServerAddressMode typedef
此枚举表示 SRP 服务器使用的地址模式。
otSrpServerHost typedef
这种不透明类型表示 SRP 服务主机。
otSrpServerLeaseConfig typedef
此结构包括 SRP 服务器 LEASE 和 KEY-LEASE 配置。
otSrpServerService typedef
这种不透明类型表示 SRP 服务。
otSrpServerServiceFlags typedef
uint8_t
服务标志类型,用于表示在搜索(或迭代)SRP 服务列表时要包含或排除的服务。
otSrpServerServiceUpdateHandler)(otSrpServerServiceUpdateId aId, const otSrpServerHost *aHost, uint32_t aTimeout, void *aContext) typedef
void(*
此函数处理 SRP 服务更新。
otSrpServerServiceUpdateId typedef
uint32_t
SRP 服务器上 SRP 服务更新事务的 ID。

函数

otSrpClientAddService(otInstance *aInstance, otSrpClientService *aService)
此函数用于向服务器注册一项服务。
otSrpClientBuffersAllocateService(otInstance *aInstance)
此函数从池中分配新的服务条目。
otSrpClientBuffersFreeAllServices(otInstance *aInstance)
void
此函数会释放之前分配的所有服务条目。
otSrpClientBuffersFreeService(otInstance *aInstance, otSrpClientBuffersServiceEntry *aService)
void
此函数会释放之前分配的服务条目。
otSrpClientBuffersGetHostAddressesArray(otInstance *aInstance, uint8_t *aArrayLength)
此函数获取要用作 SRP 客户端主机地址列表的 IPv6 地址条目数组。
otSrpClientBuffersGetHostNameString(otInstance *aInstance, uint16_t *aSize)
char *
此函数获取用于 SRP 客户端主机名的字符串缓冲区。
otSrpClientBuffersGetServiceEntryInstanceNameString(otSrpClientBuffersServiceEntry *aEntry, uint16_t *aSize)
char *
此函数从服务条目获取服务实例名称的字符串缓冲区。
otSrpClientBuffersGetServiceEntryServiceNameString(otSrpClientBuffersServiceEntry *aEntry, uint16_t *aSize)
char *
此函数从服务条目中获取服务名称的字符串缓冲区。
otSrpClientBuffersGetServiceEntryTxtBuffer(otSrpClientBuffersServiceEntry *aEntry, uint16_t *aSize)
uint8_t *
此函数从服务条目获取 TXT 记录的缓冲区。
otSrpClientBuffersGetSubTypeLabelsArray(otSrpClientBuffersServiceEntry *aEntry, uint16_t *aArrayLength)
const char **
此函数从服务条目中获取服务子类型标签的数组。
otSrpClientClearHostAndServices(otInstance *aInstance)
void
此函数会清除所有主机信息和所有服务。
otSrpClientClearService(otInstance *aInstance, otSrpClientService *aService)
此函数会清除服务,并立即将其从客户端服务列表中移除。
otSrpClientDisableAutoStartMode(otInstance *aInstance)
void
此函数将停用自动启动模式。
otSrpClientEnableAutoStartMode(otInstance *aInstance, otSrpClientAutoStartCallback aCallback, void *aContext)
void
此函数用于启用自动启动模式。
otSrpClientGetDomainName(otInstance *aInstance)
const char *
此函数获取 SRP 客户端正在使用的域名。
otSrpClientGetHostInfo(otInstance *aInstance)
此函数获取主机信息。
otSrpClientGetKeyLeaseInterval(otInstance *aInstance)
uint32_t
此函数获取 SRP 更新请求中使用的密钥租用间隔。
otSrpClientGetLeaseInterval(otInstance *aInstance)
uint32_t
此函数获取 SRP 更新请求中使用的租用间隔。
otSrpClientGetServerAddress(otInstance *aInstance)
const otSockAddr *
此函数获取 SRP 客户端正在使用的 SRP 服务器的套接字地址(IPv6 地址和端口号)。
otSrpClientGetServices(otInstance *aInstance)
此函数可获取由客户端管理的服务列表。
otSrpClientIsAutoStartModeEnabled(otInstance *aInstance)
bool
此函数用于指示自动启动模式的当前状态(启用或停用)。
otSrpClientIsRunning(otInstance *aInstance)
bool
此函数指示 SRP 客户端是否正在运行。
otSrpClientIsServiceKeyRecordEnabled(otInstance *aInstance)
bool
此方法可指明启用或停用“服务密钥记录”模式。
otSrpClientItemStateToString(otSrpClientItemState aItemState)
const char *
此函数将 otSrpClientItemState 转换为字符串。
otSrpClientRemoveHostAndServices(otInstance *aInstance, bool aRemoveKeyLease, bool aSendUnregToServer)
此函数开始移除主机信息和所有服务。
otSrpClientRemoveService(otInstance *aInstance, otSrpClientService *aService)
此函数用于请求取消注册服务器。
otSrpClientSetCallback(otInstance *aInstance, otSrpClientCallback aCallback, void *aContext)
void
此函数设置回调,以通知调用方来自 SRP 客户端的事件/更改。
otSrpClientSetDomainName(otInstance *aInstance, const char *aName)
此函数设置 SRP 客户端要使用的域名。
otSrpClientSetHostAddresses(otInstance *aInstance, const otIp6Address *aIp6Addresses, uint8_t aNumAddresses)
此函数设置/更新主机 IPv6 地址列表。
otSrpClientSetHostName(otInstance *aInstance, const char *aName)
此函数会设置主机名标签。
otSrpClientSetKeyLeaseInterval(otInstance *aInstance, uint32_t aInterval)
void
此函数设置 SRP 更新请求中使用的密钥租用间隔。
otSrpClientSetLeaseInterval(otInstance *aInstance, uint32_t aInterval)
void
此函数设置 SRP 更新请求中使用的租用间隔。
otSrpClientSetServiceKeyRecordEnabled(otInstance *aInstance, bool aEnabled)
void
此函数可启用/停用“服务密钥记录包含”模式。
otSrpClientStart(otInstance *aInstance, const otSockAddr *aServerSockAddr)
此函数启动 SRP 客户端操作。
otSrpClientStop(otInstance *aInstance)
void
此函数停止 SRP 客户端操作。
otSrpServerGetAddressMode(otInstance *aInstance)
此函数返回 SRP 服务器正在使用的地址模式。
otSrpServerGetAnycastModeSequenceNumber(otInstance *aInstance)
uint8_t
此函数返回用于任播地址模式的序列号。
otSrpServerGetDomain(otInstance *aInstance)
const char *
此函数返回授权给 SRP 服务器的网域。
otSrpServerGetLeaseConfig(otInstance *aInstance, otSrpServerLeaseConfig *aLeaseConfig)
void
此函数返回 SRP 服务器 LEASE 和 KEY-LEASE 配置。
otSrpServerGetNextHost(otInstance *aInstance, const otSrpServerHost *aHost)
const otSrpServerHost *
此函数返回 SRP 服务器上的下一个已注册的主机。
otSrpServerGetState(otInstance *aInstance)
此函数返回 SRP 服务器的状态。
otSrpServerHandleServiceUpdateResult(otInstance *aInstance, otSrpServerServiceUpdateId aId, otError aError)
void
此函数报告处理 SRP 服务器 SRP 更新的结果。
otSrpServerHostFindNextService(const otSrpServerHost *aHost, const otSrpServerService *aPrevService, otSrpServerServiceFlags aFlags, const char *aServiceName, const char *aInstanceName)
此函数在主机上查找下一个匹配的服务。
otSrpServerHostGetAddresses(const otSrpServerHost *aHost, uint8_t *aAddressesNum)
const otIp6Address *
此函数返回给定主机的地址。
otSrpServerHostGetFullName(const otSrpServerHost *aHost)
const char *
此函数返回主机的全名。
otSrpServerHostGetNextService(const otSrpServerHost *aHost, const otSrpServerService *aService)
此函数返回给定主机的下一项服务(不包括任何子类型服务)。
otSrpServerHostIsDeleted(const otSrpServerHost *aHost)
bool
此函数会指明 SRP 服务主机是否已被删除。
otSrpServerServiceGetFullName(const otSrpServerService *aService)
const char *
此函数返回服务的完整服务实例名称。
otSrpServerServiceGetHost(const otSrpServerService *aService)
const otSrpServerHost *
此函数返回服务实例所在的主机。
otSrpServerServiceGetInstanceName(const otSrpServerService *aService)
const char *
此函数返回服务的完整服务实例名称。
otSrpServerServiceGetPort(const otSrpServerService *aService)
uint16_t
此函数返回服务实例的端口。
otSrpServerServiceGetPriority(const otSrpServerService *aService)
uint16_t
此函数返回服务实例的优先级。
otSrpServerServiceGetServiceName(const otSrpServerService *aService)
const char *
此函数返回服务的完整服务名称。
otSrpServerServiceGetServiceSubTypeLabel(const otSrpServerService *aService, char *aLabel, uint8_t aMaxSize)
此函数从服务名称中获取子类型标签。
otSrpServerServiceGetTxtData(const otSrpServerService *aService, uint16_t *aDataLength)
const uint8_t *
此函数返回服务实例的 TXT 记录数据。
otSrpServerServiceGetWeight(const otSrpServerService *aService)
uint16_t
此函数返回服务实例的权重。
otSrpServerServiceIsDeleted(const otSrpServerService *aService)
bool
此函数指示 SRP 服务是否已被删除。
otSrpServerServiceIsSubType(const otSrpServerService *aService)
bool
此函数指示 SRP 服务是否为子类型。
otSrpServerSetAddressMode(otInstance *aInstance, otSrpServerAddressMode aMode)
此函数设置 SRP 服务器将采用的地址模式。
otSrpServerSetAnycastModeSequenceNumber(otInstance *aInstance, uint8_t aSequenceNumber)
此函数设置与任播地址模式一起使用的序列号。
otSrpServerSetDomain(otInstance *aInstance, const char *aDomain)
此函数在 SRP 服务器上设置域名。
otSrpServerSetEnabled(otInstance *aInstance, bool aEnabled)
void
该函数可启用/停用 SRP 服务器。
otSrpServerSetLeaseConfig(otInstance *aInstance, const otSrpServerLeaseConfig *aLeaseConfig)
此函数会设置 SRP 服务器 LEASE 和 KEY-LEASE 配置。
otSrpServerSetServiceUpdateHandler(otInstance *aInstance, otSrpServerServiceUpdateHandler aServiceHandler, void *aContext)
void
此函数在 SRP 服务器上设置 SRP 服务更新处理程序。

结构体

otSrpClientBuffersServiceEntry

此结构体表示 SRP 客户端服务池条目。

otSrpClientHostInfo

此结构表示 SRP 客户端主机信息。

otSrpClientService

此结构表示 SRP 客户端服务。

otSrpServerLeaseConfig

此结构包括 SRP 服务器 LEASE 和 KEY-LEASE 配置。

枚举

匿名枚举

 anonymous enum
属性
OT_SRP_SERVER_SERVICE_FLAG_ACTIVE

包括活跃(未删除)的服务。

OT_SRP_SERVER_SERVICE_FLAG_BASE_TYPE

包含基本服务(不是子类型)。

OT_SRP_SERVER_SERVICE_FLAG_DELETED

包括已删除的服务。

OT_SRP_SERVER_SERVICE_FLAG_SUB_TYPE

包含子类型服务。

匿名枚举

 anonymous enum
属性
OT_SRP_SERVER_FLAGS_ANY_SERVICE

此常量定义一个接受任何服务的 otSrpServerServiceFlags 组合(基本/子类型、活动/已删除)。

OT_SRP_SERVER_FLAGS_ANY_TYPE_ACTIVE_SERVICE

此常量定义一个接受任何有效服务(未删除)的 otSrpServerServiceFlags 组合。

OT_SRP_SERVER_FLAGS_ANY_TYPE_DELETED_SERVICE

此常量定义一个 otSrpServerServiceFlags 组合,用于接受任何已删除的服务。

OT_SRP_SERVER_FLAGS_BASE_TYPE_SERVICE_ONLY

此常量定义一个 otSrpServerServiceFlags 组合,仅接受基本服务。

OT_SRP_SERVER_FLAGS_SUB_TYPE_SERVICE_ONLY

此常量定义一个 otSrpServerServiceFlags 组合,仅接受子类型服务。

otSrpClientItemState

 otSrpClientItemState

此枚举指定 SRP 客户端项(服务或主机信息)状态。

属性
OT_SRP_CLIENT_ITEM_STATE_ADDING

正在添加/注册项目。

OT_SRP_CLIENT_ITEM_STATE_REFRESHING

正在刷新内容。

OT_SRP_CLIENT_ITEM_STATE_REGISTERED

这件商品已在服务器中注册。

OT_SRP_CLIENT_ITEM_STATE_REMOVED

已移除内容。

OT_SRP_CLIENT_ITEM_STATE_REMOVING

正在移除内容。

OT_SRP_CLIENT_ITEM_STATE_TO_ADD

要添加/注册的内容。

OT_SRP_CLIENT_ITEM_STATE_TO_REFRESH

要刷新的项(重新注册以租用)。

OT_SRP_CLIENT_ITEM_STATE_TO_REMOVE

要移除的商品。

otSrpServerAddressMode

 otSrpServerAddressMode

此枚举表示 SRP 服务器使用的地址模式。

地址模式用于指定地址和端口号由 SRP 服务器确定的方式,以及此信息在线程网络数据中的发布方式。

属性
OT_SRP_SERVER_ADDRESS_MODE_ANYCAST

任播地址模式。

OT_SRP_SERVER_ADDRESS_MODE_UNICAST

Unicast 地址模式。

otSrpServerState

 otSrpServerState

表示 SRP 服务器的状态。

属性
OT_SRP_SERVER_STATE_DISABLED

SRP 服务器已停用。

OT_SRP_SERVER_STATE_RUNNING

SRP 服务器正在运行。

OT_SRP_SERVER_STATE_STOPPED

SRP 服务器已停止。

类型定义符

otSrpClientAutoStartCallback

void(* otSrpClientAutoStartCallback)(const otSockAddr *aServerSockAddr, void *aContext)

此函数指针类型定义了 SRP 客户端在回调自动启动或停止时使用的回调。

仅当启用了自动启动功能 OPENTHREAD_CONFIG_SRP_CLIENT_AUTO_START_API_ENABLE 时,才会使用此功能。

如果启用自动启动模式且 SRP 客户端已自动启动或停止,系统会调用此回调。

详情
参数
[in] aServerSockAddr
非 NULL 指针表示 SRP 服务器已启动,且指针会提供选定的服务器套接字地址。NULL 指针表示 SRP 服务器已停止。
[in] aContext
指向任意上下文的指针(在注册回调时提供)。

otSrpClientBuffersServiceEntry

struct otSrpClientBuffersServiceEntry otSrpClientBuffersServiceEntry

此结构体表示 SRP 客户端服务池条目。

otSrpClientCallback

void(* otSrpClientCallback)(otError aError, const otSrpClientHostInfo *aHostInfo, const otSrpClientService *aServices, const otSrpClientService *aRemovedServices, void *aContext)

此函数指针类型定义了 SRP 客户端用于通知用户更改/事件/错误的回调。

如果向 SRP 服务器成功注册了更新(即添加/移除了主机信息和/或某些服务),或者发生故障或错误(例如服务器拒绝更新),就会调用此回调函数请求或客户端超时等)。

如果成功重新注册更新,则 aError 参数将为 OT_ERROR_NONE,并且主机信息和服务的完整列表将作为回调的输入参数提供。请注意,主机信息和服务会分别在相关数据结构的相应 mState 成员变量中跟踪自己的状态(指示主机信息/服务已注册还是已移除,或是否仍要添加/移除的状态等)。

已移除的服务的列表会在回调中作为自己的关联列表 aRemovedServices 传递。请注意,调用回调时,SRP 客户端(OpenThread 实现)会通过 aRemovedServices 中列出的已移除服务实例完成,不再跟踪/存储这些实例(也就是说,如果从回调中调用 otSrpClientGetServices(),服务不会显示在返回的列表中)。在回调中提供单独的已移除服务列表有助于向用户表明哪些项已被移除,并允许用户重新声明/重复使用实例。

如果服务器拒绝了 SRP 更新请求,则 DNS 响应代码 (RFC 2136) 会映射到以下错误:

  • (0) NOERROR 成功(无错误条件)-> OT_ERROR_NONE
  • (1) FORMERR 服务器由于格式错误,无法进行解读 ->“OT_ERROR_PARSE”
  • (2) SERVFAIL 服务器发生内部错误 -> OT_ERROR_FAILED
  • (3) NXDOMAIN 域名应该存在,但不存在 -> OT_ERROR_NOT_FOUND
  • (4) NOTIMP 服务器不支持查询类型 (OpCode) -> OT_ERROR_NOT_IMPLMENTED
  • (5) 由于政策/安全原因,REFUSED 服务器遭拒 -> OT_ERROR_SECURITY
  • (6) YXDOMAIN 某个本不应存在的名称 -> OT_ERROR_DUPLICATED
  • (7) YXRRSET 一些 RRset 不应存在,但确实存在 -> OT_ERROR_DUPLICATED
  • (8) NXRRSET 一些应存在的 RRset 不存在 -> OT_ERROR_NOT_FOUND
  • (9) NOTAUTH 服务不是区域 -> OT_ERROR_SECURITY 的权威服务
  • (10) NOTZONE 某个名称不在相应区域 -> OT_ERROR_PARSE
  • (20) BADNAME 错误名称 -> OT_ERROR_PARSE
  • (21) BADALG 算法错误 -> OT_ERROR_SECURITY
  • (22) BADTRUN 错误截断 -> OT_ERROR_PARSE
  • 其他响应代码 -> OT_ERROR_FAILED

也可能出现以下错误:

  • OT_ERROR_RESPONSE_TIMEOUT:等待服务器响应时超时(客户端会继续重试)。
  • OT_ERROR_INVALID_ARGS:提供的服务结构无效(例如,服务名称无效或 otDnsTxtEntry)。
  • OT_ERROR_NO_BUFS :缓冲区不足,无法准备或发送更新消息。

请注意,如果出现任何故障,客户端会继续执行操作,即在等待一段时间后准备并(重新)将 SRP 更新消息传输到服务器。重试等待间隔从最小值开始,每次失败时,增加增长因数增加到最大值(请参阅配置参数 OPENTHREAD_CONFIG_SRP_CLIENT_MIN_RETRY_WAIT_INTERVAL 和相关参数了解详情)。

详情
参数
[in] aError
错误(参见上文)。
[in] aHostInfo
指向主机信息的指针。
[in] aServices
包含所有服务(不包括已移除的服务)的关联列表的标头。如果列表为空,则为 NULL。
[in] aRemovedServices
包含所有已移除服务的 link-list 的标头。如果列表为空,则为 NULL。
[in] aContext
指向任意上下文的指针(在注册回调时提供)。

otSrpClientHostInfo

struct otSrpClientHostInfo otSrpClientHostInfo

此结构表示 SRP 客户端主机信息。

otSrpClientService

struct otSrpClientService otSrpClientService

此结构表示 SRP 客户端服务。

此结构中的值(包括名称和字符串记录条目的字符串缓冲区)必须保持不变,并且在该结构的实例从 otSrpClientAddService()otSrpClientRemoveService() 传递到 OpenThread 后保持不变。

otSrpServerAddressMode

enum otSrpServerAddressMode otSrpServerAddressMode

此枚举表示 SRP 服务器使用的地址模式。

地址模式用于指定地址和端口号由 SRP 服务器确定的方式,以及此信息在线程网络数据中的发布方式。

otSrpServerHost

struct otSrpServerHost otSrpServerHost

这种不透明类型表示 SRP 服务主机。

otSrpServerLeaseConfig

struct otSrpServerLeaseConfig otSrpServerLeaseConfig

此结构包括 SRP 服务器 LEASE 和 KEY-LEASE 配置。

otSrpServerService

struct otSrpServerService otSrpServerService

这种不透明类型表示 SRP 服务。

otSrpServerServiceFlags

uint8_t otSrpServerServiceFlags

服务标志类型,用于表示在搜索(或迭代)SRP 服务列表时包含或排除的服务。

这是位标志的组合。特定位标志在枚举 OT_SRP_SERVER_FLAG_* 中定义。

otSrpServerServiceUpdateHandler

void(* otSrpServerServiceUpdateHandler)(otSrpServerServiceUpdateId aId, const otSrpServerHost *aHost, uint32_t aTimeout, void *aContext)

此函数处理 SRP 服务更新。

SRP 服务器会调用此函数,以通知 SRP 主机(可能正在更新)SRP 服务。务必在处理程序返回结果之前,通过调用 otSrpServerHandleServiceUpdateResult 或超时 aTimeout 来提交 SRP 更新。

收到更新事件后,SRP 服务观察者应立即调用 otSrpServerHandleServiceUpdateResult 并显示错误代码 OT_ERROR_NONE。

更通用的处理程序可以在 SRP 主机/服务上执行验证,如果验证失败,则拒绝 SRP 更新。例如,广告代理应该在支持多播的链接上通告(或移除)主机和服务,并在发生任何失败时返回特定的错误代码。

详情
参数
[in] aId
服务更新交易 ID。此 ID 必须通过 otSrpServerHandleServiceUpdateResult 传回。
[in] aHost
指向包含 SRP 更新的 otSrpServerHost 对象的指针。处理程序应发布/取消发布主机,每个服务都通过以下规则指向此主机:
  1. 如果主机未删除(以 otSrpServerHostIsDeleted 表示),则应发布,并使用 mDNS 进行更新。否则,主机应取消发布(移除 AAAA RR)。
  2. 对于指向此主机的每个服务,如果要取消发布该主机,则必须取消发布。否则,处理程序应在服务未删除(由 otSrpServerServiceIsDeleted 表示)时发布或更新服务,并在删除时取消发布服务。
[in] aTimeout
处理程序处理服务事件的最长时间(以毫秒为单位)。
[in] aContext
指向应用特定上下文的指针。
另请参阅
otSrpServerSetServiceUpdateHandler
otSrpServerHandleServiceUpdateResult

otSrpServerServiceUpdateId

uint32_t otSrpServerServiceUpdateId

SRP 服务器上 SRP 服务更新事务的 ID。

函数

otSrpClientAddService

otError otSrpClientAddService(
  otInstance *aInstance,
  otSrpClientService *aService
)

此函数用于向服务器注册一项服务。

成功调用此函数后,系统将调用 otSrpClientCallback 向 SRP 服务器报告服务添加/注册状态。

aService 所指向的 otSrpClientService 实例从此函数返回后必须保持不变,且保持不变(使用 OT_ERROR_NONE)。 OpenThread 会将指针保存到服务实例。

OpenThread 不再跟踪 otSrpClientService 实例,并且只有在满足以下条件时才能回收该实例:

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aService
指向要添加的 otSrpClientService 实例的指针。
返回值
OT_ERROR_NONE
已成功添加服务。系统将调用 otSrpClientCallback 以报告状态。
OT_ERROR_ALREADY
列表中已存在使用相同服务名称和实例名称的服务。
OT_ERROR_INVALID_ARGS
服务结构无效(例如:服务名称无效或 otDnsTxtEntry)。

otSrpClientBuffersAllocateService

otSrpClientBuffersServiceEntry * otSrpClientBuffersAllocateService(
  otInstance *aInstance
)

此函数从池中分配新的服务条目。

返回的服务条目实例会按如下方式进行初始化:

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回值
指向新分配的服务条目的指针;如果池中没有更多条目,则为 NULL。

otSrpClientBuffersFreeAllServices

void otSrpClientBuffersFreeAllServices(
  otInstance *aInstance
)

此函数会释放之前分配的所有服务条目。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。

otSrpClientBuffersFreeService

void otSrpClientBuffersFreeService(
  otInstance *aInstance,
  otSrpClientBuffersServiceEntry *aService
)

此函数会释放之前分配的服务条目。

之前必须使用 otSrpClientBuffersAllocateService() 分配 aService,且尚未释放。否则,此函数的行为将未定义。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aService
指向要释放的服务条目的指针(不得为 NULL)。

otSrpClientBuffersGetHostAddressesArray

otIp6Address * otSrpClientBuffersGetHostAddressesArray(
  otInstance *aInstance,
  uint8_t *aArrayLength
)

此函数获取要用作 SRP 客户端主机地址列表的 IPv6 地址条目数组。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[out] aArrayLength
指向返回数组长度的变量的指针,即数组中 IPv6 地址条目的数量(不得为 NULL)。
返回值
指向 otIp6Address 条目数组的指针(在 aArrayLength 中返回条目的数量)。

otSrpClientBuffersGetHostNameString

char * otSrpClientBuffersGetHostNameString(
  otInstance *aInstance,
  uint16_t *aSize
)

此函数获取用于 SRP 客户端主机名的字符串缓冲区。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[out] aSize
指向返回字符串缓冲区大小(字节数)的变量的指针(不得为 NULL)。
返回值
指向用于 SRP 客户端主机名的字符缓冲区的指针。

otSrpClientBuffersGetServiceEntryInstanceNameString

char * otSrpClientBuffersGetServiceEntryInstanceNameString(
  otSrpClientBuffersServiceEntry *aEntry,
  uint16_t *aSize
)

此函数从服务条目获取服务实例名称的字符串缓冲区。

详情
参数
[in] aEntry
指向先前分配的服务条目的指针(不得为 NULL)。
[out] aSize
一个指针,指向返回字符串缓冲区大小(字节数)的变量(不得为 NULL)。
返回值
指向字符串缓冲区的指针。

otSrpClientBuffersGetServiceEntryServiceNameString

char * otSrpClientBuffersGetServiceEntryServiceNameString(
  otSrpClientBuffersServiceEntry *aEntry,
  uint16_t *aSize
)

此函数从服务条目中获取服务名称的字符串缓冲区。

详情
参数
[in] aEntry
指向先前分配的服务条目的指针(不得为 NULL)。
[out] aSize
一个指针,指向返回字符串缓冲区大小(字节数)的变量(不得为 NULL)。
返回值
指向字符串缓冲区的指针。

otSrpClientBuffersGetServiceEntryTxtBuffer

uint8_t * otSrpClientBuffersGetServiceEntryTxtBuffer(
  otSrpClientBuffersServiceEntry *aEntry,
  uint16_t *aSize
)

此函数从服务条目获取 TXT 记录的缓冲区。

详情
参数
[in] aEntry
指向先前分配的服务条目的指针(不得为 NULL)。
[out] aSize
指向返回缓冲区大小(字节数)的变量的指针(不得为 NULL)。
返回值
指向缓冲区的指针。

otSrpClientBuffersGetSubTypeLabelsArray

const char ** otSrpClientBuffersGetSubTypeLabelsArray(
  otSrpClientBuffersServiceEntry *aEntry,
  uint16_t *aArrayLength
)

此函数从服务条目中获取服务子类型标签的数组。

详情
参数
[in] aEntry
指向先前分配的服务条目的指针(不得为 NULL)。
[out] aArrayLength
指向返回数组长度的变量的指针(不得为 NULL)。
返回值
指向数组的指针。

otSrpClientClearHostAndServices

void otSrpClientClearHostAndServices(
  otInstance *aInstance
)

此函数会清除所有主机信息和所有服务。

取消顶otSrpClientRemoveHostAndServices()它会向服务器发送一条更新消息以移除所有信息,该函数会立即清除所有信息,而无需与服务器进行任何互动。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。

otSrpClientClearService

otError otSrpClientClearService(
  otInstance *aInstance,
  otSrpClientService *aService
)

此函数会清除服务,并立即将其从客户端服务列表中移除。

取消顶otSrpClientRemoveService(),它会向服务器发送更新消息以移除服务,但该函数会从客户端的服务列表中清除服务,但不会与服务器进行任何互动。成功调用此函数后,系统不会调用 otSrpClientCallback,调用者也可以立即收回并重复使用 aService 条目。

此函数可以与后续调用 otSrpClientAddService()(可能会重复使用相同的 aService 条目和相同的服务名称和实例名称)一起使用,从而更新现有服务中的一些参数。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aService
指向要删除的 otSrpClientService 实例的指针。
返回值
OT_ERROR_NONE
已成功删除 aService。您可以立即对它进行回收和再利用。
OT_ERROR_NOT_FOUND
在列表中找不到该服务。

otSrpClientDisableAutoStartMode

void otSrpClientDisableAutoStartMode(
  otInstance *aInstance
)

此函数将停用自动启动模式。

仅当启用了自动启动功能 OPENTHREAD_CONFIG_SRP_CLIENT_AUTO_START_API_ENABLE 时,此字段才可用。

如果客户端已经运行,但停用自动启动模式不会停止客户端,但客户端会停止监控线程网络数据以验证所选 SRP 服务器是否仍然存在。

请注意,调用 otSrpClientStop() 还会停用自动启动模式。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。

otSrpClientEnableAutoStartMode

void otSrpClientEnableAutoStartMode(
  otInstance *aInstance,
  otSrpClientAutoStartCallback aCallback,
  void *aContext
)

此函数用于启用自动启动模式。

仅当启用了自动启动功能 OPENTHREAD_CONFIG_SRP_CLIENT_AUTO_START_API_ENABLE 时,此字段才可用。

配置选项 OPENTHREAD_CONFIG_SRP_CLIENT_AUTO_START_DEFAULT_MODE 指定默认的自动启动模式(在 OT 堆栈启动时启用或停用)。

启用自动启动后,SRP 客户端会监控 SRP 服务器服务条目的线程网络数据,并在检测到 SRP 服务器时自动启动和停止客户端。

如果找到多个 SRP 服务器,系统会随机选择一个。如果不再检测到所选的 SRP 服务器(线程网络数据中已不复存在),SRP 客户端会停止,然后可能会切换到其他 SRP 服务器(如果有)。

通过成功调用 otSrpClientStart() 明确启动 SRP 客户端后,系统将继续使用 otSrpClientStart() 中的指定 SRP 服务器地址,无论自动启动模式的状态如何以及是否发现同一 SRP 服务器地址或不在线程网络数据中。在这种情况下,仅显式 otSrpClientStop() 调用会停止客户端。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aCallback
用于指示客户端自动启动/停止的回调。如果不需要,可以为 NULL。
[in] aContext
调用 aCallback 时要传递的上下文。

otSrpClientGetTLD

const char * otSrpClientGetDomainName(
  otInstance *aInstance
)

此函数获取 SRP 客户端正在使用的域名。

此功能需要启用OPENTHREAD_CONFIG_SRP_CLIENT_DOMAIN_NAME_API_ENABLE

如果未设置域名,将使用“default.service.arpa”。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回值
域名字符串。

otSrpClientGetHostInfo

const otSrpClientHostInfo * otSrpClientGetHostInfo(
  otInstance *aInstance
)

此函数获取主机信息。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回值
指向主机信息结构的指针。

otSrpClientGetKeyLeaseInterval

uint32_t otSrpClientGetKeyLeaseInterval(
  otInstance *aInstance
)

此函数获取 SRP 更新请求中使用的密钥租用间隔。

请注意,这是 SRP 客户端请求的租用时长。服务器可以选择接受不同的租用间隔。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回值
密钥租用间隔(以秒为单位)。

otSrpClientGetLeaseInterval

uint32_t otSrpClientGetLeaseInterval(
  otInstance *aInstance
)

此函数获取 SRP 更新请求中使用的租用间隔。

请注意,这是 SRP 客户端请求的租用时长。服务器可以选择接受不同的租用间隔。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回值
租用间隔(以秒为单位)。

otSrpClientGetServerAddress

const otSockAddr * otSrpClientGetServerAddress(
  otInstance *aInstance
)

此函数获取 SRP 客户端正在使用的 SRP 服务器的套接字地址(IPv6 地址和端口号)。

如果客户端未在运行,该地址未指定(均为零),且端口号为零。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回值
指向 SRP 服务器的套接字地址(始终为非 NULL)的指针。

otSrpClientGetServices

const otSrpClientService * otSrpClientGetServices(
  otInstance *aInstance
)

此函数可获取由客户端管理的服务列表。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回值
指向所有服务的链接列表头部的指针,如果列表为空,则为 NULL。

otSrpClientIsAutoStartModeEnabled

bool otSrpClientIsAutoStartModeEnabled(
  otInstance *aInstance
)

此函数用于指示自动启动模式的当前状态(启用或停用)。

仅当启用了自动启动功能 OPENTHREAD_CONFIG_SRP_CLIENT_AUTO_START_API_ENABLE 时,此字段才可用。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回值
如果启用了自动启动模式,则为 TRUE,否则为 FALSE。

otSrpClientIsRunning

bool otSrpClientIsRunning(
  otInstance *aInstance
)

此函数指示 SRP 客户端是否正在运行。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回值
如果 SRP 客户端正在运行,则为 TRUE,否则为 FALSE。

otSrpClientIsServiceKeyRecordEnabled

bool otSrpClientIsServiceKeyRecordEnabled(
  otInstance *aInstance
)

此方法可指明启用或停用“服务密钥记录”模式。

只有在启用 OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE 配置后,才能使用此函数。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回值
如果已启用“服务密钥记录包含”模式,则为 TRUE,否则为 FALSE。

otSrpClientItemStateToString

const char * otSrpClientItemStateToString(
  otSrpClientItemState aItemState
)

此函数将 otSrpClientItemState 转换为字符串。

详情
参数
[in] aItemState
商品状态。
返回值
aItemState 的字符串表示形式。

otSrpClientRemoveHostAndServices

otError otSrpClientRemoveHostAndServices(
  otInstance *aInstance,
  bool aRemoveKeyLease,
  bool aSendUnregToServer
)

此函数开始移除主机信息和所有服务。

从此函数返回后,系统会调用 otSrpClientCallback,以向 SRP 服务器报告移除请求的状态。

如果要将主机信息从服务器中永久移除,则应将 aRemoveKeyLease 设置为 true,这会移除与服务器上主机关联的密钥租约。否则,密钥租约记录将像以前一样保留,这可确保服务器在客户端再次能够提供并注册其服务时保留主机名。

aSendUnregToServer 用于确定尚未向服务器注册主机信息时的行为。如果 aSendUnregToServer 设为 false(默认值/预期值),SRP 客户端将立即移除主机信息和服务,而不会向服务器发送更新消息(如果没有任何消息,则无需更新服务器) )。如果 aSendUnregToServer 设为 true,SRP 客户端将向服务器发送一条更新消息。请注意,如果注册主机信息,aSendUnregToServer 的值就无关紧要,并且 SRP 客户端会始终向服务器发送更新信息,要求移除所有信息。

一种情况是 aSendUnregToServer 很有用,可以在设备重置/重新启动时使用,调用方可能需要移除之前通过服务器注册的所有服务。在这种情况下,调用方可以 otSrpClientSetHostName(),然后请求 otSrpClientRemoveHostAndServices()aSendUnregToServertrue)。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aRemoveKeyLease
指示是否还应移除主机密钥租用的布尔值。
[in] aSendUnregToServer
指示在未注册主机信息时是否向服务器发送更新的布尔值。
返回值
OT_ERROR_NONE
已成功移除主机信息和服务。系统将调用 otSrpClientCallback 以报告状态。
OT_ERROR_ALREADY
已移除主机信息。

otSrpClientRemoveService

otError otSrpClientRemoveService(
  otInstance *aInstance,
  otSrpClientService *aService
)

此函数用于请求取消注册服务器。

成功调用此函数后,系统会调用 otSrpClientCallback,以向 SRP 服务器报告移除请求的状态。

aService 所指向的 otSrpClientService 实例从此函数返回后必须保持不变,且保持不变(使用 OT_ERROR_NONE)。在移除过程中,OpenThread 将保留服务实例。仅在调用 otSrpClientCallback 以指示服务实例已从 SRP 客户端服务列表中移除后才可释放/重复使用。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aService
指向要移除的 otSrpClientService 实例的指针。
返回值
OT_ERROR_NONE
已成功移除服务。系统将调用 otSrpClientCallback 以报告状态。
OT_ERROR_NOT_FOUND
在列表中找不到该服务。

otSrpClientSetCallback

void otSrpClientSetCallback(
  otInstance *aInstance,
  otSrpClientCallback aCallback,
  void *aContext
)

此函数设置回调,以通知调用方来自 SRP 客户端的事件/更改。

SRP 客户端允许注册单个回调。因此,连续调用此函数会覆盖之前设置的所有回调函数。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aCallback
用于通知事件和更改的回调。如果不需要,可以为 NULL。
[in] aContext
aCallback 搭配使用的任意上下文。

otSrpClientSetDomain

otError otSrpClientSetDomainName(
  otInstance *aInstance,
  const char *aName
)

此函数设置 SRP 客户端要使用的域名。

此功能需要启用OPENTHREAD_CONFIG_SRP_CLIENT_DOMAIN_NAME_API_ENABLE

如果未设置,将使用“default.service.arpa”。

aName 指向的名称字符串缓冲区必须在此函数返回后保持不变,且保持不变。OpenThread 将保留指向字符串的指针。

域名可以在客户端启动之前或启动之后设置,但在主机信息注册到服务器之前设置(主机信息应为 STATE_TO_ADDSTATE_TO_REMOVE)。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aName
指向域名字符串的指针。如果 NULL,它设置为默认“default.service.arpa”。
返回值
OT_ERROR_NONE
已成功设置域名标签。
OT_ERROR_INVALID_STATE
已向服务器注册主机信息。

otSrpClientSetHostAddresses

otError otSrpClientSetHostAddresses(
  otInstance *aInstance,
  const otIp6Address *aIp6Addresses,
  uint8_t aNumAddresses
)

此函数设置/更新主机 IPv6 地址列表。

主机 IPv6 地址可以在开始或运行 SRP 客户端期间设置/更改(例如,添加/移除或更改之前注册的主机地址),但主机信息正在移除时(客户端正忙处理从较早的调用 otSrpClientRemoveHostAndServices(),且主机信息仍处于 STATE_TO_REMOVESTATE_REMOVING 状态。

aIp6Addresses 所指向的主机 IPv6 地址数组必须保留,并且在从此函数返回时保持不变(使用 OT_ERROR_NONE)。 OpenThread 将把指针保存到数组中。

成功调用此函数后,系统将调用 otSrpClientCallback,以向 SRP 服务器报告地址注册的状态。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aIp6Addresses
指向包含主机 IPv6 地址的数组的指针。
[in] aNumAddresses
aIp6Addresses 数组中的地址数量。
返回值
OT_ERROR_NONE
已成功开始更改主机 IPv6 地址列表。系统将调用 otSrpClientCallback 来报告向服务器注册地址的状态。
OT_ERROR_INVALID_ARGS
地址列表无效(例如,必须包含至少一个地址)。
OT_ERROR_INVALID_STATE
正在移除主机,因此无法更改主机地址。

otSrpClientSetHostName

otError otSrpClientSetHostName(
  otInstance *aInstance,
  const char *aName
)

此函数会设置主机名标签。

成功调用此函数后,系统将调用 otSrpClientCallback 向 SRP 服务器报告主机信息注册状态。

aName 指向的名称字符串缓冲区必须在此函数返回后保持不变,且保持不变。OpenThread 将保留指向字符串的指针。

可以在客户端启动之前或启动之后设置主机名,但要在向服务器注册主机信息之前设置主机名称(主机信息应为 STATE_TO_ADDSTATE_REMOVED)。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aName
指向主机名标签字符串的指针(不得为 NULL)。此函数返回后,指向字符串缓冲区的指针必须保留且保持不变且保持不变。
返回值
OT_ERROR_NONE
已成功设置主机名标签。
OT_ERROR_INVALID_ARGS
aName 是 NULL。
OT_ERROR_INVALID_STATE
该主机名已设置完毕,并已在服务器上注册。

otSrpClientSetKeyLeaseInterval

void otSrpClientSetKeyLeaseInterval(
  otInstance *aInstance,
  uint32_t aInterval
)

此函数设置 SRP 更新请求中使用的密钥租用间隔。

更改租用间隔不会影响已注册的服务/主机信息接受的租用间隔。它只会影响以后的任何 SRP 更新消息(即,添加新服务和/或刷新现有服务)。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aInterval
密钥租用间隔(以秒为单位)。如果为零,则使用 OPENTHREAD_CONFIG_SRP_CLIENT_DEFAULT_KEY_LEASE 指定的默认值。

otSrpClientSetLeaseInterval

void otSrpClientSetLeaseInterval(
  otInstance *aInstance,
  uint32_t aInterval
)

此函数设置 SRP 更新请求中使用的租用间隔。

更改租用间隔不会影响已注册的服务/主机信息接受的租用间隔。它只会影响以后的任何 SRP 更新消息(即,添加新服务和/或刷新现有服务)。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aInterval
租用间隔(以秒为单位)。如果为零,则使用 OPENTHREAD_CONFIG_SRP_CLIENT_DEFAULT_LEASE 指定的默认值。

otSrpClientSetServiceKeyRecordEnabled

void otSrpClientSetServiceKeyRecordEnabled(
  otInstance *aInstance,
  bool aEnabled
)

此函数可启用/停用“服务密钥记录包含”模式。

启用后,SRP 客户端会在其发送的 SRP 更新消息的服务说明说明中包含密钥记录。

只有在启用 OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE 配置后,才能使用此函数。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aEnabled
启用 TRUE,停用 FALSE 以停用“服务密钥记录”模式。

otSrpClientStart

otError otSrpClientStart(
  otInstance *aInstance,
  const otSockAddr *aServerSockAddr
)

此函数启动 SRP 客户端操作。

满足以下所有条件后,SRP 客户端会准备并发送“SRP 更新”消息:

这些函数的调用顺序无关紧要。满足所有条件后,SRP 客户端会先等待一小段时间,然后再准备“SRP 更新”消息并将其发送至服务器。此延迟允许用户在发送第一条 SRP 更新消息之前确保添加多个服务和/或 IPv6 地址(确保发送包含所有信息的单个 SRP 更新)。配置 OPENTHREAD_CONFIG_SRP_CLIENT_UPDATE_TX_DELAY 指定延迟间隔。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aServerSockAddr
SRP 服务器的套接字地址(IPv6 地址和端口号)。
返回值
OT_ERROR_NONE
SRP 客户端操作已成功启动或已运行,且采用相同的服务器套接字地址和回调。
OT_ERROR_BUSY
SRP 客户端正忙于使用其他套接字地址。
OT_ERROR_FAILED
未能打开/连接客户端的 UDP 套接字。

otSrpClientStop

void otSrpClientStop(
  otInstance *aInstance
)

此函数停止 SRP 客户端操作。

此函数将停止与 SRP 服务器的任何进一步交互。请注意,该操作不会移除或清除主机信息和/或服务列表。客户端开始(重新)启动后,它会标记要重新添加/移除的所有服务。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。

otSrpServerGetAddressMode

otSrpServerAddressMode otSrpServerGetAddressMode(
  otInstance *aInstance
)

此函数返回 SRP 服务器正在使用的地址模式。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回值
SRP 服务器的地址模式。

otSrpServerGetAnycastModeSequenceNumber

uint8_t otSrpServerGetAnycastModeSequenceNumber(
  otInstance *aInstance
)

此函数返回用于任播地址模式的序列号。

序列号包含在网络数据发布的“DNS/SRP 服务任播地址”条目中。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回值
任播序列号。

otSrpServerGetDomain

const char * otSrpServerGetDomain(
  otInstance *aInstance
)

此函数返回授权给 SRP 服务器的网域。

如果网域未通过 SetDomain 设置,则为“default.service.arpa”。 。即使域名被省略,系统也始终会附加尾随点。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回值
指向由英文句点连接的网域字符串的指针。

otSrpServerGetLeaseConfig

void otSrpServerGetLeaseConfig(
  otInstance *aInstance,
  otSrpServerLeaseConfig *aLeaseConfig
)

此函数返回 SRP 服务器 LEASE 和 KEY-LEASE 配置。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[out] aLeaseConfig
指向 otSrpServerLeaseConfig 实例的指针。

otSrpServerGetNextHost

const otSrpServerHost * otSrpServerGetNextHost(
  otInstance *aInstance,
  const otSrpServerHost *aHost
)

此函数返回 SRP 服务器上的下一个已注册的主机。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aHost
指向当前主机的指针;使用 NULL 获取第一个主机。
返回值
指向已注册的主机的指针。如果找不到其他主机,则为 NULL。

otSrpServerGetState

otSrpServerState otSrpServerGetState(
  otInstance *aInstance
)

此函数返回 SRP 服务器的状态。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回值
SRP 服务器的当前状态。

otSrpServerHandleServiceUpdateResult

void otSrpServerHandleServiceUpdateResult(
  otInstance *aInstance,
  otSrpServerServiceUpdateId aId,
  otError aError
)

此函数报告处理 SRP 服务器 SRP 更新的结果。

服务更新处理程序应调用此函数,以返回其处理 SRP 更新的结果。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aId
服务更新交易 ID。此值应与通过 otSrpServerServiceUpdateHandler 提供的 ID 相同。
[in] aError
要返回给 SRP 服务器的错误。使用 OT_ERROR_DUPLICATED 表示 DNS 名称冲突。

otSrpServerHostFindNextService

const otSrpServerService * otSrpServerHostFindNextService(
  const otSrpServerHost *aHost,
  const otSrpServerService *aPrevService,
  otSrpServerServiceFlags aFlags,
  const char *aServiceName,
  const char *aInstanceName
)

此函数在主机上查找下一个匹配的服务。

通过结合使用标志、服务名称和实例名称,您可以遍历完整的服务和/或符合特定条件的服务子集或查找特定服务。

遍历主机的所有服务:service = otSrpServerHostFindNextService(host, service, OT_SRP_SERVER_FLAGS_ANY_SERVICE, NULL, NULL);

仅遍历基本服务(不包括子类型):service = otSrpServerHostFindNextService(host, service, OT_SRP_SERVER_FLAGS_BASE_TYPE_SERVICE_ONLY, NULL, NULL);

要遍历特定实例名称 instanceName 的子类型,请执行以下操作:service = otSrpServerHostFindNextService(host, service, OT_SRP_SERVER_FLAGS_SUB_TYPE_SERVICE_ONLY, NULL, instanceName);

要查找服务名称为 serviceName 且服务实例名称为 instanceName 的特定服务:service = otSrpServerHostFindNextService(host, NULL, OT_SRP_SERVER_FLAGS_ANY_SERVICE, serviceName, instanceName);

要查找具有指定服务实例名称 instanceName 的基本类型服务,请使用以下格式:service = otSrpServerHostFindNextService(host, NULL, OT_SRP_SERVER_FLAGS_BASE_TYPE_SERVICE_ONLY, NULL, instanceName);

详情
参数
[in] aHost
指向 SRP 服务主机的指针(不得为 NULL)。
[in] aPrevService
指向上一个服务的指针,或者从列表开头开始的 NULL。
[in] aFlags
这些标记表明要包含哪些服务(基本/子类型、活动/已删除)。
[in] aServiceName
要匹配的服务名称。设置为 NULL 以接受任何名称。
[in] aInstanceName
要匹配的服务实例名称。设置为 NULL 以接受任何名称。
返回值
指向下一个匹配服务的指针;如果未找到匹配服务,则为 NULL。

otSrpServerHostGetAddresses

const otIp6Address * otSrpServerHostGetAddresses(
  const otSrpServerHost *aHost,
  uint8_t *aAddressesNum
)

此函数返回给定主机的地址。

详情
参数
[in] aHost
指向 SRP 服务主机的指针。
[out] aAddressesNum
指向我们应向其输出地址数量的指针。
返回值
指向 IPv6 地址数组的指针。

otSrpServerHostGetFullName

const char * otSrpServerHostGetFullName(
  const otSrpServerHost *aHost
)

此函数返回主机的全名。

详情
参数
[in] aHost
指向 SRP 服务主机的指针。
返回值
指向以空字符结尾的主机名字符串的指针。

otSrpServerHostGetNextService

const otSrpServerService * otSrpServerHostGetNextService(
  const otSrpServerHost *aHost,
  const otSrpServerService *aService
)

此函数返回给定主机的下一项服务(不包括任何子类型服务)。

详情
参数
[in] aHost
指向 SRP 服务主机的指针。
[in] aService
指向当前 SRP 服务实例的指针;使用 NULL 获取第一个服务。
返回值
指向下一个服务的指针;如果没有更多服务,则为 NULL。

otSrpServerHostIsDeleted

bool otSrpServerHostIsDeleted(
  const otSrpServerHost *aHost
)

此函数会指明 SRP 服务主机是否已被删除。

可以删除 SRP 服务主机,但会保留其名称以备将来使用。在这种情况下,系统不会从 SRP 服务器/注册表中移除主机实例。

详情
参数
[in] aHost
指向 SRP 服务主机的指针。
返回值
如果主机已被删除,则为 TRUE,否则为 FALSE。

otSrpServerServiceGetFullName

const char * otSrpServerServiceGetFullName(
  const otSrpServerService *aService
)

此函数返回服务的完整服务实例名称。

详情
参数
[in] aService
指向 SRP 服务的指针。
返回值
指向以空字符结尾的服务实例名称字符串的指针。

otSrpServerServiceGetHost

const otSrpServerHost * otSrpServerServiceGetHost(
  const otSrpServerService *aService
)

此函数返回服务实例所在的主机。

详情
参数
[in] aService
指向 SRP 服务的指针。
返回值
指向主机实例的指针。

otSrpServerServiceGetInstanceName

const char * otSrpServerServiceGetInstanceName(
  const otSrpServerService *aService
)

此函数返回服务的完整服务实例名称。

详情
参数
[in] aService
指向 SRP 服务的指针。
返回值
指向以空字符结尾的服务实例名称字符串的指针。

otSrpServerServiceGetPort

uint16_t otSrpServerServiceGetPort(
  const otSrpServerService *aService
)

此函数返回服务实例的端口。

详情
参数
[in] aService
指向 SRP 服务的指针。
返回值
服务的端口。

otSrpServerServiceGetPriority

uint16_t otSrpServerServiceGetPriority(
  const otSrpServerService *aService
)

此函数返回服务实例的优先级。

详情
参数
[in] aService
指向 SRP 服务的指针。
返回值
服务的优先级。

otSrpServerServiceServiceServiceServiceName

const char * otSrpServerServiceGetServiceName(
  const otSrpServerService *aService
)

此函数返回服务的完整服务名称。

详情
参数
[in] aService
指向 SRP 服务的指针。
返回值
指向以空字符结尾的服务名称字符串的指针。

otSrpServerServiceGetServiceSubTypeLabel

otError otSrpServerServiceGetServiceSubTypeLabel(
  const otSrpServerService *aService,
  char *aLabel,
  uint8_t aMaxSize
)

此函数从服务名称中获取子类型标签。

此函数用于在 aService 是子类型(即, 对服务返回的 otSrpServerServiceIsSubType() 返回 TRUE。如果不是子类型,此函数会返回 OT_ERROR_INVALID_ARGS

子类型服务的完整服务名称位于“._sub..”后面。此函数将 复制到 aLabel 缓冲区。

aLabel 可确保在返回后始终为 null 终止,即使发生故障也是如此。

详情
参数
[in] aService
指向 SRP 服务的指针。
[out] aLabel
指向将子类型标签名称复制到的缓冲区的指针。
[in] aMaxSize
aLabel 缓冲区的大小上限。
返回值
OT_ERROR_NONE
已成功更新“aLabel”。
OT_ERROR_NO_BUFS
子类型标签无法放入 aLabel 缓冲区中(从标签可以复制的字符数量复制到 aLabel 中,确保以 null 终止)。
OT_ERROR_INVALID_ARGS
SRP 服务不是子类型。

otSrpServerServiceGetTxtData

const uint8_t * otSrpServerServiceGetTxtData(
  const otSrpServerService *aService,
  uint16_t *aDataLength
)

此函数返回服务实例的 TXT 记录数据。

详情
参数
[in] aService
指向 SRP 服务的指针。
[out] aDataLength
返回 TXT 记录数据长度的指针。不得为 NULL。
返回值
指向包含 TXT 记录数据的缓冲区的指针(TXT 数据长度在 aDataLength 中返回)。

otSrpServerServiceServiceWeight

uint16_t otSrpServerServiceGetWeight(
  const otSrpServerService *aService
)

此函数返回服务实例的权重。

详情
参数
[in] aService
指向 SRP 服务的指针。
返回值
服务的权重。

otSrpServerServiceIsDeleted

bool otSrpServerServiceIsDeleted(
  const otSrpServerService *aService
)

此函数指示 SRP 服务是否已被删除。

SRP 服务可以删除,但保留其名称以备将来使用。在这种情况下,不会从 SRP 服务器/注册表中移除该服务实例。如果删除主机,则保证删除所有服务。

详情
参数
[in] aService
指向 SRP 服务的指针。
返回值
如果服务已删除,则返回 TRUE,否则删除 FALSE。

otSrpServerServiceIsSubType

bool otSrpServerServiceIsSubType(
  const otSrpServerService *aService
)

此函数指示 SRP 服务是否为子类型。

详情
参数
[in] aService
指向 SRP 服务的指针。
返回值
如果服务是子类型,则为 TRUE,否则为 FALSE。

otSrpServerSetAddressMode

otError otSrpServerSetAddressMode(
  otInstance *aInstance,
  otSrpServerAddressMode aMode
)

此函数设置 SRP 服务器将采用的地址模式。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aMode
要使用的地址模式。
返回值
OT_ERROR_NONE
已成功设置地址模式。
OT_ERROR_INVALID_STATE
SRP 服务器已启用,地址模式无法更改。

otSrpServerSetAnycastModeSequenceNumber

otError otSrpServerSetAnycastModeSequenceNumber(
  otInstance *aInstance,
  uint8_t aSequenceNumber
)

此函数设置与任播地址模式一起使用的序列号。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aSequenceNumber
要使用的序列号。
返回值
OT_ERROR_NONE
已成功设置地址模式。
OT_ERROR_INVALID_STATE
SRP 服务器已启用,且序列号无法更改。

otSrpServerSetDomain

otError otSrpServerSetDomain(
  otInstance *aInstance,
  const char *aDomain
)

此函数在 SRP 服务器上设置域名。

如果末尾的点尚未添加,则其会附加到 aDomain。此函数只能在启用 SRP 服务器之前调用。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aDomain
要设置的域名。不得为 NULL。
返回值
OT_ERROR_NONE
已成功将网域设置为 aDomain
OT_ERROR_INVALID_STATE
SRP 服务器已启用,且网域无法更改。
OT_ERROR_INVALID_ARGS
参数 aDomain 不是有效的 DNS 域名。
OT_ERROR_NO_BUFS
没有内存来存储 aDomain 的内容。

otSrpServerSetEnabled

void otSrpServerSetEnabled(
  otInstance *aInstance,
  bool aEnabled
)

该函数可启用/停用 SRP 服务器。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aEnabled
用于启用/停用 SRP 服务器的布尔值。

otSrpServerSetLeaseConfig

otError otSrpServerSetLeaseConfig(
  otInstance *aInstance,
  const otSrpServerLeaseConfig *aLeaseConfig
)

此函数会设置 SRP 服务器 LEASE 和 KEY-LEASE 配置。

当客户端请求非零 LEASE 时间时,授予的值将限制在 [aMinLease, aMaxLease] 范围内;且非零 KEY-LEASE 将被授予 [aMinKeyLease, aMaxKeyLease] 范围。如果 LEASE 或 KEY-LEASE 对应的时间为 0,则视为零。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aLeaseConfig
指向 otSrpServerLeaseConfig 实例的指针。
返回值
OT_ERROR_NONE
已成功设置 LEASE 和 KEY-LEASE 范围。
OT_ERROR_INVALID_ARGS
LEASE 或 KEY-LEASE 范围无效。

otSrpServerSetServiceUpdateHandler

void otSrpServerSetServiceUpdateHandler(
  otInstance *aInstance,
  otSrpServerServiceUpdateHandler aServiceHandler,
  void *aContext
)

此函数在 SRP 服务器上设置 SRP 服务更新处理程序。

详情
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aServiceHandler
指向服务处理程序的指针。使用 NULL 移除处理程序。
[in] aContext
指向任意上下文信息的指针。如果未使用,则可能为 NULL。

资源

OpenThread API 参考主题源自源代码,可在 GitHub 上找到。 如需了解详情或为我们的文档做贡献,请参阅资源