nl::Inet::RawEndPoint

#include <src/inet/RawEndPoint.h>

このクラスのオブジェクトは、未加工の IP ネットワーク エンドポイントを表します。

概要

Nest Inet Layer は、IP ネットワーク エンドポイント(Linux および BSD 派生システムの SOCK_RAW ソケット)や LwIP raw プロトコル制御ブロックとやり取りするためのメソッドをカプセル化します(システムの構成は適宜変更されます)。

継承

継承元: nl::Inet::IPEndPointBasis

パブリック属性

IPProto
IPProtocol
インターネット コントロール メッセージ プロトコル(ICMP)のバージョン
IPVer
IPVersion
インターネット プロトコルのバージョン。

パブリック関数

Bind(IPAddressType addrType, IPAddress addr, InterfaceId intfId)
エンドポイントをインターフェース IP アドレスにバインドします。
BindIPv6LinkLocal(InterfaceId intf, IPAddress addr)
未加工のエンドポイントを、指定されたインターフェース インデックスの IPv6 リンクローカル スコープ アドレスにバインドします。
BindInterface(IPAddressType addrType, InterfaceId intf)
エンドポイントをネットワーク インターフェースにバインドします。
Close(void)
void
エンドポイントを閉じます。
Free(void)
void
エンドポイントを閉じてメモリをリサイクルします。
GetBoundInterface(void)
InterfaceId
このエンドポイントのバインドされたインターフェースを取得します。
Listen(void)
ICMP メッセージを受信するようにエンドポイントを準備します。
SendMsg(const IPPacketInfo *pktInfo, Weave::System::PacketBuffer *msg, uint16_t sendFlags)
指定した宛先に ICMP メッセージを送信します。
SendTo(IPAddress addr, Weave::System::PacketBuffer *msg, uint16_t sendFlags)
SendTo(addr, INET_NULL_INTERFACEID, msg, sendFlags) の同義語。
SendTo(IPAddress addr, InterfaceId intfId, Weave::System::PacketBuffer *msg, uint16_t sendFlags)
指定した宛先アドレスに ICMP メッセージを送信します。
SetICMPFilter(uint8_t numICMPTypes, const uint8_t *aICMPTypes)
ネットワーク スタックで ICMP6 フィルタ パラメータを設定します。

パブリック属性

IPProto

IPProtocol IPProto

インターネット コントロール メッセージ プロトコル(ICMP)のバージョン

このフィールドは可変クラス変数ですが、変更できないクラスとは不変です。

IPVer

IPVersion IPVer

インターネット プロトコルのバージョン。

このフィールドは可変クラス変数ですが、変更できないクラスとは不変です。

パブリック関数

バインド

INET_ERROR Bind(
  IPAddressType addrType,
  IPAddress addr,
  InterfaceId intfId
)

エンドポイントをインターフェース IP アドレスにバインドします。

指定されたネットワーク インターフェース IP アドレスにエンドポイントをバインドします。

詳細
パラメータ
[in] addrType
IP アドレスのプロトコル バージョン
[in] addr
IP アドレス(インターフェース アドレスである必要があります)
[in] intfId
オプションのネットワーク インターフェース インジケーター
戻り値
INET_NO_ERROR
成功: エンドポイントがアドレスにバインドされている
INET_ERROR_INCORRECT_STATE
すでにバインドされている
INET_NO_MEMORY
エンドポイントに必要なメモリが不足しています
INET_ERROR_UNKNOWN_INTERFACE
一部のプラットフォームでは、オプションに指定されたインターフェースは存在しません。
INET_ERROR_WRONG_PROTOCOL_TYPE
addrType」は「IPVer」と一致しません。
INET_ERROR_WRONG_ADDRESS_TYPE
addrTypekIPAddressType_Any であるか、addr の型が addrType と等しくありません。
other
別のシステムエラーまたはプラットフォーム エラー

LwIP では、すでに取得されている LwIP スタックロックでこのメソッドを呼び出さないでください。

BindIPv6LinkLocal

INET_ERROR BindIPv6LinkLocal(
  InterfaceId intf,
  IPAddress addr
)

未加工のエンドポイントを、指定されたインターフェース インデックスの IPv6 リンクローカル スコープ アドレスにバインドします。

また、リンク上の宛先との間でパケットを送信するのに適した各種の IPv6 ソケット オプションも設定します。

エンドポイントを、intf で示されるネットワーク インターフェースの IPv6 リンクローカル アドレス addr にバインドします。

詳細
パラメータ
[in] intf
アドレスのスコープを識別する InterfaceId。
[in] addr
IPv6 リンクローカル スコープの IPAddress オブジェクト。
パラメータ
[in] intf
ネットワークインターフェースのインジケーターが
[in] addr
IP アドレス(インターフェース アドレスである必要があります)
戻り値
INET_NO_ERROR
成功: エンドポイントがアドレスにバインドされている
INET_ERROR_INCORRECT_STATE
すでにバインドされている
INET_NO_MEMORY
エンドポイント用のメモリが不足しています
INET_ERROR_WRONG_PROTOCOL_TYPE
addrType」は「IPVer」と一致しません。
INET_ERROR_WRONG_ADDRESS_TYPE
addr が IPv6 リンクローカル アドレスでないか、intfINET_NULL_INTERFACEID です。
other
別のシステムエラーまたはプラットフォーム エラー
戻り値
成功した場合は INET_NO_ERROR、失敗した場合はマッピングされた OS エラー。無効なパラメータ リストを使用すると、INET_ERROR_WRONG_ADDRESS_TYPE が返されることがあります。未加工のエンドポイントがすでにバインドされているか、リッスンしている場合は、INET_ERROR_INCORRECT_STATE を返します。エンドポイントをインターフェース IPv6 リンクローカル アドレスにバインドします。

LwIP では、すでに取得されている LwIP スタックロックでこのメソッドを呼び出さないでください。

BindInterface

INET_ERROR BindInterface(
  IPAddressType addrType,
  InterfaceId intf
)

エンドポイントをネットワーク インターフェースにバインドします。

指定されたネットワーク インターフェース IP アドレスにエンドポイントをバインドします。

詳細
パラメータ
[in] addrType
IP アドレスのプロトコル バージョンです。
[in] intf
ネットワーク インターフェースのインジケーター。
戻り値
INET_NO_ERROR
成功: エンドポイントがアドレスにバインドされている
INET_NO_MEMORY
エンドポイント用のメモリが不足しています
INET_ERROR_NOT_IMPLEMENTED
システム実装が完了していません。
INET_ERROR_UNKNOWN_INTERFACE
一部のプラットフォームでは、このインターフェースは存在しません。
other
別のシステムエラーまたはプラットフォーム エラー

LwIP では、すでに取得されている LwIP スタックロックでこのメソッドを呼び出さないでください。

閉じる

void Close(
  void
)

エンドポイントを閉じます。

mState != kState_Closed の場合、エンドポイントを閉じて、通信イベントの対象となる一連のエンドポイントから削除します。

LwIP システムでは、すでに取得されている LwIP スタックロックでこのメソッドを呼び出さないでください。

無料

void Free(
  void
)

エンドポイントを閉じてメモリをリサイクルします。

Close メソッドを呼び出してから InetLayerBasis::Release メソッドを呼び出して、オブジェクトをメモリプールに返します。

LwIP システムでは、すでに取得されている LwIP スタックロックでこのメソッドを呼び出さないでください。

GetBoundInterface

InterfaceId GetBoundInterface(
  void
)

このエンドポイントのバインドされたインターフェースを取得します。

詳細
戻り値
InterfaceId バインドされたインターフェース ID。

聴く

INET_ERROR Listen(
  void
)

ICMP メッセージを受信するようにエンドポイントを準備します。

mState がすでに kState_Listening になっている場合、オペレーションは実行されません。それ以外の場合は、mStatekState_Listening に設定され、プラットフォームのセマンティクスに従って、ICMPv6 メッセージを受信するようにエンドポイントが準備されます。

詳細
戻り値
INET_NO_ERROR
常に返されます。

LwIP では、すでに取得されている LwIP スタックロックでこのメソッドを呼び出さないでください。

SendMsg

INET_ERROR SendMsg(
  const IPPacketInfo *pktInfo,
  Weave::System::PacketBuffer *msg,
  uint16_t sendFlags
)

指定した宛先に ICMP メッセージを送信します。

 Send the ICMP message \c msg using the destination information given in \c addr.

 Where (sendFlags & kSendFlag_RetainBuffer) != 0, calls
 Weave::System::PacketBuffer::Free on behalf of the caller, otherwise this
 method deep-copies \c msg into a fresh object, and queues that for
 transmission, leaving the original \c msg available after return.

詳細
パラメータ
[in] pktInfo
メッセージの宛先情報
[in] msg
UDP メッセージを含むパケット バッファ
[in] sendFlags
オプションの送信オプション フラグ
戻り値
INET_NO_ERROR
成功: msg が送信のキューに追加されました。
INET_ERROR_NOT_SUPPORTED
システムはリクエストされたオペレーションをサポートしていません。
INET_ERROR_WRONG_ADDRESS_TYPE
宛先アドレスとバインドされたインターフェース アドレスのプロトコル バージョンまたはアドレス タイプが一致しません。
INET_ERROR_MESSAGE_TOO_LONG
msg には ICMP メッセージ全体は含まれません。
INET_ERROR_OUTBOUND_MESSAGE_TRUNCATED
一部のプラットフォームでは、msg の切り捨てられた部分のみが送信キューに追加されていました。
other
別のシステムエラーまたはプラットフォーム エラー

SendTo

INET_ERROR SendTo(
  IPAddress addr,
  Weave::System::PacketBuffer *msg,
  uint16_t sendFlags
)

SendTo(addr, INET_NULL_INTERFACEID, msg, sendFlags) の同義語。

SendTo

INET_ERROR SendTo(
  IPAddress addr,
  InterfaceId intfId,
  Weave::System::PacketBuffer *msg,
  uint16_t sendFlags
)

指定した宛先アドレスに ICMP メッセージを送信します。

 Send the ICMP message in \c msg to the destination given in \c addr.

 Where (sendFlags & kSendFlag_RetainBuffer) != 0, calls
 Weave::System::PacketBuffer::Free on behalf of the caller, otherwise this
 method deep-copies \c msg into a fresh object, and queues that for
 transmission, leaving the original \c msg available after return.

詳細
パラメータ
[in] addr
宛先 IP アドレス
[in] intfId
オプションのネットワーク インターフェース インジケーター
[in] msg
UDP メッセージを含むパケット バッファ
[in] sendFlags
オプションの送信オプション フラグ
戻り値
INET_NO_ERROR
成功: msg が送信のキューに追加されました。
INET_ERROR_NOT_SUPPORTED
システムはリクエストされたオペレーションをサポートしていません。
INET_ERROR_WRONG_ADDRESS_TYPE
宛先アドレスとバインドされたインターフェース アドレスのプロトコル バージョンまたはアドレス タイプが一致しません。
INET_ERROR_MESSAGE_TOO_LONG
msg には ICMP メッセージ全体は含まれません。
INET_ERROR_OUTBOUND_MESSAGE_TRUNCATED
一部のプラットフォームでは、msg の切り捨てられた部分のみが送信キューに追加されていました。
other
別のシステムエラーまたはプラットフォーム エラー

SetICMPFilter

INET_ERROR SetICMPFilter(
  uint8_t numICMPTypes,
  const uint8_t *aICMPTypes
)

ネットワーク スタックで ICMP6 フィルタ パラメータを設定します。

aICMPTypes 内のコードの ICMPv6 フィルタリング パラメータを、システム ネットワーク スタック内の基盤となるエンドポイントに適用します。

詳細
パラメータ
[in] numICMPTypes
aICMPTypes の配列の長さ
[in] aICMPTypes
フィルタする ICMPv6 タイプコードのセット。
戻り値
INET_NO_ERROR
成功: フィルタ パラメータが設定されました
INET_ERROR_NOT_IMPLEMENTED
システムは
INET_ERROR_WRONG_ADDRESS_TYPE
エンドポイントが IPv6 タイプではありません
INET_ERROR_WRONG_PROTOCOL_TYPE
エンドポイントが ICMP6 タイプではありません
other
別のシステムエラーまたはプラットフォーム エラー