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 位元全域網路 ID。
|
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 位元子網路 ID。
|
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 位元,分為四個 32 位元網路位元組已排序的無正負號整數。IPv4 位址為 V4COMPAT,也就是說,前三個字為零,而第四個字詞包含以網路位元組順序排列的 IPv4 位址。
公開靜態屬性
公用函式
GlobalId
uint64_t GlobalId( void ) const
擷取 IPv6 ULA 位址的 16 位元全域網路 ID。
請搭配 IPv6 專屬本機位址 (ULA) 使用這個方法,擷取全域網路 ID,即緊接在 ULA 網路前置字元後的 40 位元,例如「fd00::/8」。換句話說,全域網路 ID 就是從位址中的第 2 個到第 6 個位元組 (共 2 個) 的五個位元組。
詳細說明 | |
---|---|
傳回 |
40 位元全域網路 ID;如果 IP 位址不是 IPv6 專屬本機位址,則為零。
|
InterfaceId
uint64_t InterfaceId( void ) const
擷取 IPv6 ULA 位址的 IID。
這個方法搭配 IPv6 專屬本機位址 (ULA) 來擷取 ID (IID),這是最低位址的 64 位元 ID。
詳細說明 | |
---|---|
傳回 |
64 位元介面 ID;如果 IP 位址不是 IPv6 專屬本機位址,則為零。
|
IsIPv4
bool IsIPv4( void ) const
測試位址是否與 IPv4 相容。
使用此方法檢查此位址是否屬於 IPv4 位址系列。注意:未指定的位址不是 IPv4 位址。
詳細說明 | |||||
---|---|---|---|---|---|
傳回值 |
|
IsIPv4Broadcast
bool IsIPv4Broadcast( void ) const
測試位址是否為 IPv4 廣播。
使用這個方法即可檢查該位址是否為特殊用途的 IPv4 廣播位址。
詳細說明 | |||||
---|---|---|---|---|---|
傳回值 |
|
IsIPv4Multicast
bool IsIPv4Multicast( void ) const
測試位址是否為 IPv4 多播。
請使用這個方法檢查該位址是否為 IPv4 多點傳送位址。
詳細說明 | |||||
---|---|---|---|---|---|
傳回值 |
|
IsIPv6
bool IsIPv6( void ) const
測試位址是否與 IPv6 相容。
請使用這個方法檢查該位址是否屬於 IPv6 位址系列。注意:未指定的位址並非 IPv6 位址。
詳細說明 | |||||
---|---|---|---|---|---|
傳回值 |
|
IsIPv6GlobalUnicast
bool IsIPv6GlobalUnicast( void ) const
測試位址是否為 IPv6 全域單點傳播位址。
請使用這個方法檢查該位址是否屬於 IPv6 位址系列,且具備全域單點傳播位址前置字串。
詳細說明 | |||||
---|---|---|---|---|---|
傳回值 |
|
IsIPv6LinkLocal
bool IsIPv6LinkLocal( void ) const
測試位址是否為 IPv6 連結本機位址 (LL)。
請使用這個方法檢查該位址是否屬於 IPv6 位址系列,且有預留的 IPv6 連結本機位址前置字串。
詳細說明 | |||||
---|---|---|---|---|---|
傳回值 |
|
IsIPv6Multicast
bool IsIPv6Multicast( void ) const
測試位址是否為 IPv6 多播。
請使用這個方法檢查該位址是否屬於 IPv6 位址系列,且是否具有預留的 IPv6 多點傳播位址前置字串。
詳細說明 | |||||
---|---|---|---|---|---|
傳回值 |
|
伊塞凡.6ULA
bool IsIPv6ULA( void ) const
測試位址是否為 IPv6 專屬本機位址 (ULA)。
請使用這個方法檢查該位址是否屬於 IPv6 位址系列,且具備預留的 IPv6 專屬本機位址前置字串。
詳細說明 | |||||
---|---|---|---|---|---|
傳回值 |
|
IsMulticast
bool IsMulticast( void ) const
測試位址為 IPv4 或 IPv6 多播。
請使用這個方法檢查該位址是否屬於 IPv4 或 IPv6 位址系列,且具備預留的 IPv4 或 IPv6 多點傳播位址前置字串。
詳細說明 | |||||
---|---|---|---|---|---|
傳回值 |
|
子網路
uint16_t Subnet( void ) const
擷取 IPv6 ULA 位址的 16 位元子網路 ID。
搭配 IPv6 專屬本機位址 (ULA) 使用這個方法,即可擷取子網路 ID,這個 ID 是網路前置字串最低的 16 位元。網路前置字串是位址最重要的 64 位元。換句話說,子網路 ID 位於 16 位元組位址的第 7 和 8 個位元組中。
詳細說明 | |
---|---|
傳回 |
16 位元子網路 ID;如果 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
的記憶體,並擴充至 bufSize
位元組 (包括 NUL 終止字元)。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
注意:部分平台不符合 RFC 5952 規範。具體而言,根據第 4.2 節,系統可能無法套用零壓縮。
詳細說明 | |
---|---|
傳回 |
沒有格式錯誤時引數
buf ,否則傳回零。 |
類型
IPAddressType Type( void ) const
擷取 IP 位址的類型。
請使用這個方法傳回列舉類型 IPAddressType
的值,表示 IP 位址的類型。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
傳回值 |
|
WriteAddress
void WriteAddress( uint8_t *& p ) const
以標準網路表示法發出 IP 位址。
使用 WriteAddress(uint8_t *&p)
將 IP 位址編碼為 RFC 4291 針對 IPv6 位址定義的二進位格式。IPv4 位址編碼依據為第 2.5.5.1 節「IPv4-相容的 IPv6 位址」(V4COMPAT)。
詳細說明 | |||
---|---|---|---|
參數 |
|
運算子!=
bool operator!=( const IPAddress & other ) const
將此 IP 位址與另一個相等的 IP 位址進行比較。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
運算子=
IPAddress & operator=( const IPAddress & other )
傳統指派運算子。
詳細說明 | |||
---|---|---|---|
參數 |
|
||
傳回 |
對這個物件的參照。
|
運算子==
bool operator==( const IPAddress & other ) const
將這個 IP 位址與其他 IP 位址進行比較,以表示相等。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
公開的靜態函式
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 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 位址。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|
詳細說明 | |||||
---|---|---|---|---|---|
傳回值 |
|
FromString
bool FromString( const char *str, size_t strLen, IPAddress & output )
從常見呈現文字掃描 IP 位址。
使用 FromString(const char *str, size_t strLen, IPAddress& output)
掃描 str
中的傳統文字呈現方式,藉此覆寫 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])
透過 flags
建構 IPv6 多點傳送位址,用於轉送範圍 scope
和群組 ID 八位元 groupId
。
詳細說明 | |
---|---|
傳回 |
建構的 IP 位址。
|
MakeIPv6Multicast
IPAddress MakeIPv6Multicast( uint8_t aFlags, uint8_t aScope, uint32_t aGroupId )
從這些部分建構 IPv6 多點傳播位址,
使用 MakeIPv6Multicast(uint8_t flags, uint8_t scope, uint32_t groupId)
透過 flags
建構 IPv6 多點傳送位址,用於轉送範圍 scope
和群組 ID groupId
。
詳細說明 | |
---|---|
傳回 |
建構的 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)
建構暫時性的 IPv6 多點傳送位址,該位址用於轉送範圍 scope
和群組 ID 八位元 groupId
,並通過長度為 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])
建立暫時性 IPv6 多點傳送位址,搭配 flags
用於轉送範圍 scope
和群組 ID 八位元 groupId
。
詳細說明 | |
---|---|
傳回 |
建構的 IP 位址。
|
MakeIPv6WellKnownMulticast
IPAddress MakeIPv6WellKnownMulticast( uint8_t aScope, uint32_t aGroupId )
從零件建構一個知名的 IPv6 多點傳播位址。
使用 MakeIPv6WellKnownMulticast(uint8_t scope, uint32_t groupId)
建構 IPv6 多點傳送位址,以便用於轉送範圍 scope
和群組 ID groupId
。
詳細說明 | |
---|---|
傳回 |
建構的 IP 位址。
|
MakeLLA
IPAddress MakeLLA( uint64_t interfaceId )
根據 IID 建構 IPv6 連結本機位址 (LL)。
使用 MakeLLA(uint64_t interfaceId)
建構含有介面 ID 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)
以全域網路 ID globalId
、子網路 ID subnet
和介面 ID (IID) interfaceId
建立專屬本機位址 (ULA)。
詳細說明 | |
---|---|
傳回 |
建構的 IP 位址。
|
ReadAddress
void ReadAddress( const uint8_t *& p, IPAddress & output )
以標準網路表示法發出 IP 位址。
使用 ReadAddress(uint8_t *&p, IPAddress &output)
將位於 p
的 IP 位址解碼為 output
物件。
詳細說明 | |||||
---|---|---|---|---|---|
參數 |
|