IPv6

這個模組包含用於控制 IPv6 通訊的功能。

摘要

列舉

anonymous enum{
  OT_ADDRESS_ORIGIN_THREAD = 0,
  OT_ADDRESS_ORIGIN_SLAAC = 1,
  OT_ADDRESS_ORIGIN_DHCPV6 = 2,
  OT_ADDRESS_ORIGIN_MANUAL = 3
}
列舉
IPv6 位址來源。
anonymous enum{
  OT_ECN_NOT_CAPABLE = 0x0,
  OT_ECN_CAPABLE_0 = 0x2,
  OT_ECN_CAPABLE_1 = 0x1,
  OT_ECN_MARKED = 0x3
}
列舉
ECN 狀態,如 IP 標頭所示。
anonymous enum{
  OT_IP6_PROTO_HOP_OPTS = 0,
  OT_IP6_PROTO_TCP = 6,
  OT_IP6_PROTO_UDP = 17,
  OT_IP6_PROTO_IP6 = 41,
  OT_IP6_PROTO_ROUTING = 43,
  OT_IP6_PROTO_FRAGMENT = 44,
  OT_IP6_PROTO_ICMP6 = 58,
  OT_IP6_PROTO_NONE = 59,
  OT_IP6_PROTO_DST_OPTS = 60
}
列舉
網際網路通訊協定號碼。

Typedefs

otIp6Address typedef
struct otIp6Address
這個結構代表一個 IPv6 位址。
otIp6AddressCallback)(const otIp6AddressInfo *aAddressInfo, bool aIsAdded, void *aContext) typedef
void(*
新增或移除內部 IPv6 位址時,系統會呼叫這個函式指標。
otIp6AddressComponents typedef
這個結構代表的是 IPv6 位址的元件。
otIp6AddressInfo typedef
otIp6InterfaceIdentifier typedef
這個結構代表了 IPv6 位址的介面 ID。
otIp6NetworkPrefix typedef
這個結構代表 IPv6 位址的「網路前置字串」(地址中最顯著的 64 位元)。
otIp6Prefix typedef
struct otIp6Prefix
這個結構代表一個 IPv6 前置字串。
otIp6ReceiveCallback)(otMessage *aMessage, void *aContext) typedef
void(*
收到 IPv6 資料圖表時,系統就會呼叫此函式指標。
otIp6RegisterMulticastListenersCallback)(void *aContext, otError aError, uint8_t aMlrStatus, const otIp6Address *aFailedAddresses, uint8_t aFailedAddressNum) typedef
void(*
系統會呼叫包含 otIp6RegisterMulticastListeners 結果的這個函式指標。
otIp6SlaacPrefixFilter)(otInstance *aInstance, const otIp6Prefix *aPrefix) typedef
bool(*
這個函式指標可讓使用者篩選前置字元,且不允許根據前置字串新增 SLAAC 位址。
otMessageInfo typedef
struct otMessageInfo
這個結構代表本機和對等 IPv6 通訊端位址。
otNetifAddress typedef
這個結構代表一個 IPv6 網路介面的單點位址。
otNetifMulticastAddress typedef
這個結構代表一個 IPv6 網路介面的多點傳送位址。
otSockAddr typedef
struct otSockAddr
這個結構代表一個 IPv6 插槽位址。

變數

OT_TOOL_PACKED_END

函式

otIp6AddUnicastAddress(otInstance *aInstance, const otNetifAddress *aAddress)
將網路介面位址新增至 Thread 介面。
otIp6AddUnsecurePort(otInstance *aInstance, uint16_t aPort)
此函式會將通訊埠新增至允許的未加密通訊埠清單。
otIp6AddressFromString(const char *aString, otIp6Address *aAddress)
此函式會將使用者可理解的 IPv6 位址字串轉換成二進位表示法。
otIp6AddressToString(const otIp6Address *aAddress, char *aBuffer, uint16_t aSize)
void
此函式會將指定的 IPv6 位址轉換為使用者可理解的字串。
otIp6ArePrefixesEqual(const otIp6Prefix *aFirst, const otIp6Prefix *aSecond)
bool
測試兩個 IPv6 前置字串是否相同。
otIp6GetMulticastAddresses(otInstance *aInstance)
取得已訂閱 Thread 介面的 IPv6 多播位址清單。
otIp6GetUnicastAddresses(otInstance *aInstance)
const otNetifAddress *
取得指派給 Thread 介面的 IPv6 位址清單。
otIp6GetUnsecurePorts(otInstance *aInstance, uint8_t *aNumEntries)
const uint16_t *
這個函式會傳回指向不安全的通訊埠清單。
otIp6IsAddressEqual(const otIp6Address *aFirst, const otIp6Address *aSecond)
bool
測試兩個 IPv6 位址是否相同。
otIp6IsAddressUnspecified(const otIp6Address *aAddress)
bool
這個函式會指出特定 IPv6 位址是否為未指定位址。
otIp6IsEnabled(otInstance *aInstance)
bool
這個函式會指出 IPv6 介面是否已開啟。
otIp6IsMulticastPromiscuousEnabled(otInstance *aInstance)
bool
檢查 Thread 介面上是否已啟用多點混音模式。
otIp6IsReceiveFilterEnabled(otInstance *aInstance)
bool
這個函式指出當透過 otIp6SetReceiveCallback() 指定的回呼來傳送 IPv6 資料元時,系統會篩選掉 Thread 控制流量以及 Thread 控制流量。
otIp6IsSlaacEnabled(otInstance *aInstance)
bool
這個函式會指出 SLAAC 模組是否已啟用。
otIp6NewMessage(otInstance *aInstance, const otMessageSettings *aSettings)
分配新的訊息緩衝區,用於傳送 IPv6 訊息。
otIp6NewMessageFromBuffer(otInstance *aInstance, const uint8_t *aData, uint16_t aDataLength, const otMessageSettings *aSettings)
分配新的消息緩衝器,請為 IPv6 數據圖設置 IPv6 數據圖,用於發送 IPv6 消息。
otIp6PrefixMatch(const otIp6Address *aFirst, const otIp6Address *aSecond)
uint8_t
這個函式會傳回兩個 IPv6 位址的前置字串比對長度 (位元)。
otIp6PrefixToString(const otIp6Prefix *aPrefix, char *aBuffer, uint16_t aSize)
void
此函式會將指定的 IPv6 前置字串轉換為使用者可理解的字串。
otIp6ProtoToString(uint8_t aIpProto)
const char *
此函式會將指定的 IP 通訊協定編號轉換為使用者可理解的字串。
otIp6RegisterMulticastListeners(otInstance *aInstance, const otIp6Address *aAddresses, uint8_t aAddressNum, const uint32_t *aTimeout, otIp6RegisterMulticastListenersCallback aCallback, void *aContext)
這個函式會將多點監聽器註冊到主要中樞路由器。
otIp6RemoveAllUnsecurePorts(otInstance *aInstance)
void
這個函式會將所有通訊埠從允許的不安全通訊埠清單中移除。
otIp6RemoveUnicastAddress(otInstance *aInstance, const otIp6Address *aAddress)
從 Thread 介面中移除網路介面位址。
otIp6RemoveUnsecurePort(otInstance *aInstance, uint16_t aPort)
這個函式會從允許的不安全通訊埠清單中移除通訊埠。
otIp6SelectSourceAddress(otInstance *aInstance, otMessageInfo *aMessageInfo)
這個函式會執行 OpenThread 來源位址選項。
otIp6Send(otInstance *aInstance, otMessage *aMessage)
這個函式會透過 Thread 介面傳送 IPv6 資料圖表。
otIp6SetAddressCallback(otInstance *aInstance, otIp6AddressCallback aCallback, void *aCallbackContext)
void
這個函式會登錄回呼,通知內部 IPv6 位址變更。
otIp6SetEnabled(otInstance *aInstance, bool aEnabled)
這項功能會開啟/關閉 IPv6 介面。
otIp6SetMeshLocalIid(otInstance *aInstance, const otIp6InterfaceIdentifier *aIid)
這個函式會設定網格本機 IID (供測試用途)。
otIp6SetMulticastPromiscuousEnabled(otInstance *aInstance, bool aEnabled)
void
在 Thread 介面上啟用多點混亂模式。
otIp6SetReceiveCallback(otInstance *aInstance, otIp6ReceiveCallback aCallback, void *aCallbackContext)
void
此函式會註冊回呼來提供收到的 IPv6 資料元。
otIp6SetReceiveFilterEnabled(otInstance *aInstance, bool aEnabled)
void
這個函式會設定在透過 otIp6SetReceiveCallback() 所指定的回呼來傳送 IPv6 資料圖表時,是否排除 Thread 控制流量。
otIp6SetSlaacEnabled(otInstance *aInstance, bool aEnabled)
void
這項功能會啟用/停用 SLAAC 模組。
otIp6SetSlaacPrefixFilter(otInstance *aInstance, otIp6SlaacPrefixFilter aFilter)
void
這個函式會設定 SLAAC 模組篩選器處理常式。
otIp6SockAddrToString(const otSockAddr *aSockAddr, char *aBuffer, uint16_t aSize)
void
此函式會將指定的 IPv6 通訊端位址轉換為使用者可理解的字串。
otIp6SubscribeMulticastAddress(otInstance *aInstance, const otIp6Address *aAddress)
訂閱 Thread 介面到網路介面多播位址。
otIp6UnsubscribeMulticastAddress(otInstance *aInstance, const otIp6Address *aAddress)
將 Thread 介面取消訂閱網路介面介面多點傳送。

結構

otIp6Address

這個結構代表一個 IPv6 位址。

otIp6AddressComponents

這個結構代表的是 IPv6 位址的元件。

otIp6AddressInfo

這個結構代表 IPv6 位址資訊。

otIp6InterfaceIdentifier

這個結構代表了 IPv6 位址的介面 ID。

otIp6NetworkPrefix

這個結構代表 IPv6 位址的「網路前置字串」(地址中最顯著的 64 位元)。

otIp6Prefix

這個結構代表一個 IPv6 前置字串。

otMessageInfo

這個結構代表本機和對等 IPv6 通訊端位址。

otNetifAddress

這個結構代表一個 IPv6 網路介面的單點位址。

otNetifMulticastAddress

這個結構代表一個 IPv6 網路介面的多點傳送位址。

otSockAddr

這個結構代表一個 IPv6 插槽位址。

聯集

otIp6InterfaceIdentifier::OT_TOOL_PACKED_FIELD

列舉

匿名列舉

 anonymous enum

IPv6 位址來源。

屬性
OT_ADDRESS_ORIGIN_DHCPV6

DHCPv6 指派的地址。

OT_ADDRESS_ORIGIN_MANUAL

手動指派的地址。

OT_ADDRESS_ORIGIN_SLAAC

SLAAC 指派的地址。

OT_ADDRESS_ORIGIN_THREAD

會話串指派地址 (ALOC、RLOC、MLEID 等等)

匿名列舉

 anonymous enum

ECN 狀態,如 IP 標頭所示。

屬性
OT_ECN_CAPABLE_0

ECT(0)

OT_ECN_CAPABLE_1

ECT(1)

OT_ECN_MARKED

發生壅塞 (CE)

OT_ECN_NOT_CAPABLE

非 ECT。

匿名列舉

 anonymous enum

網際網路通訊協定號碼。

屬性
OT_IP6_PROTO_DST_OPTS

IPv6 的目的地選項。

OT_IP6_PROTO_FRAGMENT

IPv6 片段標頭。

OT_IP6_PROTO_HOP_OPTS

IPv6 高點跳躍選項。

OT_IP6_PROTO_ICMP6

IPv6 的 ICMP。

OT_IP6_PROTO_IP6

IPv6 封裝。

OT_IP6_PROTO_NONE

IPv6 沒有下一個標頭。

OT_IP6_PROTO_ROUTING

IPv6 的路由標頭。

OT_IP6_PROTO_TCP

傳輸控制通訊協定。

OT_IP6_PROTO_UDP

使用者資料圖表。

Typedefs

otIp6 地址

struct otIp6Address otIp6Address

這個結構代表一個 IPv6 位址。

otIp6AddressCallback

void(* otIp6AddressCallback)(const otIp6AddressInfo *aAddressInfo, bool aIsAdded, void *aContext)

新增或移除內部 IPv6 位址時,系統會呼叫這個函式指標。

詳細資料
參數
[in] aAddressInfo
IPv6 位址資訊的指標。
[in] aIsAdded
如果已新增 aAddress,將為 TRUE;如果已移除 aAddress,則傳回 FALSE。
[in] aContext
應用程式專屬背景資訊。

otIp6AddressComponents

struct otIp6AddressComponents otIp6AddressComponents

這個結構代表的是 IPv6 位址的元件。

otIp6 地址資訊

struct otIp6AddressInfo otIp6AddressInfo

otIp6InterfaceIdentifier

struct otIp6InterfaceIdentifier otIp6InterfaceIdentifier

這個結構代表了 IPv6 位址的介面 ID。

otIp6NetworkPrefix

struct otIp6NetworkPrefix otIp6NetworkPrefix

這個結構代表 IPv6 位址的「網路前置字串」(地址中最顯著的 64 位元)。

otIp6Prefix

struct otIp6Prefix otIp6Prefix

這個結構代表一個 IPv6 前置字串。

otIp6ReceiveCallback

void(* otIp6ReceiveCallback)(otMessage *aMessage, void *aContext)

收到 IPv6 資料圖表時,系統就會呼叫此函式指標。

詳細資料
參數
[in] aMessage
指向已接收 IPv6 資料圖表的郵件緩衝區。這個函式會將 aMessage 的擁有權轉移給回呼的接收端。訊息在處理完成後,應由回呼接收者釋出 (請參閱 otMessageFree())。
[in] aContext
應用程式專屬背景資訊。

otIp6RegisterMulticastListenersCallback

void(* otIp6RegisterMulticastListenersCallback)(void *aContext, otError aError, uint8_t aMlrStatus, const otIp6Address *aFailedAddresses, uint8_t aFailedAddressNum)

系統會呼叫包含 otIp6RegisterMulticastListeners 結果的這個函式指標。

詳細資料
參數
[in] aContext
指向使用者的情境。
[in] aError
OT_ERROR_NONE 成功傳送 MLR.req 並收到 MLR.rsp 時,OT_ERROR_RESPONSE_TIMEOUT 無法接收 MLR.rsp、OT_ERROR_PARSE 無法剖析 MLR.rsp。
[in] aMlrStatus
aError 為 OT_ERROR_NONE 時,多播接聽器註冊狀態。
[in] aFailedAddresses
aError 為 OT_ERROR_NONE 時,指向失敗 IPv6 位址的指標。
[in] aFailedAddressNum
aError 為 OT_ERROR_NONE 時失敗的 IPv6 位址數量。
另請參閱:
otIp6RegisterMulticastListeners

otIp6SlaacPrefixFilter

bool(* otIp6SlaacPrefixFilter)(otInstance *aInstance, const otIp6Prefix *aPrefix)

這個函式指標可讓使用者篩選前置字元,且不允許根據前置字串新增 SLAAC 位址。

otIp6SetSlaacPrefixFilter() 可用來設定篩選器處理常式。當 SLAAC 模組根據前置字串新增 SLAAC 地址時,會叫用篩選器處理常式。其布林值傳回值會決定地址是否經過篩選 (而非新增)。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aPrefix
指向 SLAAC 地址即將加入的前置字串。
傳回值
TRUE
表示應篩選前置字串,並「不會」根據 SLAAC 地址篩選地址。
FALSE
表示應根據前置字串新增 SLAAC 位址。

otMessage 資訊

struct otMessageInfo otMessageInfo

這個結構代表本機和對等 IPv6 通訊端位址。

otNetifAddress

struct otNetifAddress otNetifAddress

這個結構代表一個 IPv6 網路介面的單點位址。

otNetifMulticastAddress

struct otNetifMulticastAddress otNetifMulticastAddress

這個結構代表一個 IPv6 網路介面的多點傳送位址。

OtSockAddr

struct otSockAddr otSockAddr

這個結構代表一個 IPv6 插槽位址。

變數

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otIp6InterfaceIdentifier OT_TOOL_PACKED_END

函式

otIp6AddUnicastAddress

otError otIp6AddUnicastAddress(
  otInstance *aInstance,
  const otNetifAddress *aAddress
)

將網路介面位址新增至 Thread 介面。

傳入的執行個體 aAddress 已由 Thread 介面複製。Thread 介面僅支援固定新增的外部 IP 位址。詳情請參閱 OPENINVITER_CONFIG_IP6_MAX_EXT_UCAST_ADDRS。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aAddress
「網路介面」位址的地址。
傳回值
OT_ERROR_NONE
已成功新增 (或更新) 網路介面位址。
OT_ERROR_INVALID_ARGS
aAddress 指定的 IP 位址是內部位址。
OT_ERROR_NO_BUFS
網路介面已經儲存外部允許的位址數量上限。

otIp6AddUnsecurePort

otError otIp6AddUnsecurePort(
  otInstance *aInstance,
  uint16_t aPort
)

此函式會將通訊埠新增至允許的未加密通訊埠清單。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aPort
通訊埠值。
傳回值
OT_ERROR_NONE
已成功將通訊埠新增至允許的不安全通訊埠清單。
OT_ERROR_INVALID_ARGS
通訊埠無效 (值 0 僅供內部使用)。
OT_ERROR_NO_BUFS
不安全的通訊埠清單已滿。

otIp6AddressFromString

otError otIp6AddressFromString(
  const char *aString,
  otIp6Address *aAddress
)

此函式會將使用者可理解的 IPv6 位址字串轉換成二進位表示法。

詳細資料
參數
[in] aString
指向 NULL 結尾字串的指標。
[out] aAddress
IPv6 位址的指標。
傳回值
OT_ERROR_NONE
成功剖析字串。
OT_ERROR_INVALID_ARGS
無法剖析字串。

otIp6AddressToString

void otIp6AddressToString(
  const otIp6Address *aAddress,
  char *aBuffer,
  uint16_t aSize
)

此函式會將指定的 IPv6 位址轉換為使用者可理解的字串。

IPv6 地址字符串格式化為 16 個十六值,以 &&39;:&#39 分隔; (即「%x:%x:%x:...:%x」)。

如果產生的字串不適合在 aBuffer 字元內 (包含於 aSize 字元),系統會截斷這些字串,但輸出的字串一律會是空值。

詳細資料
參數
[in] aAddress
IPv6 位址指向的位置 (不得為 NULL)。
[out] aBuffer
用於輸出字串的字元陣列的指標 (不得為 NULL)。
[in] aSize
aBuffer 的大小 (以位元組為單位)。建議使用 OT_IP6_ADDRESS_STRING_SIZE

otIp6ArePrefixesEqual

bool otIp6ArePrefixesEqual(
  const otIp6Prefix *aFirst,
  const otIp6Prefix *aSecond
)

測試兩個 IPv6 前置字串是否相同。

詳細資料
參數
[in] aFirst
指向第一個要比較的 IPv6 前置字串。
[in] aSecond
指向第二個 IPv6 前置字串的指標。
傳回值
TRUE
這兩個 IPv6 前置字串相同。
FALSE
這兩個 IPv6 前置字元並不相同。

otIp6GetMulticastAddress

const otNetifMulticastAddress * otIp6GetMulticastAddresses(
  otInstance *aInstance
)

取得已訂閱 Thread 介面的 IPv6 多播位址清單。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
傳回
指向第一個網路介面多播地址的指標。

otIp6GetUnicastAddress

const otNetifAddress * otIp6GetUnicastAddresses(
  otInstance *aInstance
)

取得指派給 Thread 介面的 IPv6 位址清單。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
傳回
指向第一個網路介面介面的指標。

otIp6GetUnsecurePort

const uint16_t * otIp6GetUnsecurePorts(
  otInstance *aInstance,
  uint8_t *aNumEntries
)

這個函式會傳回指向不安全的通訊埠清單。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[out] aNumEntries
清單中的項目數量。
傳回
指向不安全的通訊埠清單。

otIp6IsAddressEqual

bool otIp6IsAddressEqual(
  const otIp6Address *aFirst,
  const otIp6Address *aSecond
)

測試兩個 IPv6 位址是否相同。

詳細資料
參數
[in] aFirst
指向第一個第一個 IPv6 位址的指標。
[in] aSecond
指向第二個 IPv6 位址的指標。
傳回值
TRUE
這兩個 IPv6 位址相同。
FALSE
這兩個 IPv6 位址並不相同。

otIp6IsAddress 未指定

bool otIp6IsAddressUnspecified(
  const otIp6Address *aAddress
)

這個函式會指出特定 IPv6 位址是否為未指定位址。

詳細資料
參數
[in] aAddress
IPv6 位址的指標。
傳回值
TRUE
如果 IPv6 位址為未指定位址,
FALSE
如果 IPv6 位址不是「未指定的地址」,

otIp6IsEnabled

bool otIp6IsEnabled(
  otInstance *aInstance
)

這個函式會指出 IPv6 介面是否已開啟。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
傳回值
TRUE
IPv6 介面已啟用。
FALSE
IPv6 介面已停用。

otIp6IsMulticastPromiscuousEnabled

bool otIp6IsMulticastPromiscuousEnabled(
  otInstance *aInstance
)

檢查 Thread 介面上是否已啟用多點混音模式。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
另請參閱:
otIp6SetMulticastPromiscuousEnabled

otIp6IsReceiveFilterEnabled

bool otIp6IsReceiveFilterEnabled(
  otInstance *aInstance
)

這個函式指出當透過 otIp6SetReceiveCallback() 指定的回呼來傳送 IPv6 資料元時,系統會篩選掉 Thread 控制流量以及 Thread 控制流量。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
傳回
如果篩選到的執行緒控制流量為 TRUE,則傳回 TRUE,否則為 FALSE。
另請參閱:
otIp6SetReceiveCallback
otIp6SetReceiveFilterEnabled

otIp6IsSlaacEnabled

bool otIp6IsSlaacEnabled(
  otInstance *aInstance
)

這個函式會指出 SLAAC 模組是否已啟用。

這項功能需要啟用「建構時間」功能 OPENTHREAD_CONFIG_IP6_SLAAC_ENABLE

詳細資料
傳回值
TRUE
SLAAC 模組已啟用。
FALSE
SLAAC 模組已停用。

otIp6NewMessage

otMessage * otIp6NewMessage(
  otInstance *aInstance,
  const otMessageSettings *aSettings
)

分配新的訊息緩衝區,用於傳送 IPv6 訊息。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aSettings
指向訊息設定的指標,或設為 NULL 以調整預設設定。
傳回
如果沒有可用的訊息緩衝區或參數無效,則指向訊息緩衝區的指標。
另請參閱:
otMessageFree

otIp6NewMessageFromBuffer

otMessage * otIp6NewMessageFromBuffer(
  otInstance *aInstance,
  const uint8_t *aData,
  uint16_t aDataLength,
  const otMessageSettings *aSettings
)

分配新的消息緩衝器,請為 IPv6 數據圖設置 IPv6 數據圖,用於發送 IPv6 消息。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aData
IPv6 資料元緩衝區的指標。
[in] aDataLength
aData 指向的 IPv6 資料元緩衝區大小。
[in] aSettings
指向訊息設定的指標,或設為 NULL 以調整預設設定。
傳回
指向訊息的指標 (如果 IPv6 標頭格式錯誤或訊息緩衝區不足),則指向指標。
另請參閱:
otMessageFree

otIp6PrefixMatch

uint8_t otIp6PrefixMatch(
  const otIp6Address *aFirst,
  const otIp6Address *aSecond
)

這個函式會傳回兩個 IPv6 位址的前置字串比對長度 (位元)。

詳細資料
參數
[in] aFirst
指向第一個 IPv6 位址的指標。
[in] aSecond
指向第二個 IPv6 位址的指標。
傳回
前置字串比對長度 (以位元為單位)。

otIp6PrefixToString

void otIp6PrefixToString(
  const otIp6Prefix *aPrefix,
  char *aBuffer,
  uint16_t aSize
)

此函式會將指定的 IPv6 前置字串轉換為使用者可理解的字串。

IPv6 位址字串的格式為「&xt;%x:%x:%x:...[::]/plen"」。

如果產生的字串不適合在 aBuffer 字元內 (包含於 aSize 字元),系統會截斷這些字串,但輸出的字串一律會是空值。

詳細資料
參數
[in] aPrefix
IPv6 前置字串的指向點 (不得為 NULL)。
[out] aBuffer
用於輸出字串的字元陣列的指標 (不得為 NULL)。
[in] aSize
aBuffer 的大小 (以位元組為單位)。建議使用 OT_IP6_PREFIX_STRING_SIZE

otIp6ProtoToString

const char * otIp6ProtoToString(
  uint8_t aIpProto
)

此函式會將指定的 IP 通訊協定編號轉換為使用者可理解的字串。

詳細資料
參數
[in] aIpProto
IP 通訊協定編號 (OT_IP6_PROTO_* 列舉)。
傳回
代表 aIpProto 的字串。

otIp6RegisterMulticastListeners

otError otIp6RegisterMulticastListeners(
  otInstance *aInstance,
  const otIp6Address *aAddresses,
  uint8_t aAddressNum,
  const uint32_t *aTimeout,
  otIp6RegisterMulticastListenersCallback aCallback,
  void *aContext
)

這個函式會將多點監聽器註冊到主要中樞路由器。

注意:必須同時啟用 OPENTHREAD_CONFIG_TMF_PROXY_MLR_ENABLEOPENTHREAD_CONFIG_COMMISSIONER_ENABLE 才可使用)

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aAddresses
要註冊的多播位址陣列。
[in] aAddressNum
註冊的多播位址數量 (如果 aAddresses 為 NULL,則為 0)。
[in] aTimeout
要包含在 MLR.req 中的逾時值 (以秒為單位)。逾時值為 0 會移除對應的多點監聽器。如果是 NULL,根據預設,MLR.req 不會有逾時 Tlv。
[in] aCallback
回呼函式的指標。
[in] aContext
指向使用者的情境。
傳回值
OT_ERROR_NONE
已成功傳送 MLR.req。如果這個方法傳回 OT_ERROR_NONE,就會呼叫 aCallback
OT_ERROR_BUSY
先前的註冊作業是否持續進行。
OT_ERROR_INVALID_ARGS
一或多個引數無效。
OT_ERROR_INVALID_STATE
如果裝置未處於傳送 MLR.req 狀態的有效狀態 (例如:尚未啟動調度員,找不到主要骨幹路由器)。
OT_ERROR_NO_BUFS
如果沒有足夠的訊息緩衝區,
另請參閱:
otIp6RegisterMulticastListenersCallback

otIp6RemoveAllUnsecurePort

void otIp6RemoveAllUnsecurePorts(
  otInstance *aInstance
)

這個函式會將所有通訊埠從允許的不安全通訊埠清單中移除。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。

otIp6RemoveUnicastAddress

otError otIp6RemoveUnicastAddress(
  otInstance *aInstance,
  const otIp6Address *aAddress
)

從 Thread 介面中移除網路介面位址。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aAddress
指向 IP 位址的指標。
傳回值
OT_ERROR_NONE
已成功移除網路介面位址。
OT_ERROR_INVALID_ARGS
aAddress 指定的 IP 位址是內部位址。
OT_ERROR_NOT_FOUND
找不到 aAddress 指定的 IP 位址。

otIp6RemoveUnsecurePort

otError otIp6RemoveUnsecurePort(
  otInstance *aInstance,
  uint16_t aPort
)

這個函式會從允許的不安全通訊埠清單中移除通訊埠。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aPort
通訊埠值。
傳回值
OT_ERROR_NONE
已成功從允許的不安全通訊埠清單中移除通訊埠。
OT_ERROR_INVALID_ARGS
通訊埠無效 (值 0 僅供內部使用)。
OT_ERROR_NOT_FOUND
在不安全的通訊埠清單中找不到該通訊埠。

otIp6 選取來源位址

otError otIp6SelectSourceAddress(
  otInstance *aInstance,
  otMessageInfo *aMessageInfo
)

這個函式會執行 OpenThread 來源位址選項。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in,out] aMessageInfo
訊息資訊的指標。
傳回值
OT_ERROR_NONE
找到來源地址,並填入 aMessageInfo 的 mSockAddr。
OT_ERROR_NOT_FOUND
找不到來源地址,aMessageInfo 仍維持不變。

otIp6 傳送

otError otIp6Send(
  otInstance *aInstance,
  otMessage *aMessage
)

這個函式會透過 Thread 介面傳送 IPv6 資料圖表。

來電者將撥打 aMessage 的擁有權。處理完成後 (包括傳回 OT_ERROR_NONE 以外的值),OpenThread 將免費提供 aMessage

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aMessage
指向 IPv6 資料圖表的郵件緩衝區。
傳回值
OT_ERROR_NONE
已成功處理這封郵件。
OT_ERROR_DROP
郵件經過妥善處理,但因封包處理規則而未完整處理。
OT_ERROR_NO_BUFS
處理資料圖表時,無法分配必要的訊息緩衝區。
OT_ERROR_NO_ROUTE
沒有代管路徑。
OT_ERROR_INVALID_SOURCE_ADDRESS
來源位址無效,例如 Anycast 地址或多播地址。
OT_ERROR_PARSE
處理郵件時,標頭格式錯誤。

otIp6SetAddressCallback

void otIp6SetAddressCallback(
  otInstance *aInstance,
  otIp6AddressCallback aCallback,
  void *aCallbackContext
)

這個函式會登錄回呼,通知內部 IPv6 位址變更。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aCallback
指向內部 IPv6 位址時呼叫的函式指標。NULL 以停用回呼。
[in] aCallbackContext
應用程式專屬背景資訊。

otIp6SetEnabled

otError otIp6SetEnabled(
  otInstance *aInstance,
  bool aEnabled
)

這項功能會開啟/關閉 IPv6 介面。

呼叫此函式即可啟用/停用 IPv6 通訊。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aEnabled
TRUE 代表啟用 IPv6,否則為 FALSE。
傳回值
OT_ERROR_NONE
已成功將 IPv6 介面設為向上/向下。
OT_ERROR_INVALID_STATE
由於裝置在原始連結模式下運作,因此無法使用 IPv6 介面 (僅適用於已啟用 OPENTHREAD_CONFIG_LINK_RAW_ENABLE 功能的情況)。

otIp6SetMeshLocalIid

otError otIp6SetMeshLocalIid(
  otInstance *aInstance,
  const otIp6InterfaceIdentifier *aIid
)

這個函式會設定網格本機 IID (供測試用途)。

只有在 OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE 啟用時才能使用。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aIid
要設定的網狀本機 IID 指標。
傳回值
OT_ERROR_NONE
已成功設定網格本機 IID。
OT_ERROR_INVALID_STATE
已啟用 Thread 通訊協定。

otIp6SetMulticastPromiscuousEnabled

void otIp6SetMulticastPromiscuousEnabled(
  otInstance *aInstance,
  bool aEnabled
)

在 Thread 介面上啟用多點混亂模式。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aEnabled
計算 TRUE 時可啟用 true
另請參閱:
otIp6IsMulticastPromiscuousEnabled

otIp6SetReceiveCallback

void otIp6SetReceiveCallback(
  otInstance *aInstance,
  otIp6ReceiveCallback aCallback,
  void *aCallbackContext
)

此函式會註冊回呼來提供收到的 IPv6 資料元。

根據預設,這個回呼不會傳送 Thread 控制流量。變更 otIp6SetReceiveFilterEnabled() 可變更執行緒控制流量篩選器設定。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aCallback
收到 IPv6 資料圖表時呼叫的函式,或有 NULL 可停用回呼。
[in] aCallbackContext
應用程式專屬背景資訊。
另請參閱:
otIp6IsReceiveFilterEnabled
otIp6SetReceiveFilterEnabled

otIp6SetReceiveFilterEnabled

void otIp6SetReceiveFilterEnabled(
  otInstance *aInstance,
  bool aEnabled
)

這個函式會設定在透過 otIp6SetReceiveCallback() 所指定的回呼來傳送 IPv6 資料圖表時,是否排除 Thread 控制流量。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aEnabled
如果篩選到的執行緒控制流量為 TRUE,則傳回 TRUE,否則為 FALSE。
另請參閱:
otIp6SetReceiveCallback
otIsReceiveIp6FilterEnabled

otIp6SetSlaacEnabled

void otIp6SetSlaacEnabled(
  otInstance *aInstance,
  bool aEnabled
)

這項功能會啟用/停用 SLAAC 模組。

這項功能需要啟用「建構時間」功能 OPENTHREAD_CONFIG_IP6_SLAAC_ENABLE

SLAAC 模組啟用之後,系統會將 SLAAC 位址 (根據「網路資料」中的網狀前置字串) 新增至介面。SLAAC 模組停用時,系統會移除先前新增的 SLAAC 位址。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aEnabled
要啟用的值為 TRUE,停用為 FALSE。

otIp6SetSlaacPrefixFilter

void otIp6SetSlaacPrefixFilter(
  otInstance *aInstance,
  otIp6SlaacPrefixFilter aFilter
)

這個函式會設定 SLAAC 模組篩選器處理常式。

這項功能需要啟用「建構時間」功能 OPENTHREAD_CONFIG_IP6_SLAAC_ENABLE

當 SLAAC 模組根據前置字串新增 SLAAC 地址時,會呼叫篩選器處理常式,以決定是否應新增地址。

NULL 篩選器處理常式會停用篩選功能,並允許新增所有 SLAAC 位址。

如未呼叫此函式,SLAAC 模組使用的預設篩選條件將為 NULL (篩選功能已停用)。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aFilter
指向 SLAAC 前置字串篩選器處理常式的指標,或設為 NULL 即可停用篩選功能。

otIp6SockAddrToString

void otIp6SockAddrToString(
  const otSockAddr *aSockAddr,
  char *aBuffer,
  uint16_t aSize
)

此函式會將指定的 IPv6 通訊端位址轉換為使用者可理解的字串。

IPv6 通訊端位址字串的格式是「&」

]:" 其中 `
顯示為 16 個十六進位值,並以 & 分隔 &33;:' 則是十進位數字 (例如[「%x:%x:...:%x]:%u」」

如果產生的字串不適合在 aBuffer 字元內 (包含於 aSize 字元),系統會截斷這些字串,但輸出的字串一律會是空值。

詳細資料
參數
[in] aSockAddr
IPv6 通訊端位址的指標 (不得為 NULL)。
[out] aBuffer
用於輸出字串的字元陣列的指標 (不得為 NULL)。
[in] aSize
aBuffer 的大小 (以位元組為單位)。建議使用 OT_IP6_SOCK_ADDR_STRING_SIZE

otIp6 訂閱多播地址

otError otIp6SubscribeMulticastAddress(
  otInstance *aInstance,
  const otIp6Address *aAddress
)

訂閱 Thread 介面到網路介面多播位址。

執行個體 (aAddress) 中傳遞的執行緒將由 Thread 介面複製。Thread 介面僅支援固定的外部多播地址。詳情請參閱 OPENINVITER_CONFIG_IP6_MAX_EXT_MCAST_ADDRS。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aAddress
指向 IP 位址的指標。
傳回值
OT_ERROR_NONE
已成功訂閱網路介面多播地址。
OT_ERROR_ALREADY
已經訂閱這個多點傳送地址。
OT_ERROR_INVALID_ARGS
aAddress 指定的 IP 位址是無效的多播位址。
OT_ERROR_REJECTED
aAddress 指定的 IP 位址是內部的多點傳送位址。
OT_ERROR_NO_BUFS
網路介面已儲存外部多播位址數量上限。

otIp6 取消訂閱多播地址

otError otIp6UnsubscribeMulticastAddress(
  otInstance *aInstance,
  const otIp6Address *aAddress
)

將 Thread 介面取消訂閱網路介面介面多點傳送。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aAddress
指向 IP 位址的指標。
傳回值
OT_ERROR_NONE
已成功取消訂閱網路介面多點傳送地址。
OT_ERROR_REJECTED
aAddress 指定的 IP 位址是內部位址。
OT_ERROR_NOT_FOUND
找不到 aAddress 指定的 IP 位址。

巨集

OT_IP6_ADDRESS_SIZE

 OT_IP6_ADDRESS_SIZE 16

IPv6 位址的大小 (位元組)

OT_IP6_ADDRESS_STRING_SIZE

 OT_IP6_ADDRESS_STRING_SIZE 40

IPv6 位址的字串表示建議大小。

OT_IP6_IID_SIZE

 OT_IP6_IID_SIZE 8

IPv6 介面 ID (位元組)

OT_IP6_MAX_MLR_ADDRESSES

 OT_IP6_MAX_MLR_ADDRESSES 15

多播接聽器註冊支援所支援的 IPv6 位址數量上限。

OT_IP6_PREFIX_BITSIZE

 OT_IP6_PREFIX_BITSIZE (OT_IP6_PREFIX_SIZE * 8)

IPv6 前置字元的大小 (位元)

OT_IP6_PREFIX_SIZE

 OT_IP6_PREFIX_SIZE 8

IPv6 前置字串的大小 (位元組)

OT_IP6_PREFIX_STRING_SIZE

 OT_IP6_PREFIX_STRING_SIZE 45

IPv6 前置字串的字串表示建議大小。

OT_IP6_SOCK_ADDR_STRING_SIZE

 OT_IP6_SOCK_ADDR_STRING_SIZE 48

IPv6 通訊端位址的字串表示建議大小。

資源

OpenThread API 參考主題源自原始碼,可從 GitHub 取得。如要瞭解詳情或參閱說明文件,請參閱資源