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 位址。
|
公開屬性
Addr
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、2 到第 6 個位元組的五個位元組。
詳細資料 | |
---|---|
傳回 |
40 位元全球網路 ID;如果 IP 位址不是 IPv6 專屬本機位址,則為零。
|
InterfaceId
uint64_t InterfaceId( void ) const
擷取 IPv6 ULA 位址的 IID。
這個方法可搭配 IPv6 專屬本機位址 (ULA) 使用,以擷取 ID 識別碼 (IID),也就是位址的最小有效 64 位元。
詳細資料 | |
---|---|
傳回 |
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 多點傳送位址前置字元。
詳細資料 | |||||
---|---|---|---|---|---|
傳回值 |
|
IsIPv6ULA
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 位址。依據第 2.5.5.1 節「IPv4 相容」一節的 IPv4 位址編碼
IPv6 位址」(V4COMPAT)。
詳細資料 | |||
---|---|---|---|
參數 |
|
operator!=
bool operator!=( const IPAddress & other ) const
比較這個 IP 位址和其他不等式的 IP 位址。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
operator=
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])
建構含有 flags
的暫時性 IPv6 多點傳播位址,用於轉送範圍 scope
和群組 ID 八位元次 groupId
。
詳細資料 | |
---|---|
傳回 |
建構的 IP 位址。
|
MakeIPv6WellKnownMulticast
IPAddress MakeIPv6WellKnownMulticast( uint8_t aScope, uint32_t aGroupId )
從零件中建構已知的 IPv6 多點傳送位址。
使用 MakeIPv6WellKnownMulticast(uint8_t scope, uint32_t groupId)
為轉送範圍 scope
和群組 ID groupId
建構 IPv6 多點傳播位址。
詳細資料 | |
---|---|
傳回 |
建構的 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
。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|