SRP
此模块包含用于控制 SRP 客户端行为的函数。
摘要
此模块包含服务注册协议的功能。
此模块包含 SRP 客户端缓冲区和服务池的函数。
仅当启用了 OPENTHREAD_CONFIG_SRP_CLIENT_BUFFERS_ENABLE 功能时,此模块中的函数才可用。
类型定义符 |
|
---|---|
otSrpClientAutoStartCallback)(const otSockAddr *aServerSockAddr, void *aContext)
|
typedefvoid(*
指针类型定义了 SRP 客户端用来在其自动启动或停止时通知用户的回调。 |
otSrpClientBuffersServiceEntry
|
typedef 表示 SRP 客户端服务池条目。 |
otSrpClientCallback)(otError aError, const otSrpClientHostInfo *aHostInfo, const otSrpClientService *aServices, const otSrpClientService *aRemovedServices, void *aContext)
|
typedefvoid(*
指针类型定义了 SRP 客户端用来通知用户更改/事件/错误的回调。 |
otSrpClientHostInfo
|
typedefstruct otSrpClientHostInfo
表示 SRP 客户端主机信息。 |
otSrpClientService
|
typedefstruct otSrpClientService
表示 SRP 客户端服务。 |
otSrpServerAddressMode
|
typedef 表示 SRP 服务器使用的地址模式。 |
otSrpServerHost
|
typedefstruct otSrpServerHost
此不透明类型表示 SRP 服务主机。 |
otSrpServerLeaseConfig
|
typedefstruct otSrpServerLeaseConfig
包括 SRP 服务器 LEASE 和 KEY-LEASE 配置。 |
otSrpServerLeaseInfo
|
typedefstruct otSrpServerLeaseInfo
包括主机/服务的 SRP 服务器租用信息。 |
otSrpServerResponseCounters
|
typedefstruct otSrpServerResponseCounters
包含 SRP 服务器响应的统计信息。 |
otSrpServerService
|
typedefstruct otSrpServerService
此不透明类型表示 SRP 服务。 |
otSrpServerServiceUpdateHandler)(otSrpServerServiceUpdateId aId, const otSrpServerHost *aHost, uint32_t aTimeout, void *aContext)
|
typedefvoid(*
处理 SRP 服务更新。 |
otSrpServerServiceUpdateId
|
typedefuint32_t
SRP 服务器上的 SRP 服务更新事务的 ID。 |
otSrpServerTtlConfig
|
typedefstruct otSrpServerTtlConfig
包含 SRP 服务器 TTL 配置。 |
函数 |
|
---|---|
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
停用自动启动模式。
|
otSrpClientEnableAutoHostAddress(otInstance *aInstance)
|
启用自动主机地址模式。
|
otSrpClientEnableAutoStartMode(otInstance *aInstance, otSrpClientAutoStartCallback aCallback, void *aContext)
|
void
启用自动启动模式。
|
otSrpClientGetDomainName(otInstance *aInstance)
|
const char *
获取 SRP 客户端使用的域名。
|
otSrpClientGetHostInfo(otInstance *aInstance)
|
const otSrpClientHostInfo *
获取主机信息。
|
otSrpClientGetKeyLeaseInterval(otInstance *aInstance)
|
uint32_t
获取 SRP 更新请求中使用的默认密钥租用间隔。
|
otSrpClientGetLeaseInterval(otInstance *aInstance)
|
uint32_t
获取 SRP 更新请求中使用的默认租期间隔。
|
otSrpClientGetServerAddress(otInstance *aInstance)
|
const otSockAddr *
获取 SRP 客户端正在使用的 SRP 服务器的套接字地址(IPv6 地址和端口号)。
|
otSrpClientGetServices(otInstance *aInstance)
|
const otSrpClientService *
获取由客户端管理的服务的列表。
|
otSrpClientGetTtl(otInstance *aInstance)
|
uint32_t
获取 SRP 更新请求中包含的每条记录的 TTL 值。
|
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
启用/停用“包含服务密钥记录”模式。
|
otSrpClientSetTtl(otInstance *aInstance, uint32_t aTtl)
|
void
设置 SRP 更新请求中包含的每条记录的 TTL 值。
|
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 服务器上的下一个注册主机。
|
otSrpServerGetPort(otInstance *aInstance)
|
uint16_t
返回 SRP 服务器正在监听的端口。
|
otSrpServerGetResponseCounters(otInstance *aInstance)
|
const otSrpServerResponseCounters *
返回 SRP 服务器的响应计数器。
|
otSrpServerGetState(otInstance *aInstance)
|
返回 SRP 服务器的状态。
|
otSrpServerGetTtlConfig(otInstance *aInstance, otSrpServerTtlConfig *aTtlConfig)
|
void
返回 SRP 服务器 TTL 配置。
|
otSrpServerHandleServiceUpdateResult(otInstance *aInstance, otSrpServerServiceUpdateId aId, otError aError)
|
void
向 SRP 服务器报告 SRP 更新的处理结果。
|
otSrpServerHostGetAddresses(const otSrpServerHost *aHost, uint8_t *aAddressesNum)
|
const otIp6Address *
返回指定主机的地址。
|
otSrpServerHostGetFullName(const otSrpServerHost *aHost)
|
const char *
返回主机的全名。
|
otSrpServerHostGetLeaseInfo(const otSrpServerHost *aHost, otSrpServerLeaseInfo *aLeaseInfo)
|
void
返回指定主机的 LEASE 和 KEY-LEASE 信息。
|
otSrpServerHostGetNextService(const otSrpServerHost *aHost, const otSrpServerService *aService)
|
const otSrpServerService *
返回指定主机的下一项服务。
|
otSrpServerHostIsDeleted(const otSrpServerHost *aHost)
|
bool
判断 SRP 服务主机是否已被删除。
|
otSrpServerHostMatchesFullName(const otSrpServerHost *aHost, const char *aFullName)
|
bool
指示主机是否与给定的主机名匹配。
|
otSrpServerIsAutoEnableMode(otInstance *aInstance)
|
bool
指示是启用还是停用自动启用模式。
|
otSrpServerParseSubTypeServiceName(const char *aSubTypeServiceName, char *aLabel, uint8_t aLabelSize)
|
解析子类型服务名称(全名)并提取子类型标签。
|
otSrpServerServiceGetHost(const otSrpServerService *aService)
|
const otSrpServerHost *
返回服务实例所在的主机。
|
otSrpServerServiceGetInstanceLabel(const otSrpServerService *aService)
|
const char *
返回服务的服务实例标签(实例名称中的第一个标签)。
|
otSrpServerServiceGetInstanceName(const otSrpServerService *aService)
|
const char *
返回服务的完整服务实例名称。
|
otSrpServerServiceGetLeaseInfo(const otSrpServerService *aService, otSrpServerLeaseInfo *aLeaseInfo)
|
void
返回指定服务的 LEASE 和 KEY-LEASE 信息。
|
otSrpServerServiceGetNumberOfSubTypes(const otSrpServerService *aService)
|
uint16_t
获取服务的子类型的数量。
|
otSrpServerServiceGetPort(const otSrpServerService *aService)
|
uint16_t
返回服务实例的端口。
|
otSrpServerServiceGetPriority(const otSrpServerService *aService)
|
uint16_t
返回服务实例的优先级。
|
otSrpServerServiceGetServiceName(const otSrpServerService *aService)
|
const char *
返回服务的完整名称。
|
otSrpServerServiceGetSubTypeServiceNameAt(const otSrpServerService *aService, uint16_t aIndex)
|
const char *
获取指定索引处服务的子类型服务名称(全名)。
|
otSrpServerServiceGetTtl(const otSrpServerService *aService)
|
uint32_t
返回服务实例的 TTL。
|
otSrpServerServiceGetTxtData(const otSrpServerService *aService, uint16_t *aDataLength)
|
const uint8_t *
返回服务实例的 TXT 记录数据。
|
otSrpServerServiceGetWeight(const otSrpServerService *aService)
|
uint16_t
返回服务实例的权重。
|
otSrpServerServiceHasSubTypeServiceName(const otSrpServerService *aService, const char *aSubTypeServiceName)
|
bool
指示服务是否具有给定子类型。
|
otSrpServerServiceIsDeleted(const otSrpServerService *aService)
|
bool
指明 SRP 服务是否已被删除。
|
otSrpServerServiceMatchesInstanceName(const otSrpServerService *aService, const char *aInstanceName)
|
bool
指示此服务是否与指定的服务实例名称匹配。
|
otSrpServerServiceMatchesServiceName(const otSrpServerService *aService, const char *aServiceName)
|
bool
指示此服务是否与给定服务名称匹配。
|
otSrpServerSetAddressMode(otInstance *aInstance, otSrpServerAddressMode aMode)
|
设置要由 SRP 服务器使用的地址模式。
|
otSrpServerSetAnycastModeSequenceNumber(otInstance *aInstance, uint8_t aSequenceNumber)
|
设置用于任播地址模式的序列号。
|
otSrpServerSetAutoEnableMode(otInstance *aInstance, bool aEnabled)
|
void
启用/停用 SRP 服务器上的自动启用模式。
|
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 服务更新处理程序。
|
otSrpServerSetTtlConfig(otInstance *aInstance, const otSrpServerTtlConfig *aTtlConfig)
|
设置 SRP 服务器 TTL 配置。
|
结构体 |
|
---|---|
otSrpClientBuffersServiceEntry |
表示 SRP 客户端服务池条目。 |
otSrpClientHostInfo |
表示 SRP 客户端主机信息。 |
otSrpClientService |
表示 SRP 客户端服务。 |
otSrpServerLeaseConfig |
包括 SRP 服务器 LEASE 和 KEY-LEASE 配置。 |
otSrpServerLeaseInfo |
包括主机/服务的 SRP 服务器租用信息。 |
otSrpServerResponseCounters |
包含 SRP 服务器响应的统计信息。 |
otSrpServerTtlConfig |
包含 SRP 服务器 TTL 配置。 |
枚举
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 服务器如何确定地址和端口号,以及此信息在 Thread 网络数据中的发布方式。
属性 | |
---|---|
OT_SRP_SERVER_ADDRESS_MODE_ANYCAST
|
任播地址模式。 |
OT_SRP_SERVER_ADDRESS_MODE_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 客户端自动启动或停止时,系统将调用此回调函数。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
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_IMPLEMENTED
- (5) 因政策/安全原因遭拒 -> 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 A 名称不在该可用区 -> OT_ERROR_PARSE
- (20) BADNAME 名称错误 -> OT_ERROR_PARSE
- (21) BADALG 算法错误 -> OT_ERROR_SECURITY
- (22) BADTRUN 截断错误 -> OT_ERROR_PARSE
- 其他响应代码 -> OT_ERROR_FAILED
还可能出现以下错误:
- OT_ERROR_PARENT_TIMEOUT :等待服务器响应时超时(客户端将继续重试)。
- OT_ERROR_INVALID_ARGS:提供的服务结构无效(例如,服务名称或
otDnsTxtEntry
无效)。 - OT_ERROR_NO_BUFS:准备或发送更新消息的缓冲区不足。
请注意,如果发生任何故障,客户端会继续执行操作,即经过一段时间的等待间隔后,客户端会准备 SRP 更新消息并将其(重新)传输至服务器。重试等待间隔从最小值开始,并在每次失败时以增长因数增加,直至达到最大值(如需了解详情,请参阅配置参数 OPENTHREAD_CONFIG_SRP_CLIENT_MIN_RETRY_WAIT_INTERVAL
和相关参数)。
具体说明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
参数 |
|
otSrpClientService
struct otSrpClientService otSrpClientService
表示 SRP 客户端服务。
在将此结构的实例从 otSrpClientAddService()
或 otSrpClientRemoveService()
传递到 OpenThread 后,此结构中的值(包括名称和 TXT 记录条目的字符串缓冲区)必须保持不变。
mState
、mData
、mNext
字段仅由 OT 核心使用/管理。当在 otSrpClientAddService()
、otSrpClientRemoveService()
或其他函数中传递 otSrpClientService
的实例时,系统会忽略它们的值。调用方无需设置这些字段。
mLease
和 mKeyLease
字段指定此服务所需的租期和密钥租期。值为零表示未指定间隔,则系统会对此服务使用来自 otSrpClientGetLeaseInterval()
和 otSrpClientGetKeyLeaseInterval()
的默认租用或密钥租用间隔。如果密钥租用间隔(无论是明确设置还是根据默认值确定)短于服务的租用间隔,SRP 客户端也会将租用间隔值重复用于密钥租用间隔。例如,如果在服务中明确将 mLease
设为 2 天,将 mKeyLease
设为 0,并将默认密钥租期设为 1 天,那么在注册此服务时,为此服务请求的密钥租期也设为 2 天。
otSrpServerAddressMode
enum otSrpServerAddressMode otSrpServerAddressMode
表示 SRP 服务器使用的地址模式。
地址模式指定了 SRP 服务器如何确定地址和端口号,以及此信息在 Thread 网络数据中的发布方式。
otSrpServerLeaseConfig
struct otSrpServerLeaseConfig otSrpServerLeaseConfig
包括 SRP 服务器 LEASE 和 KEY-LEASE 配置。
otSrpServerResponseCounters
struct otSrpServerResponseCounters otSrpServerResponseCounters
包含 SRP 服务器响应的统计信息。
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 更新。例如,广告代理应在支持多播的链路上通告(或移除)主机和服务,并在发生任何故障时返回特定的错误代码。
具体说明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
参数 |
|
otSrpServerSetServiceUpdateHandler
otSrpServerHandleServiceUpdateResult
otSrpServerServiceUpdateId
uint32_t otSrpServerServiceUpdateId
SRP 服务器上的 SRP 服务更新事务的 ID。
函数
otSrpClientAddService
otError otSrpClientAddService( otInstance *aInstance, otSrpClientService *aService )
添加要向服务器注册的服务。
成功调用此函数后,系统将调用 otSrpClientCallback
,以报告向 SRP 服务器添加/注册服务的状态。
从此函数(通过 OT_ERROR_NONE
)返回后,aService
指向的 otSrpClientService
实例必须保留且保持不变。OpenThread 将保存指向服务实例的指针。
OpenThread 不再跟踪 otSrpClientService
实例,并且只有在满足以下条件时才能将其回收
- 它会通过调用
otSrpClientRemoveService()
明确移除,或者通过调用otSrpClientRemoveHostAndServices() and only after the
otSrpClientCallback` 来与其他服务一起移除它,而相应服务已移除。或者, - 对
otSrpClientClearHostAndServices()
的调用,立即移除主机和所有相关服务。
具体说明 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
||||||
返回值 |
|
otSrpClientBuffersAllocateService
otSrpClientBuffersServiceEntry * otSrpClientBuffersAllocateService( otInstance *aInstance )
从池中分配新的服务条目。
返回的服务条目实例将按如下方式初始化:
mService.mName
将指向已分配的字符串缓冲区,可使用函数otSrpClientBuffersGetServiceEntryServiceNameString()
检索该缓冲区。mService.mInstanceName
将指向已分配的字符串缓冲区,可使用函数otSrpClientBuffersGetServiceEntryInstanceNameString()
检索该缓冲区。mService.mSubTypeLabels
指向从otSrpClientBuffersGetSubTypeLabelsArray()
返回的数组。mService.mTxtEntries
将指向mTxtEntry
。mService.mNumTxtEntries
将设为 1。- 其他
mService
字段(端口、优先级、权重)设置为零。 mTxtEntry.mKey
设置为 NULL(值被视为已编码)。mTxtEntry.mValue
将指向分配的缓冲区,可使用函数otSrpClientBuffersGetServiceEntryTxtBuffer()
检索该缓冲区。mTxtEntry.mValueLength
已设置为零。- 所有相关的数据/字符串缓冲区和数组都将被清零。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
指向新分配的服务条目的指针,如果池中没有可用的条目,则为 NULL。
|
otSrpClientBuffersFreeAllServices
void otSrpClientBuffersFreeAllServices( otInstance *aInstance )
释放之前分配的所有服务条目。
具体说明 | |||
---|---|---|---|
参数 |
|
otSrpClientBuffersFreeService
void otSrpClientBuffersFreeService( otInstance *aInstance, otSrpClientBuffersServiceEntry *aService )
释放先前分配的服务条目。
必须事先使用 otSrpClientBuffersAllocateService()
分配 aService
,但尚未将其释放。否则,此函数的行为将处于未定义状态。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
otSrpClientBuffersGetHostAddressesArray
otIp6Address * otSrpClientBuffersGetHostAddressesArray( otInstance *aInstance, uint8_t *aArrayLength )
获取要用作 SRP 客户端主机地址列表的 IPv6 地址条目数组。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
指向
otIp6Address 条目数组的指针(条目数在 aArrayLength 中返回)。 |
otSrpClientBuffersGetHostNameString
char * otSrpClientBuffersGetHostNameString( otInstance *aInstance, uint16_t *aSize )
获取用于 SRP 客户端主机名的字符串缓冲区。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
指向用于 SRP 客户端主机名的字符缓冲区的指针。
|
otSrpClientBuffersGetServiceEntryInstanceNameString
char * otSrpClientBuffersGetServiceEntryInstanceNameString( otSrpClientBuffersServiceEntry *aEntry, uint16_t *aSize )
从服务条目中获取服务实例名称的字符串缓冲区。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
指向字符串缓冲区的指针。
|
otSrpClientBuffersGetServiceEntryServiceNameString
char * otSrpClientBuffersGetServiceEntryServiceNameString( otSrpClientBuffersServiceEntry *aEntry, uint16_t *aSize )
从服务条目中获取服务名称的字符串缓冲区。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
指向字符串缓冲区的指针。
|
otSrpClientBuffersGetServiceEntryTxtBuffer
uint8_t * otSrpClientBuffersGetServiceEntryTxtBuffer( otSrpClientBuffersServiceEntry *aEntry, uint16_t *aSize )
从服务条目中获取 TXT 记录的缓冲区。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
指向缓冲区的指针。
|
otSrpClientBuffersGetSubTypeLabelsArray
const char ** otSrpClientBuffersGetSubTypeLabelsArray( otSrpClientBuffersServiceEntry *aEntry, uint16_t *aArrayLength )
从服务条目中获取服务子类型标签的数组。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
指向数组的指针。
|
otSrpClientClearHostAndServices
void otSrpClientClearHostAndServices( otInstance *aInstance )
清除所有主机信息和所有服务。
与 otSrpClientRemoveHostAndServices()
向服务器发送更新消息以移除所有信息不同,此函数会立即清除所有信息,而不会与服务器进行任何交互。
具体说明 | |||
---|---|---|---|
参数 |
|
otSrpClientClearService
otError otSrpClientClearService( otInstance *aInstance, otSrpClientService *aService )
清除服务,并立即将其从客户服务列表中移除。
与 otSrpClientRemoveService()
向服务器发送更新消息以移除相应服务不同,此函数不会与服务器进行任何交互,而是从客户端的服务列表中清除该服务。成功调用此函数后,系统将不会调用 otSrpClientCallback
,并且调用方可以立即回收并重复使用 aService
条目。
可与对 otSrpClientAddService()
的后续调用结合使用(可能会重复使用具有相同服务和实例名称的同一 aService
条目),以更新现有服务中的某些参数。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
otSrpClientDisableAutoStartMode
void otSrpClientDisableAutoStartMode( otInstance *aInstance )
停用自动启动模式。
仅当启用了自动启动功能 OPENTHREAD_CONFIG_SRP_CLIENT_AUTO_START_API_ENABLE
时,此功能才可用。
停用自动启动模式不会停止已在运行的客户端,但客户端会停止监控 Thread 网络数据以验证所选 SRP 服务器是否仍然存在。
请注意,调用 otSrpClientStop()
也会停用自动启动模式。
具体说明 | |||
---|---|---|---|
参数 |
|
otSrpClientEnableAutoHostAddress
otError otSrpClientEnableAutoHostAddress( otInstance *aInstance )
启用自动主机地址模式。
启用后,SRP 客户端会使用 Thread netif 上的所有首选单播地址自动设置主机 IPv6 地址,不包括所有链路本地和网状本地地址。如果没有首选地址,则会添加网状网本地 EID 地址。当/如果 Thread netif 上的地址更新(添加了新地址、移除现有地址或标记为非首选)时,SRP 客户端将自动重新注册。
自动主机地址模式可在 SRP 客户端启动之前或操作期间启用,除非主机信息正在被移除(客户端正忙于处理来自对 otSrpClientRemoveHostAndServices()
的调用的移除请求,并且主机信息仍处于 STATE_TO_REMOVE
或 STATE_REMOVING
状态)。
启用自动主机地址模式后,可通过调用 otSrpClientSetHostAddresses()
将其停用,该调用随后会显式设置主机地址。
具体说明 | |||||
---|---|---|---|---|---|
返回值 |
|
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 服务器。建议按以下顺序进行优先使用:
1) 服务数据中包含服务器地址的首选单播条目。如果有多个选项,请优先选择数值最低的 IPv6 地址。
2) 每个任播条目都有一个序列号。RFC-1982 中的序列号算术逻辑指定的较大的序列号被视为较近,因此建议使用。如果使用序列号运算的最大序列编号已明确定义(即序列编号大于所有其他序列编号),则首选使用最大的序列编号。如果没有明确定义,则首选数值最大的序列号。
3) 服务器地址中包含服务器地址信息的 Unicast 条目。如果有多个选项,请优先选择数值最低的 IPv6 地址。
当网络数据条目发生更改时,客户端将检查当前选定的服务器是否仍存在于网络数据中,且仍是首选服务器。否则,客户端将切换到新的首选服务器,如果没有,则停止。
当通过成功调用 otSrpClientStart()
来显式启动 SRP 客户端时,无论自动启动模式的状态如何,也无论 Thread Network Data 中是否发现了相同的 SRP 服务器地址,otSrpClientStart()
中的指定 SRP 服务器地址都将继续使用。在这种情况下,只有显式 otSrpClientStop()
调用才会停止客户端。
具体说明 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
otSrpClientGetDomainName
const char * otSrpClientGetDomainName( otInstance *aInstance )
获取 SRP 客户端使用的域名。
需要启用 OPENTHREAD_CONFIG_SRP_CLIENT_DOMAIN_NAME_API_ENABLE
。
如果未设置域名,系统将使用“default.service.arpa”。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
域名字符串。
|
otSrpClientGetHostInfo
const otSrpClientHostInfo * otSrpClientGetHostInfo( otInstance *aInstance )
获取主机信息。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
指向主机信息结构的指针。
|
otSrpClientGetKeyLeaseInterval
uint32_t otSrpClientGetKeyLeaseInterval( otInstance *aInstance )
获取 SRP 更新请求中使用的默认密钥租用间隔。
默认时间间隔仅用于 mKeyLease
设置为零的 otSrpClientService
实例。
请注意,这是 SRP 客户端请求的租期。服务器可能会选择接受不同的租期间隔。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
密钥租用时间间隔(以秒为单位)。
|
otSrpClientGetLeaseInterval
uint32_t otSrpClientGetLeaseInterval( otInstance *aInstance )
获取 SRP 更新请求中使用的默认租期间隔。
默认时间间隔仅用于 mLease
设置为零的 otSrpClientService
实例。
请注意,这是 SRP 客户端请求的租期。服务器可能会选择接受不同的租期间隔。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
租用间隔(以秒为单位)。
|
otSrpClientGetServerAddress
const otSockAddr * otSrpClientGetServerAddress( otInstance *aInstance )
获取 SRP 客户端正在使用的 SRP 服务器的套接字地址(IPv6 地址和端口号)。
如果客户端未运行,则地址未指定(全部为零)且端口号为零。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
指向 SRP 服务器的套接字地址(始终为非 NULL)的指针。
|
otSrpClientGetServices
const otSrpClientService * otSrpClientGetServices( otInstance *aInstance )
获取由客户端管理的服务的列表。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
指向所有服务的链接列表头的指针,如果列表为空,则为 NULL。
|
otSrpClientGetTtl
uint32_t otSrpClientGetTtl( otInstance *aInstance )
获取 SRP 更新请求中包含的每条记录的 TTL 值。
请注意,这是 SRP 客户端请求的 TTL。服务器可能会选择接受不同的 TTL。
默认情况下,TTL 等于租用间隔。通过 otSrpClientSetTtl()
传递 0 或大于租用间隔的值也会使 TTL 等于租用间隔。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
TTL(以秒为单位)。
|
otSrpClientIsAutoStartModeEnabled
bool otSrpClientIsAutoStartModeEnabled( otInstance *aInstance )
指示自动启动模式的当前状态(启用或停用)。
仅当启用了自动启动功能 OPENTHREAD_CONFIG_SRP_CLIENT_AUTO_START_API_ENABLE
时,此功能才可用。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
如果已启用自动启动模式,则为 TRUE,否则为 FALSE。
|
otSrpClientIsRunning
bool otSrpClientIsRunning( otInstance *aInstance )
指示 SRP 客户端是否正在运行。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
如果 SRP 客户端正在运行,则为 TRUE,否则为 FALSE。
|
otSrpClientIsServiceKeyRecordEnabled
bool otSrpClientIsServiceKeyRecordEnabled( otInstance *aInstance )
指示是启用还是停用了“包含服务密钥记录”模式。
在启用 OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE
配置后可用。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
如果启用了“包含服务密钥记录”模式,则为 TRUE,否则为 FALSE。
|
otSrpClientItemStateToString
const char * otSrpClientItemStateToString( otSrpClientItemState aItemState )
将 otSrpClientItemState
转换为字符串。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
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()
并使用 aSendUnregToServer
作为 true
。
具体说明 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
||||||
返回值 |
|
otSrpClientRemoveService
otError otSrpClientRemoveService( otInstance *aInstance, otSrpClientService *aService )
请求向服务器取消注册服务。
成功调用此函数后,系统会调用 otSrpClientCallback
,以报告向 SRP 服务器发出的移除请求的状态。
从此函数(通过 OT_ERROR_NONE
)返回后,aService
指向的 otSrpClientService
实例必须保留且保持不变。在移除过程中,OpenThread 将保留该服务实例。仅在调用 otSrpClientCallback
后表示服务实例已从 SRP 客户端服务列表中移除,可以释放/重复使用。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
otSrpClientSetCallback
void otSrpClientSetCallback( otInstance *aInstance, otSrpClientCallback aCallback, void *aContext )
设置回调,以通知调用方来自 SRP 客户端的事件/更改。
SRP 客户端允许注册单个回调。因此,对此函数的连续调用将覆盖之前设置的所有回调函数。
具体说明 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
otSrpClientSetDomainName
otError otSrpClientSetDomainName( otInstance *aInstance, const char *aName )
设置要供 SRP 客户端使用的域名。
需要启用 OPENTHREAD_CONFIG_SRP_CLIENT_DOMAIN_NAME_API_ENABLE
。
如果未设置,系统将使用“default.service.arpa”。
aName
指向的名称字符串缓冲区在从此函数返回后必须保留且保持不变。OpenThread 将保留指向该字符串的指针。
您可以在客户端启动之前或启动之后、向服务器注册主机信息之前设置域名(主机信息应位于 STATE_TO_ADD
或 STATE_TO_REMOVE
中)。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
otSrpClientSetHostAddresses
otError otSrpClientSetHostAddresses( otInstance *aInstance, const otIp6Address *aIp6Addresses, uint8_t aNumAddresses )
设置/更新主机 IPv6 地址列表。
您可以在启动之前或 SRP 客户端操作期间设置/更改主机 IPv6 地址(例如,添加/移除或更改以前注册的主机地址),但移除主机信息的情况除外(客户端正忙于处理先前对 otSrpClientRemoveHostAndServices()
的调用发出的移除请求,并且主机信息仍处于 STATE_TO_REMOVE
或 STATE_REMOVING
状态)。
从此函数返回(通过 OT_ERROR_NONE
)后,aIp6Addresses
指向的主机 IPv6 地址数组必须保留且保持不变。OpenThread 会将指向该数组的指针保存下来。
成功调用此函数后,系统会调用 otSrpClientCallback
,以报告向 SRP 服务器注册的地址的状态。
如果之前通过成功调用 otSrpClientEnableAutoHostAddress()
启用了自动主机地址模式,则调用此函数会停用自动主机地址模式。
具体说明 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
||||||
返回值 |
|
otSrpClientSetHostName
otError otSrpClientSetHostName( otInstance *aInstance, const char *aName )
设置主机名标签。
成功调用此函数后,系统将调用 otSrpClientCallback
以报告向 SRP 服务器注册主机信息的状态。
aName
指向的名称字符串缓冲区在从此函数返回后必须保留且保持不变。OpenThread 将保留指向该字符串的指针。
可以在客户端启动之前或启动之后、向服务器注册主机信息之前设置主机名(主机信息应位于 STATE_TO_ADD
或 STATE_REMOVED
中)。
具体说明 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
||||||
返回值 |
|
otSrpClientSetKeyLeaseInterval
void otSrpClientSetKeyLeaseInterval( otInstance *aInstance, uint32_t aInterval )
设置 SRP 更新请求中使用的默认密钥租用间隔。
默认时间间隔仅用于 mKeyLease
设置为零的 otSrpClientService
实例。
更改租借间隔不会影响已注册服务/host-info 的已接受租借间隔,而只会影响今后的所有 SRP 更新消息(即添加新服务和/或刷新现有服务)。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
otSrpClientSetLeaseInterval
void otSrpClientSetLeaseInterval( otInstance *aInstance, uint32_t aInterval )
设置 SRP 更新请求中使用的默认租期间隔。
默认时间间隔仅用于 mLease
设置为零的 otSrpClientService
实例。
更改租借间隔不会影响已注册服务/host-info 的已接受租借间隔。这只会影响以后的所有 SRP 更新消息(即添加新服务和/或刷新现有服务)。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
otSrpClientSetServiceKeyRecordEnabled
void otSrpClientSetServiceKeyRecordEnabled( otInstance *aInstance, bool aEnabled )
启用/停用“包含服务密钥记录”模式。
启用后,SRP 客户端会在其发送的 SRP 更新消息的“服务说明说明”部分包含 KEY 记录。
在启用 OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE
配置后可用。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
otSrpClientSetTtl
void otSrpClientSetTtl( otInstance *aInstance, uint32_t aTtl )
设置 SRP 更新请求中包含的每条记录的 TTL 值。
更改 TTL 不会影响已注册服务/host-info 的 TTL。它只会影响未来的 SRP 更新消息(即添加新服务和/或刷新现有服务)。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
otSrpClientStart
otError otSrpClientStart( otInstance *aInstance, const otSockAddr *aServerSockAddr )
启动 SRP 客户端操作。
满足以下所有条件后,SRP 客户端会准备“SRP 更新”消息并将其发送到 SRP 服务器:
- SRP 客户端已启动 - 已调用
otSrpClientStart()
。 - 已设置主机名 - 调用
otSrpClientSetHostName()
。 - 设置了至少一个主机 IPv6 地址 - 已调用
otSrpClientSetHostName()
。 - 至少添加了一项服务 - 调用了
otSrpClientAddService()
。
这些函数的调用顺序并不重要。当所有条件都满足时,SRP 客户端会等待一个短暂的延迟,然后再准备“SRP 更新”消息并将其发送到服务器。这种延迟允许用户在发送第一条 SRP 更新消息之前添加多个服务和/或 IPv6 地址(确保发送包含所有信息的单个 SRP 更新)。OPENTHREAD_CONFIG_SRP_CLIENT_UPDATE_TX_DELAY
配置会指定延迟间隔。
具体说明 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
||||||
返回值 |
|
otSrpClientStop
void otSrpClientStop( otInstance *aInstance )
停止 SRP 客户端操作。
停止与 SRP 服务器的任何进一步交互。请注意,此操作不会移除或清除主机信息和/或服务列表。它标记了要在(重启)客户端后再次添加/移除的所有服务。
具体说明 | |||
---|---|---|---|
参数 |
|
otSrpServerGetAddressMode
otSrpServerAddressMode otSrpServerGetAddressMode( otInstance *aInstance )
返回 SRP 服务器使用的地址模式。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
SRP 服务器的地址模式。
|
otSrpServerGetAnycastModeSequenceNumber
uint8_t otSrpServerGetAnycastModeSequenceNumber( otInstance *aInstance )
返回用于任播地址模式的序列号。
序列号包含在“网络数据”中发布“DNS/SRP 服务任播地址”条目中。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
任播序列号。
|
otSrpServerGetDomain
const char * otSrpServerGetDomain( otInstance *aInstance )
返回授权给 SRP 服务器的网域。
如果网域未通过 SetDomain 进行设置,则会返回“default.service.arpa.”。即使设置域名时不带句点,也会始终附加结尾句点。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
指向以点联接的网域字符串的指针。
|
otSrpServerGetLeaseConfig
void otSrpServerGetLeaseConfig( otInstance *aInstance, otSrpServerLeaseConfig *aLeaseConfig )
返回 SRP 服务器 LEASE 和 KEY-LEASE 配置。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
otSrpServerGetNextHost
const otSrpServerHost * otSrpServerGetNextHost( otInstance *aInstance, const otSrpServerHost *aHost )
返回 SRP 服务器上的下一个注册主机。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
指向已注册的主机的指针。如果找不到更多主机,则为 NULL。
|
otSrpServerGetPort
uint16_t otSrpServerGetPort( otInstance *aInstance )
返回 SRP 服务器正在监听的端口。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
SRP 服务器的端口。如果服务器未运行,则返回 0。
|
otSrpServerGetResponseCounters
const otSrpServerResponseCounters * otSrpServerGetResponseCounters( otInstance *aInstance )
返回 SRP 服务器的响应计数器。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
指向 SRP 服务器响应计数器的指针。
|
otSrpServerGetState
otSrpServerState otSrpServerGetState( otInstance *aInstance )
返回 SRP 服务器的状态。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
SRP 服务器的当前状态。
|
otSrpServerGetTtlConfig
void otSrpServerGetTtlConfig( otInstance *aInstance, otSrpServerTtlConfig *aTtlConfig )
返回 SRP 服务器 TTL 配置。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
otSrpServerHandleServiceUpdateResult
void otSrpServerHandleServiceUpdateResult( otInstance *aInstance, otSrpServerServiceUpdateId aId, otError aError )
向 SRP 服务器报告 SRP 更新的处理结果。
服务更新处理程序应调用此函数以返回其对 SRP 更新的处理结果。
具体说明 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
otSrpServerHostGetAddresses
const otIp6Address * otSrpServerHostGetAddresses( const otSrpServerHost *aHost, uint8_t *aAddressesNum )
返回指定主机的地址。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
指向 IPv6 地址数组的指针。
|
otSrpServerHostGetFullName
const char * otSrpServerHostGetFullName( const otSrpServerHost *aHost )
返回主机的全名。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
指向以 null 结尾的主机名字符串的指针。
|
otSrpServerHostGetLeaseInfo
void otSrpServerHostGetLeaseInfo( const otSrpServerHost *aHost, otSrpServerLeaseInfo *aLeaseInfo )
返回指定主机的 LEASE 和 KEY-LEASE 信息。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
otSrpServerHostGetNextService
const otSrpServerService * otSrpServerHostGetNextService( const otSrpServerHost *aHost, const otSrpServerService *aService )
返回指定主机的下一项服务。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
指向下一项服务的指针,如果没有更多服务,则为 NULL。
|
otSrpServerHostIsDeleted
bool otSrpServerHostIsDeleted( const otSrpServerHost *aHost )
判断 SRP 服务主机是否已被删除。
可以删除 SRP 服务主机,但会保留其名称以供将来使用。在这种情况下,主机实例不会从 SRP 服务器/注册表中移除。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
如果主机已删除,则为 TRUE,否则为 FALSE。
|
otSrpServerHostMatchesFullName
bool otSrpServerHostMatchesFullName( const otSrpServerHost *aHost, const char *aFullName )
指示主机是否与给定的主机名匹配。
DNS 名称匹配使用不区分大小写的字符串比较(即“Abc”和“aBc”视为相同)。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
otSrpServerIsAutoEnableMode
bool otSrpServerIsAutoEnableMode( otInstance *aInstance )
指示是启用还是停用自动启用模式。
需要 OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE
功能。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
otSrpServerParseSubTypeServiceName
otError otSrpServerParseSubTypeServiceName( const char *aSubTypeServiceName, char *aLabel, uint8_t aLabelSize )
解析子类型服务名称(全名)并提取子类型标签。
子类型服务的完整服务名称为“
具体说明 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
||||||
返回值 |
|
otSrpServerServiceGetHost
const otSrpServerHost * otSrpServerServiceGetHost( const otSrpServerService *aService )
返回服务实例所在的主机。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
指向主机实例的指针。
|
otSrpServerServiceGetInstanceLabel
const char * otSrpServerServiceGetInstanceLabel( const otSrpServerService *aService )
返回服务的服务实例标签(实例名称中的第一个标签)。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
指向以 null 结尾的服务实例标签字符串的指针。
|
otSrpServerServiceGetInstanceName
const char * otSrpServerServiceGetInstanceName( const otSrpServerService *aService )
返回服务的完整服务实例名称。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
指向以 null 结尾的服务实例名称字符串的指针。
|
otSrpServerServiceGetLeaseInfo
void otSrpServerServiceGetLeaseInfo( const otSrpServerService *aService, otSrpServerLeaseInfo *aLeaseInfo )
返回指定服务的 LEASE 和 KEY-LEASE 信息。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
otSrpServerServiceGetNumberOfSubTypes
uint16_t otSrpServerServiceGetNumberOfSubTypes( const otSrpServerService *aService )
获取服务的子类型的数量。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
aService 的子类型的数量。 |
otSrpServerServiceGetPort
uint16_t otSrpServerServiceGetPort( const otSrpServerService *aService )
返回服务实例的端口。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
服务的端口。
|
otSrpServerServiceGetPriority
uint16_t otSrpServerServiceGetPriority( const otSrpServerService *aService )
返回服务实例的优先级。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
服务的优先级。
|
otSrpServerServiceGetServiceName
const char * otSrpServerServiceGetServiceName( const otSrpServerService *aService )
返回服务的完整名称。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
指向以 null 结尾的服务名称字符串的指针。
|
otSrpServerServiceGetSubTypeServiceNameAt
const char * otSrpServerServiceGetSubTypeServiceNameAt( const otSrpServerService *aService, uint16_t aIndex )
获取指定索引处服务的子类型服务名称(全名)。
子类型服务的完整服务名称为“
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
指向位于
aIndex 的子类型服务名称的指针,如果此索引没有子类型,则为 NULL 。 |
otSrpServerServiceGetTtl
uint32_t otSrpServerServiceGetTtl( const otSrpServerService *aService )
返回服务实例的 TTL。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
服务实例的 TTL。
|
otSrpServerServiceGetTxtData
const uint8_t * otSrpServerServiceGetTxtData( const otSrpServerService *aService, uint16_t *aDataLength )
返回服务实例的 TXT 记录数据。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
指向包含 TXT 记录数据的缓冲区的指针(TXT 数据长度在
aDataLength 中返回)。 |
otSrpServerServiceGetWeight
uint16_t otSrpServerServiceGetWeight( const otSrpServerService *aService )
返回服务实例的权重。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
服务的权重。
|
otSrpServerServiceHasSubTypeServiceName
bool otSrpServerServiceHasSubTypeServiceName( const otSrpServerService *aService, const char *aSubTypeServiceName )
指示服务是否具有给定子类型。
DNS 名称匹配使用不区分大小写的字符串比较(即“Abc”和“aBc”视为相同)。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
otSrpServerServiceIsDeleted
bool otSrpServerServiceIsDeleted( const otSrpServerService *aService )
指明 SRP 服务是否已被删除。
可以删除 SRP 服务,但会保留其名称以供将来使用。在这种情况下,服务实例不会从 SRP 服务器/注册表中移除。如果删除主机,这必定会删除所有服务。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
如果服务已被删除,则为 TRUE,否则为 FALSE。
|
otSrpServerServiceMatchesInstanceName
bool otSrpServerServiceMatchesInstanceName( const otSrpServerService *aService, const char *aInstanceName )
指示此服务是否与指定的服务实例名称匹配。
DNS 名称匹配使用不区分大小写的字符串比较(即“Abc”和“aBc”视为相同)。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
otSrpServerServiceMatchesServiceName
bool otSrpServerServiceMatchesServiceName( const otSrpServerService *aService, const char *aServiceName )
指示此服务是否与给定服务名称匹配。
DNS 名称匹配使用不区分大小写的字符串比较(即“Abc”和“aBc”视为相同)。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
otSrpServerSetAddressMode
otError otSrpServerSetAddressMode( otInstance *aInstance, otSrpServerAddressMode aMode )
设置要由 SRP 服务器使用的地址模式。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
otSrpServerSetAnycastModeSequenceNumber
otError otSrpServerSetAnycastModeSequenceNumber( otInstance *aInstance, uint8_t aSequenceNumber )
设置用于任播地址模式的序列号。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
otSrpServerSetAutoEnableMode
void otSrpServerSetAutoEnableMode( otInstance *aInstance, bool aEnabled )
启用/停用 SRP 服务器上的自动启用模式。
需要 OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE
功能。
启用此模式后,边界路由管理器将控制是否/何时启用或停用 SRP 服务器。如果/当边界路由已启动且使用初始前缀和路由配置(已确定 OMR 和链路前缀、在基础架构端发出的路由器通告消息中通告并在线程网络数据中发布)时,SRP 服务器会自动启用。当 BR 停止时(例如,如果基础架构网络接口发生故障或 BR 断开连接时),SRP 服务器会自动停用。
可通过将 aEnabled
设置为 false
的 otSrpServerSetAutoEnableMode()
调用来停用此模式,也可以通过调用 otSrpServerSetEnabled()
函数明确启用或停用 SRP 服务器。使用 otSrpServerSetAutoEnableMode(false)
停用自动启用模式不会更改 SRP 服务器的当前状态(例如,如果已启用,它会保持启用状态)。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
otSrpServerSetDomain
otError otSrpServerSetDomain( otInstance *aInstance, const char *aDomain )
在 SRP 服务器上设置网域。
如果 aDomain
不存在,则将附加该结尾句点。只应在启用 SRP 服务器之前调用。
具体说明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
参数 |
|
||||||||
返回值 |
|
otSrpServerSetEnabled
void otSrpServerSetEnabled( otInstance *aInstance, bool aEnabled )
启用/停用 SRP 服务器。
在边界路由器上,建议改用 otSrpServerSetAutoEnableMode()
。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
otSrpServerSetLeaseConfig
otError otSrpServerSetLeaseConfig( otInstance *aInstance, const otSrpServerLeaseConfig *aLeaseConfig )
设置 SRP 服务器 LEASE 和 KEY-LEASE 配置。
当从客户端请求非零 LEASE 时间时,授予的值将限制在 [aMinLease、aMaxLease] 的范围内;而在 [aMinKeyLease, aMaxKeyLease] 的范围内授予非零 KEY-LEASE。如果 LEASE 或 KEY-LEASE 时间为零,则系统将授予零权限。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
otSrpServerSetServiceUpdateHandler
void otSrpServerSetServiceUpdateHandler( otInstance *aInstance, otSrpServerServiceUpdateHandler aServiceHandler, void *aContext )
设置 SRP 服务器上的 SRP 服务更新处理程序。
具体说明 | |||||||
---|---|---|---|---|---|---|---|
参数 |
|
otSrpServerSetTtlConfig
otError otSrpServerSetTtlConfig( otInstance *aInstance, const otSrpServerTtlConfig *aTtlConfig )
设置 SRP 服务器 TTL 配置。
无论最小和最大 TTL 配置如何,授予的 TTL 始终不大于通过 otSrpServerSetLeaseConfig()
配置的最大租用间隔。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
|
资源
OpenThread API 参考文档源自 GitHub 上提供的源代码。如需了解详情,或者为我们的文档做贡献,请参阅资源。