SRP:搜尋結果網頁
這個模組內含可控制 SRP 用戶端行為的函式。
摘要
這個模組含有服務註冊通訊協定的功能。
這個模組含有適用於 SRP 用戶端緩衝區和服務集區的函式。
只有在啟用 OPENTHREAD_CONFIG_SRP_CLIENT_BUFFERS_ENABLE 功能時,才能使用這個模組中的函式。
列舉 |
|
---|---|
otSrpClientItemState{
|
列舉 指定 SRP 用戶端項目 (服務或主機資訊) 狀態。 |
otSrpServerAddressMode{
|
列舉 代表 SRP 伺服器使用的位址模式。 |
otSrpServerState{
|
列舉 代表 SRP 伺服器的狀態。 |
Typedefs |
|
---|---|
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 伺服器存留時間設定。 |
函式 |
|
---|---|
otSrpClientAddService(otInstance *aInstance, otSrpClientService *aService)
|
新增要透過伺服器註冊的服務。
|
otSrpClientBuffersAllocateService(otInstance *aInstance)
|
分配集區中的新服務項目。
|
otSrpClientBuffersFreeAllServices(otInstance *aInstance)
|
void
釋放先前分配的所有服務項目。
|
otSrpClientBuffersFreeService(otInstance *aInstance, otSrpClientBuffersServiceEntry *aService)
|
void
釋放先前分配的服務項目。
|
otSrpClientBuffersGetHostAddressesArray(otInstance *aInstance, uint8_t *aArrayLength)
|
取得 IPv6 位址項目的陣列,做為 SRP 用戶端主機位址清單使用。
|
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 更新要求中每筆記錄的存留時間值。
|
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 更新要求中包含的每筆記錄設定存留時間值。
|
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 伺服器存留時間設定。
|
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
傳回服務執行個體的存留時間。
|
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 伺服器存留時間設定。
|
結構 |
|
---|---|
otSrpClientBuffersServiceEntry |
代表 SRP 客戶服務集區項目。 |
otSrpClientHostInfo |
代表 SRP 用戶端主機資訊。 |
otSrpClientService |
代表 SRP 客戶服務。 |
otSrpServerLeaseConfig |
包含 SRP 伺服器 LEASE 和 KEY-LEASE 設定。 |
otSrpServerLeaseInfo |
包含主機/服務的 SRP 伺服器租約資訊。 |
otSrpServerResponseCounters |
包含 SRP 伺服器回應的統計資料。 |
otSrpServerTtlConfig |
包含 SRP 伺服器存留時間設定。 |
列舉
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
|
「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 伺服器已啟用,但已停止。 |
Typedefs
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
成員變數中會追蹤各自的狀態 (這個狀態會指出 Host-info/服務 是否已註冊、移除,或仍在新增/移除等)。
已移除服務的清單會在回呼中,做為其專屬的連結清單 aRemovedServices
傳遞。請注意,叫用回呼時,系統會針對 aRemovedServices
中所列的已移除服務執行個體完成 SRP 用戶端 (OpenThread 實作),且不會再追蹤/儲存這些執行個體 (也就是說,從回呼 otSrpClientGetServices()
呼叫 otSrpClientGetServices()
時,已移除的服務不會顯示在傳回清單中)。在回呼中提供另一份已移除服務清單,有助於使用者瞭解現在移除的項目,並允許使用者重新取得/重複使用執行個體。
如果伺服器拒絕 SRP 更新要求,DNS 回應代碼 (RFC 2136) 會對應至以下錯誤:
- (0) 無錯誤 (沒有錯誤狀況) -> 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) 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
和相關參數)。
詳細說明 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
otSrpClientService
struct otSrpClientService otSrpClientService
代表 SRP 客戶服務。
這個結構中的值 (包括名稱和 TXT 記錄項目的字串緩衝區) 從 otSrpClientAddService()
或 otSrpClientRemoveService()
傳遞至 OpenThread 後,「必須」保留並保持不變。
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 更新。例如,廣告 Proxy 應透過支援多點傳送的連結來宣傳 (或移除) 主機和服務,如果發生任何失敗,則傳回特定的錯誤代碼。
詳細說明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
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
執行個體,且只能在以下情況下收回
- 呼叫
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
將設為一。- 其他
mService
欄位 (通訊埠、優先順序、權重) 會設為零。 mTxtEntry.mKey
設為 NULL (值會視為已編碼)。mTxtEntry.mValue
會指向分配的緩衝區。您可以使用函式otSrpClientBuffersGetServiceEntryTxtBuffer()
擷取這個緩衝區。mTxtEntry.mValueLength
已設為零。- 所有相關的資料/字串緩衝區和陣列都會清除所有零。
詳細說明 | |||
---|---|---|---|
參數 |
|
||
傳回 |
指向新分配的服務項目指標。如果集區中沒有其他項目,則指向 NULL。
|
otSrpClientBuffersFreeAllServices
void otSrpClientBuffersFreeAllServices( otInstance *aInstance )
釋放先前分配的所有服務項目。
詳細說明 | |||
---|---|---|---|
參數 |
|
otSrpClientBuffersFreeService
void otSrpClientBuffersFreeService( otInstance *aInstance, otSrpClientBuffersServiceEntry *aService )
釋放先前分配的服務項目。
aService
必須事先使用 otSrpClientBuffersAllocateService()
分配,且尚未釋放。否則此函式的行為未定義。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
otSrpClientBuffersGetHostAddressesArray
otIp6Address * otSrpClientBuffersGetHostAddressesArray( otInstance *aInstance, uint8_t *aArrayLength )
取得 IPv6 位址項目的陣列,做為 SRP 用戶端主機位址清單使用。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回 |
指向
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 )
啟用自動主機位址模式。
主機 IPv6 位址啟用之後,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 用戶端會監控 Thread 網路資料,找出 SRP 伺服器並選擇偏好的伺服器,並在偵測到 SRP 伺服器時,自動啟動及停止用戶端。
網路資料項目分為三個類別,指出是否有 SRP。建議您採用以下順序:
1) 偏好的單點傳播項目,服務資料會包含伺服器位址。如果有多個選項,建議使用 IPv6 位址數量最低的數字。
2) Anycast 項目各有序號。在 RFC-1982 的序號雜湊邏輯中指定時,越近期的序號越大,越近期越好。如為定義明確的序列,建議採用使用序號算術的最大序號 (即序號大於其餘序號)。如未明確定義,建議使用數值最大的 Seq 數字。
3) 包含伺服器位址資訊的 Unicast 項目。如果有多個選項,建議使用 IPv6 位址數量最低的數字。
當「網路資料」項目發生變更時,用戶端會檢查目前選取的伺服器是否仍出現在網路資料中,而且仍是偏好的伺服器。否則,用戶端會切換到新的偏好伺服器;如果沒有伺服器,則停止運作。
成功透過成功呼叫 otSrpClientStart()
並明確啟動 SRP 用戶端時,無論自動開始模式的狀態為何,以及 Thread 網路資料中是否發現相同的 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 伺服器的通訊端位址 (一律為非空值)。
|
otSrpClientGetServices
const otSrpClientService * otSrpClientGetServices( otInstance *aInstance )
取得用戶端管理的服務清單。
詳細說明 | |||
---|---|---|---|
參數 |
|
||
傳回 |
指向所有服務的已連結清單標題,如果清單為空白,則指向 NULL。
|
otSrpClientGetTtl
uint32_t otSrpClientGetTtl( otInstance *aInstance )
取得 SRP 更新要求中每筆記錄的存留時間值。
請注意,此為 SRP 用戶端要求的存留時間。伺服器可能會選擇接受不同的存留時間。
根據預設,存留時間會等於租用間隔。如果透過 otSrpClientSetTtl()
傳送 0 或大於保留間隔的值,也會導致存留時間等於租用間隔。
詳細說明 | |||
---|---|---|---|
參數 |
|
||
傳回 |
存留時間 (以秒為單位)。
|
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 伺服器回報移除要求的狀態。
aService
指向的 otSrpClientService
執行個體「必須」保留,並在從此函式傳回後 (使用 OT_ERROR_NONE
) 後保持不變。在移除過程中,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
狀態)。
aIp6Addresses
指向的主機 IPv6 位址陣列「必須」保留,且自此函式傳回 OT_ERROR_NONE
後將維持不變。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 更新要求中包含的每筆記錄設定存留時間值。
變更存留時間不會影響已註冊服務/host-info 的存留時間,只會影響未來的 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 服務 Anycast Address」項目中。
詳細說明 | |||
---|---|---|---|
參數 |
|
||
傳回 |
Anycast 序號。
|
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 伺服器上的下一個註冊主機。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回 |
指向註冊主機的指標。空值 (如果找不到主機)。
|
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 伺服器存留時間設定。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
otSrpServerHandleServiceUpdateResult
void otSrpServerHandleServiceUpdateResult( otInstance *aInstance, otSrpServerServiceUpdateId aId, otError aError )
回報 SRP 伺服器更新 SRP 後的結果。
Service Update Handler 應呼叫此函式,以傳回處理 SRP 更新的結果。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
otSrpServerHostGetAddresses
const otIp6Address * otSrpServerHostGetAddresses( const otSrpServerHost *aHost, uint8_t *aAddressesNum )
傳回指定主機的地址。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回 |
指向 IPv6 位址陣列的指標。
|
otSrpServerHostGetFullName
const char * otSrpServerHostGetFullName( const otSrpServerHost *aHost )
傳回主機的全名。
詳細說明 | |||
---|---|---|---|
參數 |
|
||
傳回 |
指向空值結束主機名稱字串的指標。
|
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 )
傳回服務的服務執行個體標籤 (執行個體名稱中的第一個標籤)。
詳細說明 | |||
---|---|---|---|
參數 |
|
||
傳回 |
指向空值服務執行個體標籤字串的指標。
|
otSrpServerServiceGetInstanceName
const char * otSrpServerServiceGetInstanceName( const otSrpServerService *aService )
傳回服務的完整服務執行個體名稱。
詳細說明 | |||
---|---|---|---|
參數 |
|
||
傳回 |
指向空值服務執行個體名稱字串的指標。
|
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 )
傳回服務的完整服務名稱。
詳細說明 | |||
---|---|---|---|
參數 |
|
||
傳回 |
指向空值服務名稱字串的指標。
|
otSrpServerServiceGetSubTypeServiceNameAt
const char * otSrpServerServiceGetSubTypeServiceNameAt( const otSrpServerService *aService, uint16_t aIndex )
取得特定索引的服務子類型服務名稱 (全名)。
子類型服務的完整服務名稱會顯示在「
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回 |
指向
aIndex 的子類型服務名稱指標,如果這個索引沒有子類型,則為 NULL 。 |
otSrpServerServiceGetTtl
uint32_t otSrpServerServiceGetTtl( const otSrpServerService *aService )
傳回服務執行個體的存留時間。
詳細說明 | |||
---|---|---|---|
參數 |
|
||
傳回 |
服務執行個體的存留時間。
|
otSrpServerServiceGetTxtData
const uint8_t * otSrpServerServiceGetTxtData( const otSrpServerService *aService, uint16_t *aDataLength )
傳回服務執行個體的 TXT 記錄資料。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回 |
指向包含 TXT 記錄資料的緩衝區指標 (在
aDataLength 中會傳回 TXT 資料長度)。 |
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 伺服器。如已啟用邊界轉送,且在啟動邊界轉送,且使用初始前置字元和路徑設定完成,就會自動啟用 SRP 伺服器;一旦確定 OMR 和連結上前置字元時,基礎架構端就會發出發出的路由器廣告訊息,並發布於 Thread 網路資料中。當 BR 停止時 (例如基礎設施網路介面服務中斷或 BR 卸離),SRP 伺服器會自動停用。
您可以透過 otSrpServerSetAutoEnableMode()
呼叫將 aEnabled
設為 false
,或是呼叫 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 時間,系統不會授予 0。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
otSrpServerSetServiceUpdateHandler
void otSrpServerSetServiceUpdateHandler( otInstance *aInstance, otSrpServerServiceUpdateHandler aServiceHandler, void *aContext )
設定 SRP 伺服器上的 SRP 服務更新處理常式。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
otSrpServerSetTtlConfig
otError otSrpServerSetTtlConfig( otInstance *aInstance, const otSrpServerTtlConfig *aTtlConfig )
設定 SRP 伺服器存留時間設定。
無論存留時間下限或上限設定為何,授予的存留時間都絕不會大於透過 otSrpServerSetLeaseConfig()
設定的保留間隔上限。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
資源
OpenThread API 參考資料主題源自原始碼,請前往 GitHub 取得。如要瞭解詳情或對說明文件做出貢獻,請參閱資源。