NAT64
此模块包含边界路由器上 NAT64 函数的函数和结构体。
摘要
仅当启用 OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE
时,这些函数才可用。
类型定义符 |
|
---|---|
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
测试两个 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
|
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 依赖项未运行。 |
类型定义符
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 转换器转换)时,系统会调用指针。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
变量
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 转换为字符串。
该字符串格式使用地址中 4 个字节的四点式表示法,带有前缀(例如“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 )
分配新的消息缓冲区,以用于向 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
后,将停用设置为 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 上提供的源代码。如需了解详情,或者为我们的文档做贡献,请参阅资源。