NAT64
このモジュールには、ボーダー ルーターの NAT64 関数の関数と構造体が含まれています。
概要
これらの関数は、OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE
が有効になっている場合にのみ使用できます。
列挙型 |
|
---|---|
otNat64DropReason{
|
enum パケット ドロップの理由。 |
otNat64State{
|
enum NAT64 の状態。 |
Typedef |
|
---|---|
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 トランスレータによって変換されたもの)を受信すると、ポインタが呼び出されます。 |
変数 |
|
---|---|
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
2 つの IPv4 アドレスが同じかどうかをテストします。
|
otIp4NewMessage(otInstance *aInstance, const otMessageSettings *aSettings)
|
NAT64 トランスレータに IPv4 メッセージを送信するための新しいメッセージ バッファを割り当てます。
|
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
otNat64AddressMappingIterator を初期化します。 |
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)
|
優先 NAT64 プレフィックスおよび RFC 6052 で指定されている特定の IPv4 アドレスから NAT64 アドレス変換を実行して、IPv6 アドレスを設定します。
|
構造体 |
|
---|---|
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 の依存関係が 1 つ以上実行されていません。 |
Typedef
otIp4Cidr
struct otIp4Cidr otIp4Cidr
otNat64AddressMapping
struct otNat64AddressMapping otNat64AddressMapping
NAT64 のアドレス マッピング レコードを表します。
otNat64AddressMappingIterator
struct otNat64AddressMappingIterator otNat64AddressMappingIterator
NAT64 アドレス マッピングの反復処理に使用されます。
この型のフィールドは不透明(OpenThread コア専用)であるため、呼び出し元がアクセスまたは使用すべきではありません。
イテレータを使用する前に、otNat64AddressMappingIteratorInit()
を使用して初期化しなければなりません。
otNat64ErrorCounters
struct otNat64ErrorCounters otNat64ErrorCounters
NAT64 パケットの処理時にエラーによってドロップされたパケットのカウンタを表します。
otNat64ProtocolCounters
struct otNat64ProtocolCounters otNat64ProtocolCounters
NAT64 でサポートされているプロトコルのカウンタを表します。
otNat64ReceiveIp4Callback
void(* otNat64ReceiveIp4Callback)(otMessage *aMessage, void *aContext)
IPv4 データグラム(NAT64 トランスレータによって変換されたもの)を受信すると、ポインタが呼び出されます。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
変数
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 バイトの 4 ドット表記で表します(例:「127.0.0.1」)を入力します。
結果の文字列が aSize
文字内の aBuffer
に収まらない場合、文字列は切り捨てられますが、出力される文字列は常に null で終わる文字列になります。
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
otIp4CidrFromString
otError otIp4CidrFromString( const char *aString, otIp4Cidr *aCidr )
人が読める IPv4 CIDR 文字列をバイナリ表現に変換します。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
||||
戻り値 |
|
otIp4CidrToString
void otIp4CidrToString( const otIp4Cidr *aCidr, char *aBuffer, uint16_t aSize )
IPv4 CIDR を文字列に変換します。
文字列形式では、アドレスの 4 バイトを接頭辞の長さ(例:「127.0.0.1/32」)を入力します。
結果の文字列が aSize
文字内の aBuffer
に収まらない場合、文字列は切り捨てられますが、出力される文字列は常に null で終わる文字列になります。
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
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 )
2 つの IPv4 アドレスが同じかどうかをテストします。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
||||
戻り値 |
|
otIp4NewMessage
otMessage * otIp4NewMessage( otInstance *aInstance, const otMessageSettings *aSettings )
NAT64 トランスレータに IPv4 メッセージを送信するための新しいメッセージ バッファを割り当てます。
この関数によって割り当てられるメッセージ バッファには、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 は、OT_ERROR_NONE
以外の値が返された場合など、処理が完了したときに aMessage
を解放します。
詳細 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||||
戻り値 |
|
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
が有効な場合に、disabled を 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 )
優先 NAT64 プレフィックスおよび RFC 6052 で指定されている特定の IPv4 アドレスから NAT64 アドレス変換を実行して、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 で入手できるソースコードに由来しています。 詳細について、またはドキュメントへの投稿については、リソースをご覧ください。