Google 致力于为黑人社区推动种族平等。查看具体行动

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 标头表示。

类型定义符

otBorderRoutingCounters typedef
此结构表示通过边界路由转发的数据包的计数器。
otIp6Address typedef
struct otIp6Address
此结构表示 IPv6 地址。
otIp6AddressCallback)(const otIp6AddressInfo *aAddressInfo, bool aIsAdded, void *aContext) typedef
void(*
添加或移除内部 IPv6 地址时,系统会调用此函数指针。
otIp6AddressComponents typedef
此结构表示 IPv6 地址的组成部分。
otIp6AddressInfo typedef
otIp6InterfaceIdentifier typedef
此结构表示 IPv6 地址的接口标识符。
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 套接字地址。

变量

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 *
此函数会返回指向不安全端口列表的指针。
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)
此函数设置 Mesh Local 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 数据图时,是否过滤掉线程控制流量。
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 地址的接口标识符。

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 的 Fragment 标头。

OT_IP6_PROTO_HOP_OPTS

IPv6 跃点选项。

OT_IP6_PROTO_ICMP6

适用于 IPv6 的 ICMP。

OT_IP6_PROTO_IP6

IPv6 封装。

OT_IP6_PROTO_NONE

IPv6 没有 Next 标头。

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

增强型转化(0)

OT_ECN_CAPABLE_1

增强型转化(1)

OT_ECN_MARKED

遇到拥塞 (CE)

OT_ECN_NOT_CAPABLE

非增强型转化。

类型定义符

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

otIp6InterfaceIdentifier

struct otIp6InterfaceIdentifier otIp6InterfaceIdentifier

此结构表示 IPv6 地址的接口标识符。

otIp6NetworkPrefix

struct otIp6NetworkPrefix otIp6NetworkPrefix

此结构表示 IPv6 地址的网络前缀(地址的最高 64 位)。

otIp6 前缀

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
OT_ERROR_NONE(当成功发送 MLR.req 并收到 MLR.rsp 时,即收到 MLR.rsp;当无法接收 MLR.rsp 时,OT_ERROR_Response_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 地址。

OTMessage 信息

struct otMessageInfo otMessageInfo

此结构表示本地和对等 IPv6 套接字地址。

otNetifAddress

struct otNetifAddress otNetifAddress

此结构表示 IPv6 网络接口单播地址。

otNetifMulticastAddress

struct otNetifMulticastAddress otNetifMulticastAddress

此结构表示 IPv6 网络接口多播地址。

otPacketsAndBytes

struct otPacketsAndBytes otPacketsAndBytes

此结构表示数据包和字节的计数器。

otSockAddr 添加

struct otSockAddr otSockAddr

此结构表示 IPv6 套接字地址。

变量

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 字符内),则字符串会被截断,但输出的字符串始终以 null 终止。

详细说明
参数
[in] aAddress
指向 IPv6 地址的指针(不得为 NULL)。
[out] aBuffer
一个指向字符数组的指针,用于输出字符串(不得为 NULL)。
[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 实例的指针。
返回
指向边界路由计数器的指针。

otIp6GetMulticastAddress

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 前缀的指针。

otIp6GetUnicastAddress

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
列表中的条目数量。
返回
指向不安全端口列表的指针。

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,用于设定默认设置。
返回
指向消息或 NULL 的指针(如果 IPv6 标头格式错误或消息缓冲区不足)。
另请参阅
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 字符内),则字符串会被截断,但输出的字符串始终以 null 终止。

详细说明
参数
[in] aPrefix
指向 IPv6 前缀的指针(不得为 NULL)。
[out] aBuffer
一个指向字符数组的指针,用于输出字符串(不得为 NULL)。
[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 为 NULL,则为 0)。
[in] aTimeout
指向 MLR.req 中包含的超时值的秒数(以秒为单位)。超时值为 0 会移除相应的多播监听器。如果为 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 的状态(例如,未启动调试器,未找到主骨干路由器)。
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 未更改。

OTIP6 发送

otError otIp6Send(
  otInstance *aInstance,
  otMessage *aMessage
)

此函数通过 Thread 接口发送 IPv6 数据报。

调用者在进行此通话时转移 aMessage 的所有权。处理完成后(包括返回 OT_ERROR_NONE 以外的值时),OpenThread 将释放 aMessage

详细说明
参数
[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
处理消息时遇到标头格式不正确。

otIp6SetAddressCallback

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

此函数会注册一个回调,以通知内部 IPv6 地址更改。

详细说明
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aCallback
指向添加或移除内部 IPv6 地址时调用的函数的指针。NULL,以停用回调。
[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
)

此函数设置 Mesh Local IID(用于测试)。

仅当 OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE 处于启用状态时才可用。

详细说明
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aIid
指向要设置的 Mesh Local IID 的指针。
返回值
OT_ERROR_NONE
已成功设置 Mesh Local 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 数据图时,是否过滤掉线程控制流量。

详细说明
参数
[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 字符内),则字符串会被截断,但输出的字符串始终以 null 终止。

详细说明
参数
[in] aSockAddr
指向 IPv6 套接字地址的指针(不得为 NULL)。
[out] aBuffer
一个指向字符数组的指针,用于输出字符串(不得为 NULL)。
[in] aSize
aBuffer 的大小(以字节为单位)。建议使用 OT_IP6_SOCK_ADDR_STRING_SIZE

otIp6SubscribeMulticastAddress

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

将 Thread 接口订阅到网络接口多播地址。

传入的实例 aAddress 将由 Thread 接口复制。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_IID_SIZE

 OT_IP6_IID_SIZE 8

IPv6 接口标识符的大小(字节)

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 上获取。 如需了解详情或为我们的文档贡献内容,请参阅资源