nl::Inet::IPEndPointBasis

#include <src/inet/IPEndPointBasis.h>

このクラスのオブジェクトは、インスタンス化できない IP プロトコル エンドポイントを表します。

概要

継承

継承元: nl::Inet::EndPointBasis
直接的な既知のサブクラス:
  nl::Inet::RawEndPoint
  nl::Inet::UDPEndPoint

パブリック タイプ

@8{
  kState_Ready = kBasisState_Closed,
  kState_Bound = 1,
  kState_Listening = 2,
  kState_Closed = 3
}
enum
基盤となるエンドポイントの基本的な動的状態。
@9{
  kSendFlag_RetainBuffer = 0x0040
}
enum
SendMsg メソッドのオプション フラグを送信する。
OnMessageReceivedFunct)(IPEndPointBasis *endPoint, Weave::System::PacketBuffer *msg, const IPPacketInfo *pktInfo) typedef
void(*
メッセージ テキスト受信イベント処理関数のタイプ。
OnReceiveErrorFunct)(IPEndPointBasis *endPoint, INET_ERROR err, const IPPacketInfo *pktInfo) typedef
void(*
受信エラーイベント処理関数のタイプ。

パブリック属性

OnMessageReceived
エンドポイントのメッセージ受信イベント処理関数のデリゲート。
OnReceiveError
エンドポイントの受信エラーイベント処理関数のデリゲート。
mState
enum nl::Inet::IPEndPointBasis::@8
基盤となるエンドポイントの基本的な動的状態。

プロテクト属性

mBoundIntfId
InterfaceId

パブリック関数

JoinMulticastGroup(InterfaceId aInterfaceId, const IPAddress & aAddress)
IP マルチキャスト グループに参加する。
LeaveMulticastGroup(InterfaceId aInterfaceId, const IPAddress & aAddress)
IP マルチキャスト グループから退出する。
SetMulticastLoopback(IPVersion aIPVersion, bool aLoopback)
IP マルチキャスト トラフィックをループバックするかどうかを設定します。

プロテクト関数

Bind(IPAddressType aAddressType, IPAddress aAddress, uint16_t aPort, InterfaceId aInterfaceId)
BindInterface(IPAddressType aAddressType, InterfaceId aInterfaceId)
GetSocket(IPAddressType aAddressType, int aType, int aProtocol)
HandleDataReceived(Weave::System::PacketBuffer *aBuffer)
void
HandlePendingIO(uint16_t aPort)
void
Init(InetLayer *aInetLayer)
void
PrepareIO(void)
SendMsg(const IPPacketInfo *aPktInfo, Weave::System::PacketBuffer *aBuffer, uint16_t aSendFlags)

静的パブリック関数

FindNetifFromInterfaceId(InterfaceId aInterfaceId)
struct netif *

保護された静的関数

GetPacketInfo(Weave::System::PacketBuffer *buf)
LwIP IP レイヤの送信元と宛先のアドレス情報を取得します。

パブリック タイプ

@8

 @8

基盤となるエンドポイントの基本的な動的状態。

オブジェクトは「準備完了」状態で初期化され、ローカル インターフェース アドレスにバインドした後に「バインド」状態に移行します。その後、ICMP メッセージ受信イベントの処理用に継続が登録されると、「リッスン」状態に進みます。

注: 過去のバイナリ互換性の理由から、kBasisState_Closed 状態列挙型は kState_Ready にマッピングされています。既存の kState_Closed は、これまで kState_Ready 状態と kState_Closed 状態であった「まだ開いていない」と「前回開いた後、閉じた状態」を別々に識別するために存在します。

プロパティ
kState_Bound

エンドポイントはバインドされていますが、リッスンしていません。

kState_Closed

エンドポイントが閉じ、リリースの準備ができています。

kState_Listening

データグラムを受信するエンドポイント

kState_Ready

エンドポイントは初期化されましたが、開いていません。

@9

 @9

SendMsg メソッドのオプション フラグを送信する。

プロパティ
kSendFlag_RetainBuffer

メッセージを破壊的に直接キューに追加しないでください。

コピーをキューに追加します。

OnMessageReceivedFunct

void(* OnMessageReceivedFunct)(IPEndPointBasis *endPoint, Weave::System::PacketBuffer *msg, const IPPacketInfo *pktInfo)

メッセージ テキスト受信イベント処理関数のタイプ。

この型の関数を OnMessageReceived 委譲メンバーに提供して、endPoint でメッセージ テキスト受信イベントを処理します。ここで、msgsenderAddr の送信者から受信したメッセージ テキストです。

詳細
パラメータ
[in] endPoint
イベントに関連付けられたエンドポイント。
[in] msg
受信したメッセージ テキスト。
[in] senderAddr
送信者の IP アドレス。

OnReceiveErrorFunct

void(* OnReceiveErrorFunct)(IPEndPointBasis *endPoint, INET_ERROR err, const IPPacketInfo *pktInfo)

受信エラーイベント処理関数のタイプ。

この型の関数を OnReceiveError デリゲート メンバーに渡して、endPoint の受信エラーイベントを処理します。err 引数は、エラーの種類に関する具体的な詳細を提供します。

詳細
パラメータ
[in] endPoint
イベントに関連付けられたエンドポイント。
[in] err
エラーの理由。

パブリック属性

OnMessageReceived

OnMessageReceivedFunct OnMessageReceived

エンドポイントのメッセージ受信イベント処理関数のデリゲート。

OnReceiveError

OnReceiveErrorFunct OnReceiveError

エンドポイントの受信エラーイベント処理関数のデリゲート。

mState

enum nl::Inet::IPEndPointBasis::@8 mState

基盤となるエンドポイントの基本的な動的状態。

オブジェクトは「準備完了」状態で初期化され、ローカル インターフェース アドレスにバインドした後に「バインド」状態に移行します。その後、ICMP メッセージ受信イベントの処理用に継続が登録されると、「リッスン」状態に進みます。

注: 過去のバイナリ互換性の理由から、kBasisState_Closed 状態列挙型は kState_Ready にマッピングされています。既存の kState_Closed は、これまで kState_Ready 状態と kState_Closed 状態であった「まだ開いていない」と「前回開いた後、閉じた状態」を別々に識別するために存在します。

プロテクト属性

mBoundIntfId

InterfaceId mBoundIntfId

パブリック関数

JoinMulticastGroup

INET_ERROR JoinMulticastGroup(
  InterfaceId aInterfaceId,
  const IPAddress & aAddress
)

IP マルチキャスト グループに参加する。

指定されたインターフェースで、指定されたマルチキャスト グループにエンドポイントを参加させます。

詳細
パラメータ
[in] aInterfaceId
マルチキャスト グループに追加するネットワーク インターフェースのインジケーター
[in] aAddress
インターフェースを追加するマルチキャスト グループ
戻り値
INET_NO_ERROR
成功: マルチキャスト グループが削除されました
INET_ERROR_UNKNOWN_INTERFACE
不明なネットワーク インターフェース、aInterfaceId
INET_ERROR_WRONG_ADDRESS_TYPE
aAddresskIPAddressType_IPv4 または kIPAddressType_IPv6 ではないか、マルチキャストではない
other
別のシステムまたはプラットフォームのエラーです

LeaveMulticastGroup

INET_ERROR LeaveMulticastGroup(
  InterfaceId aInterfaceId,
  const IPAddress & aAddress
)

IP マルチキャスト グループから退出する。

指定されたインターフェースで、指定されたマルチキャスト グループからエンドポイントを削除します。

詳細
パラメータ
[in] aInterfaceId
マルチキャスト グループから削除するネットワーク インターフェースのインジケーター
[in] aAddress
マルチキャスト グループからインターフェースを
戻り値
INET_NO_ERROR
成功: マルチキャスト グループが削除されました
INET_ERROR_UNKNOWN_INTERFACE
不明なネットワーク インターフェース、aInterfaceId
INET_ERROR_WRONG_ADDRESS_TYPE
aAddresskIPAddressType_IPv4 または kIPAddressType_IPv6 ではないか、マルチキャストではない
other
別のシステムまたはプラットフォームのエラーです

SetMulticastLoopback

INET_ERROR SetMulticastLoopback(
  IPVersion aIPVersion,
  bool aLoopback
)

IP マルチキャスト トラフィックをループバックするかどうかを設定します。

IP マルチキャスト トラフィックをこのエンドポイントにループバックするかどうかを設定します。

詳細
パラメータ
[in] aIPVersion
[in] aLoop
戻り値
INET_NO_ERROR
成功: マルチキャスト ループバック動作セット
other
別のシステムまたはプラットフォームのエラーです

プロテクト関数

バインド

INET_ERROR Bind(
  IPAddressType aAddressType,
  IPAddress aAddress,
  uint16_t aPort,
  InterfaceId aInterfaceId
)

BindInterface

INET_ERROR BindInterface(
  IPAddressType aAddressType,
  InterfaceId aInterfaceId
)

GetSocket

INET_ERROR GetSocket(
  IPAddressType aAddressType,
  int aType,
  int aProtocol
)

HandleDataReceived

void HandleDataReceived(
  Weave::System::PacketBuffer *aBuffer
)

HandlePendingIO

void HandlePendingIO(
  uint16_t aPort
)

init

void Init(
  InetLayer *aInetLayer
)

PrepareIO

SocketEvents PrepareIO(
  void
)

SendMsg

INET_ERROR SendMsg(
  const IPPacketInfo *aPktInfo,
  Weave::System::PacketBuffer *aBuffer,
  uint16_t aSendFlags
)

静的パブリック関数

FindNetifFromInterfaceId

struct netif * FindNetifFromInterfaceId(
  InterfaceId aInterfaceId
)

保護された静的関数

GetPacketInfo

IPPacketInfo * GetPacketInfo(
  Weave::System::PacketBuffer *buf
)

LwIP IP レイヤの送信元と宛先のアドレス情報を取得します。

LwIP を使用する場合、パケットに関する情報は、パケット バッファ内のデータ開始前の予約済みスペースで「非表示」になります。これが必要なのは、システムレイヤ イベントは 2 つの引数しか持たないからです。この場合は、ポインタを終点に、ポインタをバッファに伝達するために使用されます。

詳細
パラメータ
[in] aBuffer
IP メッセージが格納されているパケット バッファ
戻り値
成功の場合はアドレス情報へのポインタ。それ以外の場合は NULL。パケットにアドレス情報用のスペースが不足している場合。

ほとんどの場合、LwIP IP メッセージの最初のバッファに、イーサネット/IP/UDP ヘッダーに使用されていたスペースが含まれるため、データが機能する前に情報を保存するという手法がほとんどです。ただし、IPPacketInfo 構造体の現在のサイズ(40 バイト)を考慮すると、構造体とペイロードを単一のパケット バッファに格納するのに十分なスペースがない場合があります。実際には、これはイーサネット ヘッダーなしで到着する非常に大きな IPv4 パケットの場合にのみ発生します。