IPv6

這個模組含有控管 IPv6 通訊的函式。

摘要

列舉

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
}
列舉
網際網路通訊協定號碼。
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 標頭中所示。

Typedefs

otBorderRoutingCounters typedef
代表透過邊界轉送轉送的封包計數器。
otIp6Address typedef
struct otIp6Address
代表 IPv6 位址。
otIp6AddressCallback)(const otIp6AddressInfo *aAddressInfo, bool aIsAdded, void *aContext) typedef
void(*
新增或移除內部 IPv6 位址時,系統會呼叫指標。
otIp6AddressComponents typedef
代表 IPv6 位址的元件。
otIp6AddressInfo typedef
代表 IPv6 位址資訊。
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 網路介面多點傳播位址。
otPacketsAndBytes typedef
代表封包和位元組的計數器。
otSockAddr typedef
struct otSockAddr
代表 IPv6 通訊端位址。

Variables

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 前置字串是否相同。
otIp6GetBorderRoutingCounters(otInstance *aInstance)
取得邊界轉送計數器。
otIp6GetMulticastAddresses(otInstance *aInstance)
取得訂閱 Thread 介面的 IPv6 多點傳送位址清單。
otIp6GetPrefix(const otIp6Address *aAddress, uint8_t aLength, otIp6Prefix *aPrefix)
void
aAddress 取得包含 aLength 的前置字串。
otIp6GetUnicastAddresses(otInstance *aInstance)
const otNetifAddress *
取得指派給 Thread 介面的 IPv6 位址清單。
otIp6GetUnsecurePorts(otInstance *aInstance, uint8_t *aNumEntries)
const uint16_t *
傳回不安全通訊埠清單的指標。
otIp6HasUnicastAddress(otInstance *aInstance, const otIp6Address *aAddress)
bool
表示是否已將單點傳播 IPv6 位址指派給 Thread 介面。
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 資料元時,是否會導致執行緒控制流量遭到篩除。
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 訊息。
otIp6PrefixFromString(const char *aString, otIp6Prefix *aPrefix)
將使用者可理解的 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)
從允許的不安全通訊埠清單中移除通訊埠。
otIp6ResetBorderRoutingCounters(otInstance *aInstance)
void
重設「邊界轉送」計數器。
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 介面。

結構

otBorderRoutingCounters

代表透過邊界轉送轉送的封包計數器。

otIp6Address

代表 IPv6 位址。

otIp6AddressComponents

代表 IPv6 位址的元件。

otIp6AddressInfo

代表 IPv6 位址資訊。

otIp6InterfaceIdentifier

代表 IPv6 位址的介面 ID。

otIp6NetworkPrefix

代表 IPv6 位址的網路前置字元 (最顯著的 64 位元位址)。

otIp6Prefix

代表 IPv6 前置字串。

otMessageInfo

代表本機和對等互連 IPv6 通訊端位址。

otNetifAddress

代表 IPv6 網路介面單點傳播位址。

otNetifMulticastAddress

代表 IPv6 網路介面多點傳播位址。

otPacketsAndBytes

代表封包和位元組的計數器。

otSockAddr

代表 IPv6 通訊端位址。

工會

otIp6InterfaceIdentifier::OT_TOOL_PACKED_FIELD

列舉

匿名列舉

 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

使用者資料圖表。

匿名列舉

 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:

Typedefs

otBorderRoutingCounters

struct otBorderRoutingCounters otBorderRoutingCounters

代表透過邊界轉送轉送的封包計數器。

otIp6Address

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 位址的元件。

otIp6AddressInfo

struct otIp6AddressInfo otIp6AddressInfo

代表 IPv6 位址資訊。

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
成功傳送 MLR.req 且收到 MLR.rsp 時,則為 OT_ERROR_回覆_TIMEOUT;無法剖析 MLR.rsp 時則為 OT_ERROR_PARSE。
[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 位址。

otMessageInfo

struct otMessageInfo otMessageInfo

代表本機和對等互連 IPv6 通訊端位址。

otNetifAddress

struct otNetifAddress otNetifAddress

代表 IPv6 網路介面單點傳播位址。

otNetifMulticastAddress

struct otNetifMulticastAddress otNetifMulticastAddress

代表 IPv6 網路介面多點傳播位址。

otPacketsAndBytes

struct otPacketsAndBytes otPacketsAndBytes

代表封包和位元組的計數器。

otSockAddr

struct otSockAddr otSockAddr

代表 IPv6 通訊端位址。

Variables

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 介面僅支援數量固定的外部單點傳播位址。查看《OPENTHREAD_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
已成功剖析 aString 並更新 aAddress
OT_ERROR_PARSE
無法將 aString 剖析為 IPv6 位址。

otIp6AddressToString

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

將指定 IPv6 位址轉換成使用者可理解的字串。

IPv6 位址字串採用 16 個十六進位值格式,並以「:」分隔 (即"%x:%x:%x:...:%x").

如果產生的字串不符合 aBuffer (在其 aSize 字元之內) 的大小,系統將截斷字串,但輸出的字串一律會是空值。

詳細說明
參數
[in] aAddress
指向 IPv6 位址的指標 (不得為空值)。
[out] aBuffer
用來輸出字串的字元陣列指標 (不得為空值)。
[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 前置字串不同。

otIp6GetBorderRoutingCounters

const otBorderRoutingCounters * otIp6GetBorderRoutingCounters(
  otInstance *aInstance
)

取得邊界轉送計數器。

必須啟用 OPENTHREAD_CONFIG_IP6_BR_COUNTERS_ENABLE 建構時間功能。

詳細說明
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
傳回
指向「邊界轉送」計數器的指標。

otIp6GetMulticastAddresses

const otNetifMulticastAddress * otIp6GetMulticastAddresses(
  otInstance *aInstance
)

取得訂閱 Thread 介面的 IPv6 多點傳送位址清單。

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

otIp6GetPrefix

void otIp6GetPrefix(
  const otIp6Address *aAddress,
  uint8_t aLength,
  otIp6Prefix *aPrefix
)

aAddress 取得包含 aLength 的前置字串。

詳細說明
參數
[in] aAddress
指向 IPv6 位址的指標。
[in] aLength
前置字串的長度 (以位元為單位)。
[out] aPrefix
輸出 IPv6 前置字串的指標。

otIp6GetUnicastAddresses

const otNetifAddress * otIp6GetUnicastAddresses(
  otInstance *aInstance
)

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

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

otIp6GetUnsecurePorts

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

傳回不安全通訊埠清單的指標。

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

otIp6HasUnicastAddress

bool otIp6HasUnicastAddress(
  otInstance *aInstance,
  const otIp6Address *aAddress
)

表示是否已將單點傳播 IPv6 位址指派給 Thread 介面。

詳細說明
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aAddress
指向單點傳播位址的指標。
傳回值
TRUE
如果將 aAddress 指派給 Thread 介面。
FALSE
如果 aAddress 並未指派給 Thread 介面。

otIp6IsAddressEqual

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

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

詳細說明
參數
[in] aFirst
指向要比較的第一個 IPv6 位址的指標。
[in] aSecond
指標,指向要比較的第二個 IPv6 位址。
傳回值
TRUE
這兩個 IPv6 位址相同。
FALSE
這兩個 IPv6 位址不同。

otIp6IsAddressUnspecified

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 資料元時,是否會導致執行緒控制流量遭到篩除。

詳細說明
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
傳回
如果執行緒控制流量遭到篩除,則為 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 用來設置預設設定的指標。
傳回
如果沒有可用訊息緩衝區或參數無效,這個指標指向訊息緩衝區或 NULL。
另請參閱:
otMessageFree

otIp6NewMessageFromBuffer

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

分配新的訊息緩衝區,並將 IPv6 資料元寫入訊息緩衝區,以傳送 IPv6 訊息。

詳細說明
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aData
指向 IPv6 資料元緩衝區的指標。
[in] aDataLength
aData 指向的 IPv6 資料元緩衝區大小。
[in] aSettings
指向訊息設定或 NULL 用來設置預設設定的指標。
傳回
如果 IPv6 標頭格式錯誤或可用訊息緩衝區不足,系統會指向訊息的指標或 NULL。
另請參閱:
otMessageFree

otIp6PrefixFromString

otError otIp6PrefixFromString(
  const char *aString,
  otIp6Prefix *aPrefix
)

將使用者可理解的 IPv6 前置字串字串轉換為二進位表示法。

aString 參數應為以下格式的字串:

/」,其中
是 IPv6 位址, 則是前置字串長度。

詳細說明
參數
[in] aString
指向以 NULL 結尾字串的指標。
[out] aPrefix
指向 IPv6 前置字串的指標。
傳回值
OT_ERROR_NONE
已成功將字串剖析為 IPv6 前置字串,並更新 aPrefix
OT_ERROR_PARSE
無法將「aString」剖析為 IPv6 前置字串。

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 位址字串的格式為「%x:%x:%x:...[::]/plen」。

如果產生的字串不符合 aBuffer (在其 aSize 字元之內) 的大小,系統將截斷字串,但輸出的字串一律會是空值。

詳細說明
參數
[in] aPrefix
指向 IPv6 前置字串的指標 (不得為空值)。
[out] aBuffer
用來輸出字串的字元陣列指標 (不得為空值)。
[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 為空值,則為 0)。
[in] aTimeout
指向 MLR.req 中要包含的逾時值 (以秒為單位)。逾時值 0 會移除對應的 Multicast 事件監聽器。如果為 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 (例如:Commissioner 未啟動,找不到主要骨幹路由器)。
OT_ERROR_NO_BUFS
如果訊息緩衝區不足。
另請參閱:
otIp6RegisterMulticastListenersCallback

otIp6RemoveAllUnsecurePorts

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
在不安全的通訊埠清單中找不到通訊埠。

otIp6ResetBorderRoutingCounters

void otIp6ResetBorderRoutingCounters(
  otInstance *aInstance
)

重設「邊界轉送」計數器。

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

otIp6SelectSourceAddress

otError otIp6SelectSourceAddress(
  otInstance *aInstance,
  otMessageInfo *aMessageInfo
)

執行 OpenThread 來源位址。

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

otIp6Send

otError otIp6Send(
  otInstance *aInstance,
  otMessage *aMessage
)

透過 Thread 介面傳送 IPv6 資料元。

來電者會在撥打這通電話時轉移「aMessage」的擁有權。處理完成時,OpenThread 會釋放 aMessage,包括傳回 OT_ERROR_NONE 以外的值時。

詳細說明
參數
[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
來源位址無效,例如任意傳播位址或多點傳播位址。
OT_ERROR_PARSE
處理訊息時,標頭格式有誤。
OT_ERROR_INVALID_ARGS
訊息的中繼資料無效,例如訊息使用 OT_MESSAGE_ORIGIN_THREAD_NETIF 做為來源。

otIp6SetAddressCallback

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

註冊回呼以通知內部 IPv6 位址的變更。

詳細說明
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aCallback
指向新增或移除內部 IPv6 位址時呼叫的函式指標。空值以停用回呼。
[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
已啟用執行緒通訊協定。

otIp6SetMulticastPromiscuousEnabled

void otIp6SetMulticastPromiscuousEnabled(
  otInstance *aInstance,
  bool aEnabled
)

啟用或停用 Thread 介面中的多點傳播相似模式。

詳細說明
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aEnabled
設為 TRUE 即可啟用多點傳播相似模式,否則設為 FALSE。
另請參閱:
otIp6IsMulticastPromiscuousEnabled

otIp6SetReceiveCallback

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

註冊回呼以提供接收的 IPv6 資料元。

根據預設,這個回呼不會傳遞執行緒控制流量。如要變更執行緒控制流量篩選器設定,請參閱 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,否則傳回 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 通訊端位址字串的格式為 [address]:port,其中 address 會顯示為 16 個十六進位值,並以 : 分隔,port 則是十進位格式的通訊埠編號,例如「[%x:%x:...:%x]:%u」。

如果產生的字串不符合 aBuffer (在其 aSize 字元之內) 的大小,系統將截斷字串,但輸出的字串一律會是空值。

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

otIp6SubscribeMulticastAddress

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

訂閱 Thread 介面至網路介面多點傳播位址。

執行緒介面會複製傳入的執行個體 aAddress。Thread 介面僅支援固定數量的外部新增多點傳送位址。查看《OPENTHREAD_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
網路介面儲存了允許的外部多點傳送位址數量上限。

otIp6UnsubscribeMulticastAddress

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_HEADER_PROTO_OFFSET

 OT_IP6_HEADER_PROTO_OFFSET 6

IPv6 標頭中 proto 欄位的偏移值 (位元組)

OT_IP6_HEADER_SIZE

 OT_IP6_HEADER_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 取得。如要瞭解詳情或對說明文件做出貢獻,請參閱資源