透過集合功能整理內容 你可以依據偏好儲存及分類內容。

網路位址轉譯 (NAT64)

這個模組包含邊框路由器中 NAT64 函式的函式和結構。

摘要

您必須啟用 OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE,才能使用這些函式。

列舉

otNat64DropReason{
  OT_NAT64_DROP_REASON_UNKNOWN = 0,
  OT_NAT64_DROP_REASON_ILLEGAL_PACKET,
  OT_NAT64_DROP_REASON_UNSUPPORTED_PROTO,
  OT_NAT64_DROP_REASON_NO_MAPPING
}
列舉
封包捨棄原因。

Typedefs

otIp4Address typedef
struct otIp4Address
這個結構代表 IPv4 位址。
otIp4Cidr typedef
struct otIp4Cidr
otNat64AddressMapping typedef
代表 NAT64 的地址對應記錄。
otNat64AddressMappingIterator typedef
用於透過 NAT64 位址對應進行疊代。
otNat64Counters typedef
代表 NAT64 計數器。
otNat64DropReason typedef
封包捨棄原因。
otNat64ErrorCounters typedef
代表在處理 NAT64 封包時,因錯誤而遭捨棄的封包。
otNat64ProtocolCounters typedef
代表 NAT64 支援的通訊協定計數器。
otNat64ReceiveIp4Callback)(otMessage *aMessage, void *aContext) typedef
void(*
收到 IPv4 資料圖表 (由 NAT64 翻譯工具翻譯) 時,系統會呼叫這個函式指標。

變數

OT_TOOL_PACKED_END

Functions

otIp4AddressFromString(const char *aString, otIp4Address *aAddress)
將使用者可理解的 IPv4 位址字串轉換為二進位表示法。
otIp4AddressToString(const otIp4Address *aAddress, char *aBuffer, uint16_t aSize)
void
將地址轉換為字串。
otIp4CidrToString(const otIp4Cidr *aCidr, char *aBuffer, uint16_t aSize)
void
將 IPv4 CIDR 轉換為字串。
otIp4ExtractFromIp6Address(uint8_t aPrefixLength, const otIp6Address *aIp6Address, otIp4Address *aIp4Address)
void
按照 RFC 6052 的規定,從 aIp6Address 執行 NAT64 位址翻譯,藉此設定 aIp4Address
otIp4IsAddressEqual(const otIp4Address *aFirst, const otIp4Address *aSecond)
bool
測試兩個 IPv4 位址是否相同。
otIp4NewMessage(otInstance *aInstance, const otMessageSettings *aSettings)
分配新的訊息緩衝區,以便將 IPv4 訊息傳送至 NAT64 翻譯工具。
otNat64GetCidr(otInstance *aInstance, otIp4Cidr *aCidr)
取得在 NAT64 翻譯器中設定的 IPv4 CIDR。
otNat64GetCounters(otInstance *aInstance, otNat64ProtocolCounters *aCounters)
void
取得 NAT64 譯者計數器。
otNat64GetErrorCounters(otInstance *aInstance, otNat64ErrorCounters *aCounters)
void
取得 NAT64 譯者錯誤計數器。
otNat64GetNextAddressMapping(otInstance *aInstance, otNat64AddressMappingIterator *aIterator, otNat64AddressMapping *aMapping)
取得下一個 AddressMapping 資訊 (使用 iterator)。
otNat64InitAddressMappingIterator(otInstance *aInstance, otNat64AddressMappingIterator *aIterator)
void
otNat64Send(otInstance *aInstance, otMessage *aMessage)
將 IPv4 資料圖表轉譯為 IPv6 資料圖表,然後透過 Thread 介面傳送。
otNat64SetIp4Cidr(otInstance *aInstance, const otIp4Cidr *aCidr)
設定輸出已翻譯的 IPv4 封包來源位址時使用的 CIDR。
otNat64SetReceiveIp4Callback(otInstance *aInstance, otNat64ReceiveIp4Callback aCallback, void *aContext)
void
註冊回呼以提供已接收的 IPv4 資料圖表。
otNat64SynthersizeIp6Address(otInstance *aInstance, const otIp4Address *aIp4Address, otIp6Address *aIp6Address)
從偏好的 NAT64 前置字串和按照 RFC 6052 中指定的指定 IPv4 位址執行 NAT64 位址轉譯作業,來設定 IPv6 位址。

結構

otIp4Address

這個結構代表 IPv4 位址。

otIp4Cidr

這個結構代表 IPv4 CIDR 區塊。

otNat64AddressMapping

代表 NAT64 的地址對應記錄。

otNat64AddressMappingIterator

用於透過 NAT64 位址對應進行疊代。

otNat64 計數器

代表 NAT64 計數器。

otNat64ErrorCounts

代表在處理 NAT64 封包時,因錯誤而遭捨棄的封包。

otNat64ProtocolCounts

代表 NAT64 支援的通訊協定計數器。

組合

otIp4Address:OT_TOOL_PACKED_FIELD

列舉

otNat64Drop 原因

 otNat64DropReason

封包捨棄原因。

屬性
OT_NAT64_DROP_REASON_ILLEGAL_PACKET

資料剖析失敗的封包遺失率。

OT_NAT64_DROP_REASON_NO_MAPPING

找不到任何對應項目或對應集區用盡,因此封包已捨棄。

OT_NAT64_DROP_REASON_UNKNOWN

封包遺失,原因不明。

OT_NAT64_DROP_REASON_UNSUPPORTED_PROTO

不支援的 IP 通訊協定導致封包遺失。

Typedefs

otIp4 位址

struct otIp4Address otIp4Address

這個結構代表 IPv4 位址。

otIp4Cidr

struct otIp4Cidr otIp4Cidr

otNat64AddressMapping

struct otNat64AddressMapping otNat64AddressMapping

代表 NAT64 的地址對應記錄。

otNat64AddressMappingIterator

struct otNat64AddressMappingIterator otNat64AddressMappingIterator

用於透過 NAT64 位址對應進行疊代。

這種類型的欄位不透明 (僅供 OpenThread 核心使用),因此不應由呼叫者存取或使用。

使用 iterator 前,「必須」使用 otNat64AddressMappingIteratorInit() 進行初始化。

otNat64 計數器

struct otNat64Counters otNat64Counters

代表 NAT64 計數器。

otNat64Drop 原因

enum otNat64DropReason otNat64DropReason

封包捨棄原因。

otNat64ErrorCounts

struct otNat64ErrorCounters otNat64ErrorCounters

代表在處理 NAT64 封包時,因錯誤而遭捨棄的封包。

otNat64 通訊協定計數器

struct otNat64ProtocolCounters otNat64ProtocolCounters

代表 NAT64 支援的通訊協定計數器。

otNat64ReceiveIp4 回呼

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

收到 IPv4 資料圖表 (由 NAT64 翻譯工具翻譯) 時,系統會呼叫這個函式指標。

詳細資料
參數
[in] aMessage
指向已接收 IPv6 資料圖的訊息緩衝區的指標。這個函式會將 aMessage 的擁有權轉移給回呼的接收端。訊息在處理後應由回呼的收件者釋出。
[in] aContext
指向應用程式特定背景資訊的指標。

變數

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otIp4Address OT_TOOL_PACKED_END

Functions

otIp4AddressFromString

otError otIp4AddressFromString(
  const char *aString,
  otIp4Address *aAddress
)

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

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

otIp4AddressToString

void otIp4AddressToString(
  const otIp4Address *aAddress,
  char *aBuffer,
  uint16_t aSize
)

將地址轉換為字串。

字串格式是在位址中使用 4 個位元組的四點標記法 (例如「127.0.0.1」)。

如果產生的字串不適合在 aBuffer 中 (在其 aSize 字元內),系統會截斷字串,但輸出的字串一定是空值。

詳細資料
參數
[in] aAddress
指向 IPv4 位址的指標 (「不得」為 NULL)。
[out] aBuffer
指向字串的字元陣列指標,「不得」為 nullptr
[in] aSize
aBuffer 的大小 (以位元組為單位)。

otIp4CidrToString

void otIp4CidrToString(
  const otIp4Cidr *aCidr,
  char *aBuffer,
  uint16_t aSize
)

將 IPv4 CIDR 轉換為字串。

字串格式為在地址長度以四碼為單位的四點制標記法 (例如「127.0.0.1/32」)。

如果產生的字串不適合在 aBuffer 中 (在其 aSize 字元內),系統會截斷字串,但輸出的字串一定是空值。

詳細資料
參數
[in] aCidr
指向 IPv4 CIDR 的指標 (「不得」為 NULL)。
[out] aBuffer
指向字串的字元陣列指標,「不得」為 nullptr
[in] aSize
aBuffer 的大小 (以位元組為單位)。

otIp4ExtractFromIp6 位址

void otIp4ExtractFromIp6Address(
  uint8_t aPrefixLength,
  const otIp6Address *aIp6Address,
  otIp4Address *aIp4Address
)

按照 RFC 6052 的規定,從 aIp6Address 執行 NAT64 位址翻譯,藉此設定 aIp4Address

NAT64 aPrefixLength 必須是下列其中一個值:32、40、48、56、64 或 96,否則此方法的行為未定義。

詳細資料
參數
[in] aPrefixLength
用於 IPv4/IPv6 翻譯的前置字串長度。
[in] aIp6Address
指向 IPv6 位址的指標。
[out] aIp4Address
輸出 IPv4 位址的指標。

otIp4IsAddressEqual

bool otIp4IsAddressEqual(
  const otIp4Address *aFirst,
  const otIp4Address *aSecond
)

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

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

OTIp4NewMessage

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

分配新的訊息緩衝區,以便將 IPv4 訊息傳送至 NAT64 翻譯工具。

這個函式分配的訊息緩衝區會保留 20 個位元組 (IPv6 標頭大小與 IPv4 標頭大小之間的差異)。

必須啟用 OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE 才能使用此功能。

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

otNat64GetCidr

otError otNat64GetCidr(
  otInstance *aInstance,
  otIp4Cidr *aCidr
)

取得在 NAT64 翻譯器中設定的 IPv4 CIDR。

必須啟用 OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE 才能使用此功能。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[out] aCidr
指向 otIp4Cidr 的指標。要填入 CIDR 的位置。

otNat64GetCounts

void otNat64GetCounters(
  otInstance *aInstance,
  otNat64ProtocolCounters *aCounters
)

取得 NAT64 譯者計數器。

計數器會在執行個體初始化後計算。

必須啟用 OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE 才能使用此功能。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[out] aCounters
指向 otNat64Counters66 網路位址轉譯器計數器的指標。

otNat64GetErrorCounters

void otNat64GetErrorCounters(
  otInstance *aInstance,
  otNat64ErrorCounters *aCounters
)

取得 NAT64 譯者錯誤計數器。

初始化 OpenThread 執行個體時,計數器會初始化為零。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[out] aCounters
指向 otNat64Counters66 網路位址轉譯器計數器的指標。

otNat64GetNextAddressMapping

otError otNat64GetNextAddressMapping(
  otInstance *aInstance,
  otNat64AddressMappingIterator *aIterator,
  otNat64AddressMapping *aMapping
)

取得下一個 AddressMapping 資訊 (使用 iterator)。

必須啟用 OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE 才能使用此功能。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in,out] aIterator
指向疊代器的指標。成功後,疊代器會更新為指向下一個 NAT64 位址對應記錄。如要取得第一個項目,應將疊代器設為 OT_NAT64_ADDRESS_MAPPING_ITERATOR_INIT。
[out] aMapping
這個 otNat64AddressMapping 指標指向下一個 NAT64 位址對應記錄的位置 (成功時)。
傳回值
OT_ERROR_NONE
已成功找到下一個 NAT64 位址對應資訊 (aMapping 已成功更新)。
OT_ERROR_NOT_FOUND
找不到後續的 NAT64 位址對應資訊。

otNat64InitAddressMappingIterator

void otNat64InitAddressMappingIterator(
  otInstance *aInstance,
  otNat64AddressMappingIterator *aIterator
)

初始化 otNat64AddressMappingIterator

「疊代」必須在使用前先初始化。

可重新初始化疊代器以從對應資訊資訊重新開始。

詳細資料
參數
[in] aInstance
OpenThread 執行個體。
[out] aIterator
指向疊代器的初始化指標。

otNat64 傳送

otError otNat64Send(
  otInstance *aInstance,
  otMessage *aMessage
)

將 IPv4 資料圖表轉譯為 IPv6 資料圖表,然後透過 Thread 介面傳送。

來電者在通話時轉移 aMessage 的擁有權。處理完成後,OpenThread 會釋出 aMessage,包括在傳回 OT_ERROR_NONE 以外的值時。

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

otNat64SetIp4Cidr

otError otNat64SetIp4Cidr(
  otInstance *aInstance,
  const otIp4Cidr *aCidr
)

設定輸出已翻譯的 IPv4 封包來源位址時使用的 CIDR。

您必須啟用 OPENNON_CONFIG_NAT64_TRANSLATOR_ENABLE,才能使用此功能。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aCidr
指向 NAT64 專用 IPv4 CIDR 區塊的 otIp4Cidr 指標。
傳回值
OT_ERROR_INVALID_ARGS
指定的 CIDR 並非為 NAT64 的有效 IPv4 CIDR。
OT_ERROR_NONE
已成功為 NAT64 設定 CIDR。
另請參閱:
otBorderRouterSend
otBorderRouterSetReceiveCallback

otNat64SetReceiveIp4 回呼

void otNat64SetReceiveIp4Callback(
  otInstance *aInstance,
  otNat64ReceiveIp4Callback aCallback,
  void *aContext
)

註冊回呼以提供已接收的 IPv4 資料圖表。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aCallback
指向 IPv4 資料圖時呼叫的函式指標,或 NULL 以停用回呼。
[in] aCallbackContext
指向應用程式特定背景資訊的指標。

otNat64SynthersizeIp6 位址

otError otNat64SynthersizeIp6Address(
  otInstance *aInstance,
  const otIp4Address *aIp4Address,
  otIp6Address *aIp6Address
)

從偏好的 NAT64 前置字串和按照 RFC 6052 中指定的指定 IPv4 位址執行 NAT64 位址轉譯作業,來設定 IPv6 位址。

詳細資料
參數
[in] aInstance
指向 OpenThread 執行個體的指標。
[in] aIp4Address
指向 IPv4 位址的指標,指向 IPv6。
[out] aIp6Address
指向合成 IPv6 位址的指標。
傳回
OT_ERROR_NONE 已成功合成網路位址轉譯 (NAT64) 前置字串和 IPv4 位址的 IPv6 位址。
傳回
OT_ERROR_INVALID_STATE 網路資料中缺少有效的 NAT64 前置字串。

巨集

OT_IP4_ADDRESS_SIZE

 OT_IP4_ADDRESS_SIZE 4

IPv4 位址大小 (位元組)

OT_IP4_ADDRESS_STRING_SIZE

 OT_IP4_ADDRESS_STRING_SIZE 17

長度為 000.000.000.000,加上後置字串 NUL。

OT_IP4_CIDR_STRING_SIZE

 OT_IP4_CIDR_STRING_SIZE 20

長度為 000.000.000.000/00,加上後置字串 NUL。

資源

OpenThread API 參考資料主題出自原始碼,可於 GitHub 取得。如需更多資訊,或想參閱我們的說明文件,請參閱資源