透過集合功能整理內容 你可以依據偏好儲存及分類內容。

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 對象的指針。