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)
向线程接口添加网络接口地址。
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)
获取订阅了线程接口的 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
在线程接口上启用多播混杂模式。
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)
为线程接口订阅网络接口多播地址。
otIp6UnsubscribeMulticastAddress(otInstance *aInstance, const otIp6Address *aAddress)
为线程接口退订网络接口多播地址。

结构体

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

厄瓜多尔(0)

OT_ECN_CAPABLE_1

厄瓜多尔(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

用户数据报。

类型定义符

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 位)。

otIp6Prefix

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,则为 OT_ERROR_RESPONSE_TIMEOUT;如果未能接收 MLR.rsp,则为 OT_ERROR_PARSE);如果无法解析 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 地址。

otMessageInfo

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
)

向线程接口添加网络接口地址。

传入实例 aAddress 由线程接口复制。线程接口仅支持一定数量的外部添加单播地址。请参阅 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
)

获取订阅了线程接口的 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 地址不是未指定的地址。

otIp6IsEnabled

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 模块已停用。

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 以设定默认设置的指针。
返回值
指向消息的指针,如果 IPv6 标头格式不正确或消息缓冲区不足,则返回 NULL。
另请参阅
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”。

如果生成的字符串不适合 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
)

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

详情
参数
[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 未更改。

otIp6Send

otError otIp6Send(
  otInstance *aInstance,
  otMessage *aMessage
)

此函数通过线程接口发送 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
如果启用 IPv6,则为 TRUE;否则为 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
)

在线程接口上启用多播混杂模式。

详情
参数
[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 套接字地址字符串的格式为“[

]:" 其中 `
显示为 16 位十六进制值,并用“:”分隔; 是十进制格式的端口号(即 “[%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
)

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

传入的实例aAddress将被线程界面复制。线程接口仅支持一定数量的外部添加的多播地址。请参阅 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
)

为线程接口退订网络接口多播地址。

详情
参数
[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_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 上找到。 如需了解详情或为我们的文档做贡献,请参阅资源