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

IPv6

此模块包含用于控制 IPv6 通信的函数。

总结

枚举

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 标头中表示。
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
}
枚举
互联网协议编号。

类型定义符

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 网络接口多播地址。
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 前缀是否相同。
otIp6GetMulticastAddresses(otInstance *aInstance)
获取订阅 Thread 接口的 IPv6 多播地址列表。
otIp6GetUnicastAddresses(otInstance *aInstance)
const otNetifAddress *
获取分配给线程接口的 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
检查线程线程上是否启用了多播混杂模式。
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 消息。
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)
从线程接口中移除网络接口地址。
otIp6RemoveUnsecurePort(otInstance *aInstance, uint16_t aPort)
此函数从允许的不安全端口列表中移除端口。
otIp6SelectSourceAddress(otInstance *aInstance, otMessageInfo *aMessageInfo)
此函数用于执行 OpenThread 源地址选择。
otIp6Send(otInstance *aInstance, otMessage *aMessage)
此函数通过线程接口发送 IPv6 数据报。
otIp6SetAddressCallback(otInstance *aInstance, otIp6AddressCallback aCallback, void *aCallbackContext)
void
此函数注册一个回调来通知内部 IPv6 地址更改。
otIp6SetEnabled(otInstance *aInstance, bool aEnabled)
此函数用于启动/向下 IPv6 接口。
otIp6SetMeshLocalIid(otInstance *aInstance, const otIp6InterfaceIdentifier *aIid)
此函数用于设置网格本地 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 接口。

结构体

otIp6Address

此结构代表一个 IPv6 地址。

otIp6AddressComponents

此结构表示 IPv6 地址的组成部分。

otIp6AddressInfo

此结构表示 IPv6 地址信息。

otIp6InterfaceIdentifier

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

otIp6NetworkPrefix

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

otIp6Prefix

此结构表示 IPv6 前缀。

otMessageInfo

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

otNetifAddress

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

otNetifMulticastAddress

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

otSockAddr

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

联合

otIp6InterfaceIdentifier::OT_TOOL_PACKED_FIELD

枚举

匿名枚举

 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

ECT(0)

OT_ECN_CAPABLE_1

ECT(1)

OT_ECN_MARKED

遇到拥塞 (CE)

OT_ECN_NOT_CAPABLE

非 ECT。

匿名枚举

 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 的下一个标头。

OT_IP6_PROTO_ROUTING

IPv6 的路由标头。

OT_IP6_PROTO_TCP

传输控制协议。

OT_IP6_PROTO_UDP

用户数据报。

类型定义符

otIp6 地址

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
成功发送 MLR.req 并收到 MLR.rsp 时,发送 OT_ERROR_NONE;收到 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 地址时,由 SLAAC 模块调用过滤器处理程序。其布尔值返回值决定了是否过滤(不添加)地址。

详细信息
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aPrefix
一个前缀,表示要为之添加 SLAAC 地址的前缀。
返回值
TRUE
表示应过滤基于前缀的 SLAAC 地址,而不是添加该地址。
FALSE
表示应添加基于该前缀的 SLAAC 地址。

动态消息信息

struct otMessageInfo otMessageInfo

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

otNetifAddress

struct otNetifAddress otNetifAddress

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

otNetifMulticastAddress

struct otNetifMulticastAddress otNetifMulticastAddress

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

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 接口仅支持从外部添加的固定单播地址数量。参见 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
已成功解析该字符串。
OT_ERROR_INVALID_ARGS
未能解析字符串。

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 前缀不同。

otIp6GetMulticastAddresses

const otNetifMulticastAddress * otIp6GetMulticastAddresses(
  otInstance *aInstance
)

获取订阅 Thread 接口的 IPv6 多播地址列表。

详细信息
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回值
指向第一个网络接口多播地址的指针。

otIp6GetUnicastAddresses

const otNetifAddress * otIp6GetUnicastAddresses(
  otInstance *aInstance
)

获取分配给线程接口的 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 地址不是未指定的地址。

OTT 服务 6 已启用

bool otIp6IsEnabled(
  otInstance *aInstance
)

此函数指示 IPv6 接口是否处于启用状态。

详细信息
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回值
TRUE
IPv6 接口已启用。
FALSE
IPv6 接口已停用。

otIp6IsMulticastPromiscuousEnabled

bool otIp6IsMulticastPromiscuousEnabled(
  otInstance *aInstance
)

检查线程线程上是否启用了多播混杂模式。

详细信息
参数
[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 模块已停用。

o6 新消息

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

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&quot”。

如果生成的字符串不适合 aBuffer(在其 aSize 个字符内),则该字符串将被截断,但输出的字符串始终以 null 结尾。

详细信息
参数
[in] aPrefix
指向 IPv6 前缀的指针(不得为 NULL)。
[out] aBuffer
指向字符数组以输出字符串的指针(不得为 NULL)。
[in] aSize
aBuffer 的大小(以字节为单位)。建议使用 OT_IP6_PREFIX_STRING_SIZE

otIp6 协议字符串

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 将默认没有超时超时值。
[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
)

从线程接口中移除网络接口地址。

详细信息
参数
[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
在不安全的端口列表中找不到端口。

otIp6SelectSourceAddress

otError otIp6SelectSourceAddress(
  otInstance *aInstance,
  otMessageInfo *aMessageInfo
)

此函数用于执行 OpenThread 源地址选择。

详细信息
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in,out] aMessageInfo
指向消息信息的指针。
返回值
OT_ERROR_NONE
找到源地址并填充到 aMessageInfo 的 mSockAddr 中。
OT_ERROR_NOT_FOUND
未找到源地址,aMessageInfo 未更改。

o6 发送

otError otIp6Send(
  otInstance *aInstance,
  otMessage *aMessage
)

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

来电者在拨打电话时转让 aMessage 的所有权。OpenThread 会在处理完成后(包括返回 OT_ERROR_NONE 以外的值时)释放 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
)

此函数用于设置网格本地 IID(用于测试)。

仅在 OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE 已启用的情况下可用。

详细信息
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aIid
指向要设置的网格本地 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 地址以决定是否添加地址时,由 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 套接字地址字符串的格式为 "[

]:
显示为 16 个十六进制值并用 ':' 表示, 是以十进制数字表示的端口号(例如,"[%x:%x:...:%x]:%u")

如果生成的字符串不适合 aBuffer(在其 aSize 个字符内),则该字符串将被截断,但输出的字符串始终以 null 结尾。

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

otIp6SubscriptionMulticastAddress

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

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

线程实例将复制传入的实例 aAddress。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_地址_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 上的源代码。 如需了解详情或为我们的文档做贡献,请参阅资源