nl::Inet::IPAddress

#include <src/inet/IPAddress.h>

インターネット プロトコル アドレス。

概要

Nest Inet レイヤは、このクラスのオブジェクトを使用して、(プロトコル バージョンとは無関係に)インターネット プロトコル アドレスを表します。

パブリック属性

Addr[4]
uint32_t
IP アドレスを格納する不透明な単語配列(プロトコル バージョンとは無関係)

公開静的属性

Any
識別された未指定の IP アドレス オブジェクト。

パブリック関数

GlobalId(void) const
uint64_t
IPv6 ULA アドレスの 16 ビット グローバル ネットワーク識別子を抽出します。
InterfaceId(void) const
uint64_t
IPv6 ULA アドレスの IID を抽出します。
IsIPv4(void) const
bool
アドレスが IPv4 と互換性があるかどうかをテストします。
IsIPv4Broadcast(void) const
bool
アドレスが IPv4 ブロードキャストかどうかをテストします。
IsIPv4Multicast(void) const
bool
アドレスが IPv4 マルチキャストかどうかをテストします。
IsIPv6(void) const
bool
アドレスが IPv6 と互換性があるかどうかをテストします。
IsIPv6GlobalUnicast(void) const
bool
アドレスが IPv6 グローバル ユニキャスト アドレスであるかどうかをテストします。
IsIPv6LinkLocal(void) const
bool
アドレスが IPv6 リンクローカル アドレス(LL)かどうかをテストします。
IsIPv6Multicast(void) const
bool
アドレスが IPv6 マルチキャストかどうかをテストします。
IsIPv6ULA(void) const
bool
アドレスが IPv6 の一意ローカル アドレス(ULA)かどうかをテストします。
IsMulticast(void) const
bool
アドレスが IPv4 と IPv6 のマルチキャストのどちらであるかをテストします。
Subnet(void) const
uint16_t
IPv6 ULA アドレスの 16 ビットサブネット識別子を抽出します。
ToIPv4(void) const
IPv4 アドレスをプラットフォーム データ構造として抽出します。
ToIPv4(void) const
struct in_addr
ToIPv6(void) const
ip6_addr_t
IPv6 アドレスをプラットフォーム データ構造として抽出します。
ToIPv6(void) const
struct in6_addr
ToString(char *buf, uint32_t bufSize) const
char *
標準のテキスト表示形式で IP アドレスを出力します。
Type(void) const
IPAddressType
IP アドレスの種類を抽出します。
WriteAddress(uint8_t *& p) const
void
標準的なネットワーク表現で IP アドレスを出力します。
operator!=(const IPAddress & other) const
bool
この IP アドレスを別の IP アドレスと比較し、同等でないことを確認します。
operator=(const IPAddress & other)
従来の代入演算子。
operator==(const IPAddress & other) const
bool
この IP アドレスを別の IP アドレスと比較してください。

静的パブリック関数

FromIPv4(const ip4_addr_t & addr)
FromIPv4(const struct in_addr & addr)
プラットフォーム データ構造から IPv4 アドレスを挿入します。
FromIPv6(const ip6_addr_t & addr)
FromIPv6(const struct in6_addr & addr)
プラットフォーム データ構造から IPv6 アドレスを挿入します。
FromSockAddr(const struct sockaddr & sockaddr)
POSIX struct sockaddr& から IPv6 アドレスを挿入する
FromString(const char *str, IPAddress & output)
bool
従来の表示テキストから IP アドレスをスキャンします。
FromString(const char *str, size_t strLen, IPAddress & output)
bool
従来の表示テキストから IP アドレスをスキャンします。
MakeIPv4Broadcast(void)
IPv4 ブロードキャスト アドレスを作成します。
MakeIPv6Multicast(uint8_t aFlags, uint8_t aScope, const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES])
IPv6 マルチキャスト アドレスをその部分から構成します。
MakeIPv6Multicast(uint8_t aFlags, uint8_t aScope, uint32_t aGroupId)
IPv6 マルチキャスト アドレスをその部分から構成します。
MakeIPv6PrefixMulticast(uint8_t aScope, uint8_t aPrefixLength, const uint64_t & aPrefix, uint32_t aGroupId)
その部分から一時的なプレフィックス IPv6 マルチキャスト アドレスを作成します。
MakeIPv6TransientMulticast(uint8_t aFlags, uint8_t aScope, const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES])
その部分から一時的な IPv6 マルチキャスト アドレスを作成します。
MakeIPv6WellKnownMulticast(uint8_t aScope, uint32_t aGroupId)
その部分から、既知の IPv6 マルチキャスト アドレスを作成します。
MakeLLA(uint64_t interfaceId)
IID から IPv6 リンクローカル アドレス(LL)を作成します。
MakeULA(uint64_t globalId, uint16_t subnet, uint64_t interfaceId)
IPv6 の一意ローカル アドレス(ULA)をその部分から作成します。
ReadAddress(const uint8_t *& p, IPAddress & output)
void
標準的なネットワーク表現で IP アドレスを出力します。

パブリック属性

アドレス

uint32_t Addr[4]

IP アドレスを格納する不透明な単語配列(プロトコル バージョンとは無関係)

IPv6 アドレスは、128 ビットすべてを 4 つの 32 ビット ネットワーク バイトの順序付き符号なし整数に分割して使用します。IPv4 アドレスは V4COMPAT です。つまり、最初の 3 ワードはゼロで、4 番目のワードにはネットワーク バイト順の IPv4 アドレスが含まれます。

公開静的属性

指定なし

IPAddress Any

識別された未指定の IP アドレス オブジェクト。

このオブジェクトは、等価比較のための定数として使用されます。Nest Inet レイヤのユーザーはこれを変更しないでください。

パブリック関数

GlobalId

uint64_t GlobalId(
  void
) const 

IPv6 ULA アドレスの 16 ビット グローバル ネットワーク識別子を抽出します。

この方法と IPv6 のユニーク ローカル アドレス(ULA)を使用して、グローバル ネットワーク識別子を抽出します。グローバル ネットワーク識別子は、識別された ULA ネットワーク プレフィックスの直後の 40 ビットです(fd00::/8)。つまり、グローバル ネットワーク識別子は、アドレスの 2 バイト目から 6 バイト目までの 5 バイトにあります。

詳細
戻り値
40 ビットのグローバル ネットワーク識別子、または IP アドレスが IPv6 の一意のローカル アドレスでない場合はゼロ。

InterfaceId

uint64_t InterfaceId(
  void
) const 

IPv6 ULA アドレスの IID を抽出します。

この方法は、IPv6 のユニーク ローカル アドレス(ULA)とともに使用して、アドレスの最下位の 64 ビットである識別子識別子(IID)を抽出します。

詳細
戻り値
64 ビット インターフェース識別子、または IP アドレスが IPv6 の一意のローカル アドレスでない場合はゼロ。

IsIPv4

bool IsIPv4(
  void
) const 

アドレスが IPv4 と互換性があるかどうかをテストします。

この方法は、アドレスが IPv4 アドレス ファミリーに属しているかどうかを確認するために使用します。未指定のアドレスは IPv4 アドレスではありません。

詳細
戻り値
true
アドレスは IPv4 であり、未指定のアドレスではありません。
false
アドレスが IPv6 または未指定のアドレス。

IsIPv4Broadcast

bool IsIPv4Broadcast(
  void
) const 

アドレスが IPv4 ブロードキャストかどうかをテストします。

この方法を使用して、アドレスが専用 IPv4 ブロードキャスト アドレスかどうかを確認できます。

詳細
戻り値
true
アドレスは IPv4 ブロードキャストです
false
その他

IsIPv4Multicast

bool IsIPv4Multicast(
  void
) const 

アドレスが IPv4 マルチキャストかどうかをテストします。

この方法は、アドレスが IPv4 マルチキャスト アドレスかどうかを確認できます。

詳細
戻り値
true
アドレスは IPv4 マルチキャストです
false
その他

IsIPv6

bool IsIPv6(
  void
) const 

アドレスが IPv6 と互換性があるかどうかをテストします。

この方法は、アドレスが IPv6 アドレス ファミリーに属しているかどうかを確認するために使用します。未指定のアドレスは IPv6 アドレスではありません。

詳細
戻り値
true
アドレスは IPv6 であり、未指定のアドレスではありません。
false
アドレスが IPv4 または未指定のアドレス。

IsIPv6GlobalUnicast

bool IsIPv6GlobalUnicast(
  void
) const 

アドレスが IPv6 グローバル ユニキャスト アドレスであるかどうかをテストします。

この方法を使用して、アドレスが IPv6 アドレス ファミリーに属し、グローバル ユニキャスト アドレス プレフィックスがあるかどうかを確認します。

詳細
戻り値
true
アドレスが IPv6 グローバル ユニキャスト
false
その他

IsIPv6LinkLocal

bool IsIPv6LinkLocal(
  void
) const 

アドレスが IPv6 リンクローカル アドレス(LL)かどうかをテストします。

この方法は、アドレスが IPv6 アドレス ファミリーに属し、予約済みの IPv6 リンクローカル アドレス プレフィックスがあるかどうかを確認するために使用します。

詳細
戻り値
true
アドレスが IPv6 リンクローカル
false
その他

IsIPv6Multicast

bool IsIPv6Multicast(
  void
) const 

アドレスが IPv6 マルチキャストかどうかをテストします。

この方法は、アドレスが IPv6 アドレス ファミリーに属し、予約済みの IPv6 マルチキャスト アドレス接頭辞があるかどうかを確認します。

詳細
戻り値
true
アドレスが IPv6 マルチキャストです
false
その他

IsIPv6ULA

bool IsIPv6ULA(
  void
) const 

アドレスが IPv6 の一意ローカル アドレス(ULA)かどうかをテストします。

この方法は、アドレスが IPv6 アドレス ファミリーに属し、予約済みの IPv6 の一意のローカル アドレスの接頭辞があるかどうかを確認します。

詳細
戻り値
true
アドレスは IPv6(ユニークローカル)です
false
その他

IsMulticast

bool IsMulticast(
  void
) const 

アドレスが IPv4 と IPv6 のマルチキャストのどちらであるかをテストします。

この方法は、アドレスが IPv4 または IPv6 アドレス ファミリーに属し、予約済みの IPv4 または IPv6 マルチキャスト アドレス プレフィックスがあるかどうかを確認するために使用します。

詳細
戻り値
true
アドレスが IPv4 または IPv6 マルチキャストである
false
その他

サブネット

uint16_t Subnet(
  void
) const 

IPv6 ULA アドレスの 16 ビットサブネット識別子を抽出します。

この方法では、IPv6 の一意ローカル アドレス(ULA)を指定して、サブネット識別子(ネットワーク プレフィックスの最下位の 16 ビット)を抽出します。ネットワーク プレフィックスは、アドレスの上位 64 ビットです。つまり、サブネット識別子は 16 バイトのアドレスの 7 バイト目と 8 バイト目に配置されます。

詳細
戻り値
16 ビットのサブネット識別子、または IP アドレスが IPv6 の一意のローカル アドレスでない場合はゼロ。

ToIPv4

ip4_addr_t ToIPv4(
  void
) const 

IPv4 アドレスをプラットフォーム データ構造として抽出します。

可能であれば、ToIPv4() const を使用してコンテンツを IPv4 アドレスとして抽出します。IPv6 アドレスと未指定のアドレスは 0.0.0.0 として抽出されます。

結果は struct in_addr(POSIX)または ip4_addr_t(LwIP)のいずれかになります。

詳細
戻り値
カプセル化された IPv4 アドレス。アドレスが指定されていない場合や IPv4 アドレスでない場合は 0.0.0.0

ToIPv4

struct in_addr ToIPv4(
  void
) const 

ToIPv6

ip6_addr_t ToIPv6(
  void
) const 

IPv6 アドレスをプラットフォーム データ構造として抽出します。

可能であれば、ToIPv6() const を使用してコンテンツを IPv6 アドレスとして抽出します。IPv4 アドレスと未指定のアドレスは [::] として抽出されます。

結果は struct in6_addr(POSIX)または ip6_addr_t(LwIP)のいずれかになります。

詳細
戻り値
カプセル化された IPv4 アドレス、または [::] if the address is either unspecified or not an IPv4 address.

ToIPv6

struct in6_addr ToIPv6(
  void
) const 

ToString

char * ToString(
  char *buf,
  uint32_t bufSize
) const 

標準のテキスト表示形式で IP アドレスを出力します。

ToString(char *buf, uint32_t bufSize) const を使用して、buf に配置されたメモリに従来のテキスト表示形式の IP アドレスを書き込みます。このメモリは NUL 終端文字を含めて最大 bufSize バイトまで拡張します。

詳細
パラメータ
[out] buf
出力されたテキストのアドレス。
[in] bufSize
出力されたテキストのバッファのサイズ。

注: プラットフォームによっては、RFC 5952 を遵守していません。具体的には、セクション 4.2 に従い、ゼロ圧縮が適用されない場合があります。

詳細
戻り値
引数 buf(フォーマット エラーがない場合)、それ以外の場合はゼロ。

種類

IPAddressType Type(
  void
) const 

IP アドレスの種類を抽出します。

このメソッドを使用して、IP アドレスのタイプを示す列挙型 IPAddressType の値を返します。

詳細
戻り値
kIPAddressType_IPv4
アドレスは IPv4。
kIPAddressType_IPv6
アドレスは IPv6。
kIPAddressType_Any
このアドレスは未指定のアドレスです。

WriteAddress

void WriteAddress(
  uint8_t *& p
) const 

標準的なネットワーク表現で IP アドレスを出力します。

WriteAddress(uint8_t *&p) を使用して、RFC 4291 で規定されているバイナリ形式で IP アドレスを IPv6 アドレスにエンコードします。IPv4 アドレスは、セクション 2.5.5.1「IPv4 互換 IPv6 アドレス」(V4COMPAT)に従ってエンコードされます。

詳細
パラメータ
[in,out] p
書き込みに使用するカーソルの参照。

演算子「!=」を使用する

bool operator!=(
  const IPAddress & other
) const 

この IP アドレスを別の IP アドレスと比較し、同等でないことを確認します。

詳細
パラメータ
[in] other
比較する住所。
戻り値
true
other と等しい場合
false
その他

演算子=

IPAddress & operator=(
  const IPAddress & other
)

従来の代入演算子。

詳細
パラメータ
[in] other
コピーする住所。
戻り値
このオブジェクトへの参照。

演算子==

bool operator==(
  const IPAddress & other
) const 

この IP アドレスを別の IP アドレスと比較してください。

詳細
パラメータ
[in] other
比較する住所。
戻り値
true
other と等しい場合
false
その他

静的パブリック関数

FromIPv4

IPAddress FromIPv4(
  const ip4_addr_t & addr
)

これは、利便性のために提供されているオーバーロードのメンバー関数です。上記の関数と異なるのは、受け入れる引数だけです。

FromIPv4

IPAddress FromIPv4(
  const struct in_addr & addr
)

プラットフォーム データ構造から IPv4 アドレスを挿入します。

FromIPv4(const ip4_addr_t &addr) を使用して、addr を IPv4 アドレスとして挿入します。

引数 addr は、const struct in_addr&(POSIX の場合)または const ip4_addr_t&(LwIP の場合)のいずれか型です。

詳細
戻り値
構成された IP アドレス。

FromIPv6

IPAddress FromIPv6(
  const ip6_addr_t & addr
)

これは、利便性のために提供されているオーバーロードのメンバー関数です。上記の関数と異なるのは、受け入れる引数だけです。

FromIPv6

IPAddress FromIPv6(
  const struct in6_addr & addr
)

プラットフォーム データ構造から IPv6 アドレスを挿入します。

FromIPv6(const ip6_addr_t &addr) を使用して、addr を IPv6 アドレスとして挿入します。

引数 addr は、const struct in6_addr&(POSIX の場合)または const ip6_addr_t&(LwIP の場合)のいずれか型です。

詳細
戻り値
構成された IP アドレス。

FromSockAddr

IPAddress FromSockAddr(
  const struct sockaddr & sockaddr
)

POSIX struct sockaddr& から IPv6 アドレスを挿入する

FromSockAddr(const struct sockaddr& sockaddr) を使用して、sockaddr.sa_addr を IPv6 アドレスとして挿入します。

詳細
戻り値
構成された IP アドレス。

FromString

bool FromString(
  const char *str,
  IPAddress & output
)

従来の表示テキストから IP アドレスをスキャンします。

FromString(const char *str, IPAddress& output) を使用して、str にある従来のテキスト表示をスキャンして IP アドレスを上書きします。

詳細
パラメータ
[in] str
出力されたテキストのアドレス。
[out] output
スキャンされた住所に設定するオブジェクト。

詳細
戻り値
true
プレゼンテーションの形式は有効です
false
その他

FromString

bool FromString(
  const char *str,
  size_t strLen,
  IPAddress & output
)

従来の表示テキストから IP アドレスをスキャンします。

FromString(const char *str, size_t strLen, IPAddress& output) を使用して、str にある従来のテキスト表示をスキャンして IP アドレスを上書きします。

詳細
パラメータ
[in] str
スキャンされるテキストへのポインタ。
[in] strLen
スキャンするテキストの長さ。
[out] output
スキャンされた住所に設定するオブジェクト。

詳細
戻り値
true
プレゼンテーションの形式は有効です
false
その他

MakeIPv4Broadcast

IPAddress MakeIPv4Broadcast(
  void
)

IPv4 ブロードキャスト アドレスを作成します。

詳細
戻り値
構成された IP アドレス。

MakeIPv6Multicast

IPAddress MakeIPv6Multicast(
  uint8_t aFlags,
  uint8_t aScope,
  const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES]
)

IPv6 マルチキャスト アドレスをその部分から構成します。

MakeIPv6Multicast(uint8_t flags, uint8_t scope, uint8_t groupId[14]) を使用して、ルーティング スコープ scope とグループ識別子オクテット groupIdflags を含む IPv6 マルチキャスト アドレスを作成します。

詳細
戻り値
構成された IP アドレス。

MakeIPv6Multicast

IPAddress MakeIPv6Multicast(
  uint8_t aFlags,
  uint8_t aScope,
  uint32_t aGroupId
)

IPv6 マルチキャスト アドレスをその部分から構成します。

MakeIPv6Multicast(uint8_t flags, uint8_t scope, uint32_t groupId) を使用して、ルーティング スコープ scope とグループ識別子 groupIdflags を含む IPv6 マルチキャスト アドレスを作成します。

詳細
戻り値
構成された IP アドレス。

MakeIPv6PrefixMulticast

IPAddress MakeIPv6PrefixMulticast(
  uint8_t aScope,
  uint8_t aPrefixLength,
  const uint64_t & aPrefix,
  uint32_t aGroupId
)

その部分から一時的なプレフィックス IPv6 マルチキャスト アドレスを作成します。

MakeIPv6PrefixMulticast(uint8_t scope, uint8_t prefixlen, const uint64_t prefix, uint32_t groupId) を使用して、ルーティング スコープ scope とグループ識別子オクテット groupId の一時的なプレフィックス IPv6 マルチキャスト アドレスを作成します。これは、長さ prefixlen ビットのプレフィックス prefix で修飾されます。

詳細
戻り値
構成された IP アドレス。

MakeIPv6TransientMulticast

IPAddress MakeIPv6TransientMulticast(
  uint8_t aFlags,
  uint8_t aScope,
  const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES]
)

その部分から一時的な IPv6 マルチキャスト アドレスを作成します。

MakeIPv6TransientMulticast(uint8_t flags, uint8_t scope, uint8_t groupId[14]) を使用して、ルーティング スコープ scope とグループ識別子オクテット groupIdflags を含む一時的な IPv6 マルチキャスト アドレスを作成します。

詳細
戻り値
構成された IP アドレス。

MakeIPv6WellKnownMulticast

IPAddress MakeIPv6WellKnownMulticast(
  uint8_t aScope,
  uint32_t aGroupId
)

その部分から、既知の IPv6 マルチキャスト アドレスを作成します。

MakeIPv6WellKnownMulticast(uint8_t scope, uint32_t groupId) を使用して、ルーティング スコープ scope とグループ識別子 groupId の IPv6 マルチキャスト アドレスを作成します。

詳細
戻り値
構成された IP アドレス。

MakeLLA

IPAddress MakeLLA(
  uint64_t interfaceId
)

IID から IPv6 リンクローカル アドレス(LL)を作成します。

MakeLLA(uint64_t interfaceId) を使用して、インターフェース識別子が interfaceId の IPv6 リンクローカル アドレス(LL)を作成します。

詳細
戻り値
構成された IP アドレス。

MakeULA

IPAddress MakeULA(
  uint64_t globalId,
  uint16_t subnet,
  uint64_t interfaceId
)

IPv6 の一意ローカル アドレス(ULA)をその部分から作成します。

MakeULA(uint64_t globalId, uint16_t subnet, uint64_t interfaceId) を使用して、グローバル ネットワーク識別子 globalId、サブネット識別子 subnet、インターフェース識別子(IID)interfaceId の一意ローカル アドレス(ULA)を作成します。

詳細
戻り値
構成された IP アドレス。

ReadAddress

void ReadAddress(
  const uint8_t *& p,
  IPAddress & output
)

標準的なネットワーク表現で IP アドレスを出力します。

ReadAddress(uint8_t *&p, IPAddress &output) を使用して、p の IP アドレスをオブジェクト output にデコードします。

詳細
パラメータ
[in,out] p
読み取りに使用するカーソルの参照。
[out] output
デコードされた IP アドレスを受け取るオブジェクト。