NL::编织::简介::编织隧道::编织隧道代理

概括

构造函数和析构函数

WeaveTunnelAgent (void)

公共类型

AgentState {
kState_NotInitialized = 0,
kState_Initialized_NoTunnel = 1,
kState_PrimaryTunModeEstablished = 2,
kState_BkupOnlyTunModeEstablished = 3,
kState_PrimaryAndBkupTunModeEstablished = 4
}
枚举
隧道代理与服务的连接相关的状态。
AgentState类型定义
隧道代理与服务的连接相关的状态。
OnServiceTunnelReconnectNotifyFunct )(TunnelType tunType, const char *reconnectHost, const uint16_t reconnectPort, void *appCtxt)类型定义
void(*
当从服务接收到隧道重新连接时,指向由更高层设置的处理程序的函数指针。
OnServiceTunnelStatusNotifyFunct )(WeaveTunnelConnectionMgr::TunnelConnNotifyReasons reason, WEAVE_ERROR err, void *appCtxt)类型定义
void(*
指向由更高层设置的处理程序的函数指针,用于处理与通向服务的隧道相关的各种通知。
PlatformNetworkOnlineCheck )(TunnelType tunType, void *appCtxt)类型定义
void(*
指向应用程序提供的用于执行网络级在线检查的处理程序的函数指针。
WeaveTunnelFlags {
kTunnelFlag_PrimaryEnabled = 0x01,
kTunnelFlag_BackupEnabled = 0x02,
kTunnelFlag_PrimaryRestricted = 0x04,
kTunnelFlag_BackupRestricted = 0x08
}
枚举
编织隧道标志位。
WeaveTunnelFlags类型定义
编织隧道标志位。

公共属性

NetworkOnlineCheck
OnServiceTunReconnectNotify
OnServiceTunStatusNotify
指向由更高层设置的处理程序的函数指针,用于处理与通向服务的隧道相关的各种通知。
mServiceMgr
WeaveServiceManager *
用于查找和连接到服务的服务管理器指针。

公共职能

DisablePrimaryTunnel (void)
void
禁用主隧道。
EnablePrimaryTunnel (void)
void
启用主隧道。
GetAgentStateName (const AgentState state)
const char *
获取 WeaveTunnelAgentState 名称。
GetTimeMsec (void)
uint64_t
以毫秒为单位获取系统时间。
GetWeaveTunnelAgentState (void)
获取 TunnelAgent 状态。
Init (InetLayer *inet, WeaveExchangeManager *exchMgr, uint64_t dstNodeId, WeaveAuthMode authMode, WeaveServiceManager *svcMgr, const char *intfName, uint8_t role, void *appContext)
初始化隧道代理。
Init (InetLayer *inet, WeaveExchangeManager *exchMgr, uint64_t dstNodeId, IPAddress dstIPAddr, WeaveAuthMode authMode, const char *intfName, uint8_t role, void *appContext)
初始化隧道代理。
IsPrimaryTunnelEnabled (void) const
bool
检查主隧道是否开启。
IsPrimaryTunnelRoutingRestricted (void)
bool
检查主隧道是否受到服务的路由限制。
IsTunnelRoutingRestricted (void)
bool
检查隧道是否受到服务的路由限制。
NetworkOnlineCheckResult (TunnelType tunType, bool isOnline)
void
当网络在线检查器的结果可用时由平台调用的回调。
ResetPrimaryReconnectBackoff (bool reconnectImmediately)
重置主隧道的重新连接时间。
SetAuthMode (const WeaveAuthMode authMode)
void
为隧道设置 WeaveAuthMode。
SetDestination (const uint64_t nodeId, const IPAddress ipAddr, const uint16_t servicePort)
void
设置隧道的目标节点 ID、IP 地址和端口。
SetTunnelingDeviceRole (const Role role)
void
为隧道设置隧道设备角色(BorderGateway、StandaloneDevice、MobileDevice)。
Shutdown (void)
关闭隧道代理。
StartServiceTunnel (void)
启动服务隧道。
StartServiceTunnel (uint64_t dstNodeId, IPAddress dstIPAddr, WeaveAuthMode authMode)
启动服务隧道。
StopServiceTunnel (void)
void
关闭与服务的隧道连接。
StopServiceTunnel ( WEAVE_ERROR err)
void
关闭与服务的隧道连接。

公共静态函数

RecvdFromShortcutUDPTunnel ( WeaveMessageLayer *msgLayer, PacketBuffer *message)
void
处理程序通过边界网关和移动设备之间的快捷 UDP 隧道接收隧道 IPv6 数据包,并在从隧道标头内部解封装原始 IPv6 数据包后转发到隧道端点接口。
RecvdFromTunnelEndPoint ( TunEndPoint *tunEP, PacketBuffer *message)
void
处理程序从隧道端点接口接收 IPv6 数据包,并在将 IPv6 数据包封装在隧道报头内后通过服务 TCP 连接转发到服务或通过快捷隧道转发到移动客户端。

公共类型

代理状态

 AgentState

隧道代理与服务的连接相关的状态。

特性
kState_BkupOnlyTunModeEstablished

用于指示到服务的备份隧道已经建立。

kState_Initialized_NoTunnel

用于表示 Tunnel Agent 已初始化但尚未建立隧道。

kState_NotInitialized

用于指示隧道代理未初始化。

kState_PrimaryAndBkupTunModeEstablished

用于指示Primary 和Backup 隧道均已建立。

kState_PrimaryTunModeEstablished

用于指示到 Service 的 Primary 隧道已经建立。

代理状态

enum nl::Weave::Profiles::WeaveTunnel::WeaveTunnelAgent::AgentState AgentState

隧道代理与服务的连接相关的状态。

OnServiceTunnelReconnectNotifyFunct

void(* OnServiceTunnelReconnectNotifyFunct)(TunnelType tunType, const char *reconnectHost, const uint16_t reconnectPort, void *appCtxt)

当从服务接收到隧道重新连接时,指向由更高层设置的处理程序的函数指针。

细节
参数
[in] tunType
隧道类型,主要或备份。
[in] reconnectHost
服务提供的主机名以重新连接。
[in] reconnectPort
Service 提供的要重新连接的目标端口。
[in] appCtxt
指向应用程序上下文对象的指针

OnServiceTunnelStatusNotifyFunct

void(* OnServiceTunnelStatusNotifyFunct)(WeaveTunnelConnectionMgr::TunnelConnNotifyReasons reason, WEAVE_ERROR err, void *appCtxt)

指向由更高层设置的处理程序的函数指针,用于处理与通向服务的隧道相关的各种通知。

细节
参数
[in] reason
向应用程序发出状态通知的原因。
[in] err
遇到编织错误(如果有)
[in] appCtxt
指向应用程序上下文对象的指针

平台网络在线检查

void(* PlatformNetworkOnlineCheck)(TunnelType tunType, void *appCtxt)

指向应用程序提供的用于执行网络级在线检查的处理程序的函数指针。

细节
参数
[in] tunType
隧道类型,主要或备份。
[in] appCtxt
指向应用程序上下文对象的指针

编织隧道标志

 WeaveTunnelFlags

编织隧道标志位。

特性
kTunnelFlag_BackupEnabled

启用备份隧道时设置。

kTunnelFlag_BackupRestricted

在备份隧道路由受限时设置。

kTunnelFlag_PrimaryEnabled

在启用主隧道时设置。

kTunnelFlag_PrimaryRestricted

当主隧道路由受限时设置。

编织隧道标志

enum nl::Weave::Profiles::WeaveTunnel::WeaveTunnelAgent::WeaveTunnelFlags WeaveTunnelFlags

编织隧道标志位。

公共属性

网络在线检查

PlatformNetworkOnlineCheck NetworkOnlineCheck

OnServiceTunReconnectNotify

OnServiceTunnelReconnectNotifyFunct OnServiceTunReconnectNotify

OnServiceTunStatusNotify

OnServiceTunnelStatusNotifyFunct OnServiceTunStatusNotify

指向由更高层设置的处理程序的函数指针,用于处理与通向服务的隧道相关的各种通知。

移动服务管理器

WeaveServiceManager * mServiceMgr

用于查找和连接到服务的服务管理器指针。

公共职能

禁用主隧道

void DisablePrimaryTunnel(
  void
)

禁用主隧道。

禁用主隧道。

启用主隧道

void EnablePrimaryTunnel(
  void
)

启用主隧道。

启用主隧道。

获取代理状态名称

const char * GetAgentStateName(
  const AgentState state
)

获取 WeaveTunnelAgentState 名称。

获取时间毫秒

uint64_t GetTimeMsec(
  void
)

以毫秒为单位获取系统时间。

如果系统时间不可用,则以毫秒为单位获取系统时间或单调时间。

获取WeaveTunnelAgentState

AgentState GetWeaveTunnelAgentState(
  void
)

获取 TunnelAgent 状态。

细节
退货
AgentState的当前状态WeaveTunnelAgent

在里面

WEAVE_ERROR Init(
  InetLayer *inet,
  WeaveExchangeManager *exchMgr,
  uint64_t dstNodeId,
  WeaveAuthMode authMode,
  WeaveServiceManager *svcMgr,
  const char *intfName,
  uint8_t role,
  void *appContext
)

初始化隧道代理。

这将创建TE隧道端点对象,设置隧道接口,初始化成员变量,回调和WeaveTunnelControl

在里面

WEAVE_ERROR Init(
  InetLayer *inet,
  WeaveExchangeManager *exchMgr,
  uint64_t dstNodeId,
  IPAddress dstIPAddr,
  WeaveAuthMode authMode,
  const char *intfName,
  uint8_t role,
  void *appContext
)

初始化隧道代理。

这将创建TE隧道端点对象,设置隧道接口,初始化成员变量,回调和WeaveTunnelControl

IsPrimaryTunnelEnabled

bool IsPrimaryTunnelEnabled(
  void
) const 

检查主隧道是否开启。

细节
退货
如果启用,则为 true,否则为 false。

IsPrimaryTunnelRoutingRestricted

bool IsPrimaryTunnelRoutingRestricted(
  void
)

检查主隧道是否受到服务的路由限制。

检查主隧道是否受到路由限制。

细节
退货
如果主隧道已建立但受服务的路由限制,则为 true。

IsTunnelRoutingRestricted

bool IsTunnelRoutingRestricted(
  void
)

检查隧道是否受到服务的路由限制。

检查隧道是否受到路由限制。

细节
退货
如果主隧道或备用隧道已建立,并且受服务的路由限制,则为 true。

网络在线检查结果

void NetworkOnlineCheckResult(
  TunnelType tunType,
  bool isOnline
)

当网络在线检查器的结果可用时由平台调用的回调。

细节
参数
[in] tunType
进行网络连通性检查的接口对应的隧道类型。
[in] isOnline
如果网络在线则为真,否则为假。

ResetPrimaryReconnectBackoff

WEAVE_ERROR ResetPrimaryReconnectBackoff(
  bool reconnectImmediately
)

重置主隧道的重新连接时间。

细节
参数
[in] reconnectImmediately
如果需要立即重新连接,则为 True,否则使用配置的重新连接超时。

设置身份验证模式

void SetAuthMode(
  const WeaveAuthMode authMode
)

为隧道设置 WeaveAuthMode。

细节
参数
[in] authMode
与对等方一起使用的编织身份验证模式。

设置目的地

void SetDestination(
  const uint64_t nodeId,
  const IPAddress ipAddr,
  const uint16_t servicePort
)

设置隧道的目标节点 ID、IP 地址和端口。

设置隧道的目标 nodeId 和 IPAddress。

细节
参数
[in] nodeId
目的节点的节点ID。
[in] ipAddr
目的节点的IP地址。
[in] servicePort
目的节点的端口。

设置隧道设备角色

void SetTunnelingDeviceRole(
  const Role role
)

为隧道设置隧道设备角色(BorderGateway、StandaloneDevice、MobileDevice)。

为隧道设置隧道设备角色(BorderGateway vs Standalone)。

细节
参数
[in] role
隧道代理承担的角色;边界网关、独立或移动设备。

关掉

WEAVE_ERROR Shutdown(
  void
)

关闭隧道代理。

这会在删除与隧道接口关联的地址和路由后断开与服务的连接并关闭 TunEndPoint 接口。

在删除与隧道接口关联的地址和路由后,这会断开与服务的连接并关闭 TunEndPoint 接口。

细节
退货
WEAVE_NO_ERROR 成功,否则对应的 WEAVE_ERROR 类型。

启动服务隧道

WEAVE_ERROR StartServiceTunnel(
  void
)

启动服务隧道。

这将启用隧道并尝试建立与服务的连接。

这会尝试建立与服务的连接,并将结构路由设置为隧道接口。

细节
退货
WEAVE_NO_ERROR 成功,否则对应的 WEAVE_ERROR 类型。

启动服务隧道

WEAVE_ERROR StartServiceTunnel(
  uint64_t dstNodeId,
  IPAddress dstIPAddr,
  WeaveAuthMode authMode
)

启动服务隧道。

这将启用隧道并尝试建立与服务的连接。

停止服务隧道

void StopServiceTunnel(
  void
)

关闭与服务的隧道连接。

停止服务隧道

void StopServiceTunnel(
  WEAVE_ERROR err
)

关闭与服务的隧道连接。

细节
参数
[in] err
WEAVE_NO_ERROR 如果这个StopServiceTunnel 请求没有具体原因,否则错误的原因会被传递下去。

编织隧道代理

 WeaveTunnelAgent(
  void
)

公共静态函数

RecvdFromShortcutUDPTunnel

void RecvdFromShortcutUDPTunnel(
  WeaveMessageLayer *msgLayer,
  PacketBuffer *message
)

处理程序通过边界网关和移动设备之间的快捷 UDP 隧道接收隧道 IPv6 数据包,并在从隧道标头内部解封装原始 IPv6 数据包后转发到隧道端点接口。

处理程序从服务 TCP 连接接收隧道 IPv6 数据包,并在从隧道标头内部解封装原始 IPv6 数据包后转发到隧道端点接口。

细节
参数
[in] con
的指针WeaveConnection对象。
[in] msgInfo
的指针WeaveMessageInfo对象。
[in] message
指向保存隧道 IPv6 数据包的 PacketBuffer 对象的指针。

RecvdFromTunnelEndPoint

void RecvdFromTunnelEndPoint(
  TunEndPoint *tunEP,
  PacketBuffer *message
)

处理程序从隧道端点接口接收 IPv6 数据包,并在将 IPv6 数据包封装在隧道报头内后通过服务 TCP 连接转发到服务或通过快捷隧道转发到移动客户端。

处理程序从隧道端点接口接收 IPv6 数据包,并在将 IPv6 数据包封装在隧道报头内后通过服务 TCP 连接转发到服务或通过本地隧道转发到移动客户端。

如果服务连接尚未建立,则消息将排队,直到建立连接。对于到移动客户端设备的隧道,参考下一跳邻居表。

如果服务连接尚未建立,则消息将排队等待,直到建立连接。对于到移动客户端设备的隧道,参考下一跳邻居表。

细节
参数
[in] tunEP
指向 TunEndPoint 对象的指针。
[in] message
指向保存原始 IPv6 数据包的 PacketBuffer 对象的指针。