NAT64
這個模組包含邊界路由器上的 NAT64 函式函式和結構。
摘要
啟用 OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE
後才能使用這些函式。
Typedefs |
|
---|---|
otIp4Address
|
typedefstruct otIp4Address
代表 IPv4 位址。 |
otIp4Cidr
|
typedefstruct otIp4Cidr
|
otNat64AddressMapping
|
typedefstruct otNat64AddressMapping
代表 NAT64 的地址對應記錄。 |
otNat64AddressMappingIterator
|
typedef 用於疊代進行 NAT64 位址對應。 |
otNat64Counters
|
typedefstruct otNat64Counters
代表 NAT64 的計數器。 |
otNat64DropReason
|
typedefenum otNat64DropReason
封包遺失原因。 |
otNat64ErrorCounters
|
typedefstruct otNat64ErrorCounters
代表在處理 NAT64 封包時發生錯誤而遭捨棄封包的計數器。 |
otNat64ProtocolCounters
|
typedefstruct otNat64ProtocolCounters
代表 NAT64 支援的通訊協定計數器。 |
otNat64ReceiveIp4Callback)(otMessage *aMessage, void *aContext)
|
typedefvoid(*
接收到 IPv4 資料元 (由 NAT64 轉譯器翻譯) 時,就會呼叫指標。 |
Variables |
|
---|---|
OT_TOOL_PACKED_END
|
OT_TOOL_PACKED_BEGIN struct otIp4Address
|
函式 |
|
---|---|
otIp4AddressFromString(const char *aString, otIp4Address *aAddress)
|
將使用者可理解的 IPv4 位址字串轉換成二進位表示法。
|
otIp4AddressToString(const otIp4Address *aAddress, char *aBuffer, uint16_t aSize)
|
void
將地址轉換成字串。
|
otIp4CidrFromString(const char *aString, otIp4Cidr *aCidr)
|
將使用者可理解的 IPv4 CIDR 字串轉換為二進位表示法。
|
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 資訊 (使用疊代器)。
|
otNat64GetPrefixManagerState(otInstance *aInstance)
|
取得 NAT64 前置字串管理員的狀態。
|
otNat64GetTranslatorState(otInstance *aInstance)
|
取得 NAT64 翻譯工具的狀態。
|
otNat64InitAddressMappingIterator(otInstance *aInstance, otNat64AddressMappingIterator *aIterator)
|
void
|
otNat64Send(otInstance *aInstance, otMessage *aMessage)
|
將 IPv4 資料元轉譯為 IPv6 資料元,並透過 Thread 介面傳送。
|
otNat64SetEnabled(otInstance *aInstance, bool aEnabled)
|
void
啟用或停用 NAT64 函式。
|
otNat64SetIp4Cidr(otInstance *aInstance, const otIp4Cidr *aCidr)
|
設定傳出已翻譯 IPv4 封包的來源位址時,使用的 CIDR。
|
otNat64SetReceiveIp4Callback(otInstance *aInstance, otNat64ReceiveIp4Callback aCallback, void *aContext)
|
void
註冊回呼以提供接收的 IPv4 資料元。
|
otNat64SynthesizeIp6Address(otInstance *aInstance, const otIp4Address *aIp4Address, otIp6Address *aIp6Address)
|
設定 IPv6 位址,方法是根據偏好的 NAT64 前置字串和 RFC 6052 中指定的 IPv4 位址執行 NAT64 位址轉譯。
|
結構 |
|
---|---|
otIp4Address |
代表 IPv4 位址。 |
otIp4Cidr |
代表 IPv4 CIDR 區塊。 |
otNat64AddressMapping |
代表 NAT64 的地址對應記錄。 |
otNat64AddressMappingIterator |
用於疊代進行 NAT64 位址對應。 |
otNat64Counters |
代表 NAT64 的計數器。 |
otNat64ErrorCounters |
代表在處理 NAT64 封包時發生錯誤而遭捨棄封包的計數器。 |
otNat64ProtocolCounters |
代表 NAT64 支援的通訊協定計數器。 |
工會 |
|
---|---|
otIp4Address:: |
列舉
otNat64DropReason
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 通訊協定而遺失。 |
otNat64State
otNat64State
NAT64 的狀態。
屬性 | |
---|---|
OT_NAT64_STATE_ACTIVE
|
BR 正發布 NAT64 前置字串和/或翻譯封包。 |
OT_NAT64_STATE_DISABLED
|
NAT64 已停用。 |
OT_NAT64_STATE_IDLE
|
已啟用 NAT64,但這個 BR 並非有效的 NAT64 BR。 |
OT_NAT64_STATE_NOT_RUNNING
|
已啟用 NAT64,但一或多個 NAT64 依附元件並未執行。 |
Typedefs
otIp4Cidr
struct otIp4Cidr otIp4Cidr
otNat64AddressMappingIterator
struct otNat64AddressMappingIterator otNat64AddressMappingIterator
用於疊代進行 NAT64 位址對應。
這個類型的欄位不透明 (僅供 OpenThread 核心使用),因此呼叫端不應存取或使用。
使用疊代器之前,必須先使用 otNat64AddressMappingIteratorInit()
進行初始化。
otNat64ErrorCounters
struct otNat64ErrorCounters otNat64ErrorCounters
代表在處理 NAT64 封包時發生錯誤而遭捨棄封包的計數器。
otNat64ReceiveIp4Callback
void(* otNat64ReceiveIp4Callback)(otMessage *aMessage, void *aContext)
接收到 IPv4 資料元 (由 NAT64 轉譯器翻譯) 時,就會呼叫指標。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
Variables
OT_TOOL_PACKED_END
OT_TOOL_PACKED_BEGIN struct otIp4Address OT_TOOL_PACKED_END
函式
otIp4AddressFromString
otError otIp4AddressFromString( const char *aString, otIp4Address *aAddress )
將使用者可理解的 IPv4 位址字串轉換成二進位表示法。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
otIp4AddressToString
void otIp4AddressToString( const otIp4Address *aAddress, char *aBuffer, uint16_t aSize )
將地址轉換成字串。
字串格式使用地址中的四位元組 (4 個位元組) 標記法 (例如「127.0.0.1」)。
如果產生的字串不符合 aBuffer
(在其 aSize
字元之內) 的大小,系統將截斷字串,但輸出的字串一律會是空值。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
otIp4CidrFromString
otError otIp4CidrFromString( const char *aString, otIp4Cidr *aCidr )
將使用者可理解的 IPv4 CIDR 字串轉換為二進位表示法。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
otIp4CidrToString
void otIp4CidrToString( const otIp4Cidr *aCidr, char *aBuffer, uint16_t aSize )
將 IPv4 CIDR 轉換為字串。
字串格式使用地址中的四位元組標記法,再加上前置字元長度 (例如「127.0.0.1/32」)。
如果產生的字串不符合 aBuffer
(在其 aSize
字元之內) 的大小,系統將截斷字串,但輸出的字串一律會是空值。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
otIp4ExtractFromIp6Address
void otIp4ExtractFromIp6Address( uint8_t aPrefixLength, const otIp6Address *aIp6Address, otIp4Address *aIp4Address )
按照 RFC 6052 指定,從 aIp6Address
執行 NAT64 位址轉譯以設定 aIp4Address
。
NAT64 aPrefixLength
必須是下列其中一個值:32、40、48、56、64 或 96,否則這個方法的行為並未定義。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
otIp4IsAddressEqual
bool otIp4IsAddressEqual( const otIp4Address *aFirst, const otIp4Address *aSecond )
測試兩個 IPv4 位址是否相同。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
otIp4NewMessage
otMessage * otIp4NewMessage( otInstance *aInstance, const otMessageSettings *aSettings )
分配新的訊息緩衝區,以便傳送 IPv4 訊息給 NAT64 翻譯器。
這個函式配置的訊息緩衝區將保留 20 個位元組 (IPv6 標頭大小與 IPv4 標頭大小不同)。
啟用 OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE
後即可使用,
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回 |
如果沒有可用訊息緩衝區或參數無效,這個指標指向訊息緩衝區或 NULL。
|
otNat64Send
otNat64GetCidr
otError otNat64GetCidr( otInstance *aInstance, otIp4Cidr *aCidr )
取得在 NAT64 轉譯器中設定的 IPv4 CIDR。
啟用 OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE
後即可使用,
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
otNat64GetCounters
void otNat64GetCounters( otInstance *aInstance, otNat64ProtocolCounters *aCounters )
取得 NAT64 翻譯計數器。
計數器是從執行個體初始化開始計算。
啟用 OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE
後即可使用,
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
otNat64GetErrorCounters
void otNat64GetErrorCounters( otInstance *aInstance, otNat64ErrorCounters *aCounters )
取得 NAT64 翻譯器錯誤計數器。
當 OpenThread 執行個體初始化時,計數器會初始化為零。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
otNat64GetNextAddressMapping
otError otNat64GetNextAddressMapping( otInstance *aInstance, otNat64AddressMappingIterator *aIterator, otNat64AddressMapping *aMapping )
取得下一個 AddressMapping 資訊 (使用疊代器)。
啟用 OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE
後即可使用,
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
otNat64GetPrefixManagerState
otNat64State otNat64GetPrefixManagerState( otInstance *aInstance )
取得 NAT64 前置字串管理員的狀態。
啟用 OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE
後即可使用,
詳細說明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||
傳回值 |
|
otNat64GetTranslatorState
otNat64State otNat64GetTranslatorState( otInstance *aInstance )
取得 NAT64 翻譯工具的狀態。
啟用 OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE
後即可使用,
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
otNat64InitAddressMappingIterator
void otNat64InitAddressMappingIterator( otInstance *aInstance, otNat64AddressMappingIterator *aIterator )
初始化 otNat64AddressMappingIterator
。
疊代器「必須」初始化才能使用。
可以再次初始化疊代器,以便從對應資訊的開頭處重新啟動。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
otNat64Send
otError otNat64Send( otInstance *aInstance, otMessage *aMessage )
將 IPv4 資料元轉譯為 IPv6 資料元,並透過 Thread 介面傳送。
來電者會在撥打這通電話時轉移「aMessage
」的擁有權。處理完成時,OpenThread 會釋放 aMessage
,包括傳回 OT_ERROR_NONE
以外的值時。
詳細說明 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||||
傳回值 |
|
otNat64SetEnabled
void otNat64SetEnabled( otInstance *aInstance, bool aEnabled )
啟用或停用 NAT64 函式。
注意:這包括 NAT64 翻譯器 (如果啟用 OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE
) 和 NAT64 前置字串管理員 (如果 OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE
已啟用)。
啟用 OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE
時,如果將設定設為 True,系統就會重設翻譯器中的對應資料表。
啟用 OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE
或 OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE
後即可使用。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
otNat64GetTranslatorState
otNat64GetPrefixManagerState
otNat64SetIp4Cidr
otError otNat64SetIp4Cidr( otInstance *aInstance, const otIp4Cidr *aCidr )
設定傳出已翻譯 IPv4 封包的來源位址時,使用的 CIDR。
只有在啟用 OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE 時才能使用。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
otBorderRouterSend
otBorderRouterSetReceiveCallback
otNat64SetReceiveIp4Callback
void otNat64SetReceiveIp4Callback( otInstance *aInstance, otNat64ReceiveIp4Callback aCallback, void *aContext )
註冊回呼以提供接收的 IPv4 資料元。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
otNat64SynthesizeIp6Address
otError otNat64SynthesizeIp6Address( otInstance *aInstance, const otIp4Address *aIp4Address, otIp6Address *aIp6Address )
設定 IPv6 位址,方法是根據偏好的 NAT64 前置字串和 RFC 6052 中指定的 IPv4 位址執行 NAT64 位址轉譯。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回 |
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 取得。如要瞭解詳情或對說明文件做出貢獻,請參閱資源。