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。
| 詳細資料 | |||||
|---|---|---|---|---|---|
| 參數 |
|
||||