Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

nl::Inet::RawEndPoint

#include <src/inet/RawEndPoint.h>

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

まとめ

Google 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
addrTypeIPVer と一致しません。
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
addrTypeIPVer と一致しません。
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 スタックロックを使用してこのメソッドを呼び出すことはできません

送信メッセージ

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
別のシステムまたはプラットフォーム エラー

送り先

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

SendTo(addr, INET_NULL_INTERFACEID, msg, sendFlags) と同義。

送り先

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
別のシステムまたはプラットフォーム エラー