nl::Inet::IPAddress

#include <src/inet/IPAddress.h>

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

概要

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

パブリック属性

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 アドレスを出力する。

パブリック属性

Addr

uint32_t Addr[4]

(プロトコルのバージョンに依存しない)IP アドレスを含む不透明な単語配列

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

公開静的属性

すべて

IPAddress Any

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

このオブジェクトは、等価比較で定数として使用されます。Google Nest レイヤのユーザーが変更することはできません。

パブリック関数

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)とともに使用して、識別子識別子(IID)を抽出します。IID は、アドレスの最下位 64 ビットです。

詳細
戻り値
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 を使用して、従来のテキスト表現形式の IP アドレスを buf にあるメモリに書き込みます。このメモリは、NUL 終端文字を含めて bufSize バイトまで拡張します。

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

注: 一部のプラットフォームでは RFC 5952 に準拠していません。具体的には、セクション 4.2 に従ってゼロ圧縮を適用することはできません。

詳細
戻り値
引数。書式設定エラーがない場合は buf、それ以外の場合は 0。

タイプ

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) を使用して、IPv6 アドレス用に RFC 4291 で定義されているバイナリ形式で IP アドレスをエンコードします。IPv4 アドレスは、セクション 2.5.5.1「IPv4 互換」に従ってエンコードされます。 IPv6 アドレス"(V4COMPAT)。

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

operator!=

bool operator!=(
  const IPAddress & other
) const 

この IP アドレスを他の IP アドレスと比較し、等しくないかどうかを確認します。

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

operator=

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 とグループ識別子オクテット groupId に対して flags を使用して 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 とグループ ID 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(長さ prefixlen ビットの接頭辞 prefix で修飾される)の一時的な IPv6 マルチキャスト アドレスを作成します。

詳細
戻り値
作成された 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 アドレスを受け取るオブジェクト。