nl::Inet::RawEndPoint

#include <src/inet/RawEndPoint.h>

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

概要

Nest Inet Layer は、IP ネットワーク エンドポイント(Linux や BSD 由来のシステムの SOCK_RAW ソケット)または LwIP RAW プロトコル コントロール ブロック(システムが適切に構成されている場合)とやり取りするためのメソッドをカプセル化します。

継承

継承元: nl::Inet::IPEndPointBasis

パブリック属性

IPProto
IPProtocol
Internet Control Message Protocol(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

Internet Control Message Protocol(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
Kubernetes は
INET_ERROR_WRONG_ADDRESS_TYPE
エンドポイントが IPv6 タイプではありません
INET_ERROR_WRONG_PROTOCOL_TYPE
エンドポイントが ICMP6 ではありません
other
別のシステムまたはプラットフォームのエラーです