nl :: Inet :: Địa chỉ IP
#include <src/inet/IPAddress.h>
Địa chỉ giao thức internet.
Tóm lược
Lớp Nest Inet sử dụng các đối tượng của lớp này để đại diện cho địa chỉ giao thức Internet (độc lập với phiên bản giao thức).
Thuộc tính công khai | |
---|---|
Addr [4] | uint32_t Mảng từ mờ để chứa địa chỉ IP (độc lập với phiên bản giao thức) |
Thuộc tính tĩnh công khai | |
---|---|
Any | Đối tượng địa chỉ IP không xác định phân biệt. |
Chức năng công cộng | |
---|---|
GlobalId (void) const | uint64_t Trích xuất mã định danh mạng toàn cầu 16 bit của địa chỉ IPv6 ULA. |
InterfaceId (void) const | uint64_t Trích xuất IID của địa chỉ IPv6 ULA. |
IsIPv4 (void) const | bool Kiểm tra xem địa chỉ có tương thích với IPv4 hay không. |
IsIPv4Broadcast (void) const | bool Kiểm tra xem địa chỉ có phải là quảng bá IPv4 hay không. |
IsIPv4Multicast (void) const | bool Kiểm tra xem địa chỉ có phải là IPv4 multicast hay không. |
IsIPv6 (void) const | bool Kiểm tra xem địa chỉ có tương thích với IPv6 không. |
IsIPv6GlobalUnicast (void) const | bool Kiểm tra xem địa chỉ có phải là địa chỉ unicast toàn cầu IPv6 hay không. |
IsIPv6LinkLocal (void) const | bool Kiểm tra xem địa chỉ có phải là địa chỉ liên kết-cục bộ IPv6 (LL) hay không. |
IsIPv6Multicast (void) const | bool Kiểm tra xem địa chỉ có phải là IPv6 multicast hay không. |
IsIPv6ULA (void) const | bool Kiểm tra xem địa chỉ có phải là địa chỉ cục bộ duy nhất IPv6 (ULA) hay không. |
IsMulticast (void) const | bool Kiểm tra xem địa chỉ là IPv4 hay IPv6 multicast. |
Subnet (void) const | uint16_t Trích xuất mã định danh mạng con 16 bit của địa chỉ IPv6 ULA. |
ToIPv4 (void) const | Trích xuất địa chỉ IPv4 dưới dạng cấu trúc dữ liệu nền tảng. |
ToIPv4 (void) const | struct in_addr |
ToIPv6 (void) const | ip6_addr_t Trích xuất địa chỉ IPv6 dưới dạng cấu trúc dữ liệu nền tảng. |
ToIPv6 (void) const | struct in6_addr |
ToString (char *buf, uint32_t bufSize) const | char * Phát địa chỉ IP ở định dạng trình bày văn bản thông thường. |
Type (void) const | IPAddressType Trích xuất loại địa chỉ IP. |
WriteAddress (uint8_t *& p) const | void Phát địa chỉ IP trong biểu diễn mạng tiêu chuẩn. |
operator!= (const IPAddress & other) const | bool So sánh địa chỉ IP này với địa chỉ IP khác để biết sự không tương đồng. |
operator= (const IPAddress & other) | Toán tử gán thông thường. |
operator== (const IPAddress & other) const | bool So sánh địa chỉ IP này với địa chỉ IP khác để biết sự tương đương. |
Các chức năng tĩnh công khai | |
---|---|
FromIPv4 (const ip4_addr_t & addr) | |
FromIPv4 (const struct in_addr & addr) | Chèn địa chỉ IPv4 từ cấu trúc dữ liệu nền tảng. |
FromIPv6 (const ip6_addr_t & addr) | |
FromIPv6 (const struct in6_addr & addr) | Chèn địa chỉ IPv6 từ cấu trúc dữ liệu nền tảng. |
FromSockAddr (const struct sockaddr & sockaddr) | Tiêm địa chỉ IPv6 từ một POSIX struct sockaddr& |
FromString (const char *str, IPAddress & output) | bool Quét địa chỉ IP từ văn bản trình bày thông thường của nó. |
FromString (const char *str, size_t strLen, IPAddress & output) | bool Quét địa chỉ IP từ văn bản trình bày thông thường của nó. |
MakeIPv4Broadcast (void) | Xây dựng địa chỉ quảng bá IPv4. |
MakeIPv6Multicast (uint8_t aFlags, uint8_t aScope, const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES]) | Xây dựng địa chỉ đa hướng IPv6 từ các bộ phận của nó. |
MakeIPv6Multicast (uint8_t aFlags, uint8_t aScope, uint32_t aGroupId) | Xây dựng địa chỉ đa hướng IPv6 từ các bộ phận của nó. |
MakeIPv6PrefixMulticast (uint8_t aScope, uint8_t aPrefixLength, const uint64_t & aPrefix, uint32_t aGroupId) | Tạo địa chỉ đa hướng IPv6 tiền tố tạm thời từ các bộ phận của nó. |
MakeIPv6TransientMulticast (uint8_t aFlags, uint8_t aScope, const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES]) | Xây dựng địa chỉ đa hướng IPv6 tạm thời từ các bộ phận của nó. |
MakeIPv6WellKnownMulticast (uint8_t aScope, uint32_t aGroupId) | Xây dựng một địa chỉ đa hướng IPv6 nổi tiếng từ các bộ phận của nó. |
MakeLLA (uint64_t interfaceId) | Tạo địa chỉ liên kết cục bộ IPv6 (LL) từ IID của nó. |
MakeULA (uint64_t globalId, uint16_t subnet, uint64_t interfaceId) | Xây dựng địa chỉ cục bộ duy nhất IPv6 (ULA) từ các bộ phận của nó. |
ReadAddress (const uint8_t *& p, IPAddress & output) | void Phát địa chỉ IP trong biểu diễn mạng tiêu chuẩn. |
Thuộc tính công khai
Addr
uint32_t Addr[4]
Mảng từ mờ để chứa địa chỉ IP (độc lập với phiên bản giao thức)
Địa chỉ IPv6 sử dụng tất cả 128 bit được chia thành bốn byte mạng 32 bit có thứ tự số nguyên không dấu. Địa chỉ IPv4 là V4COMPAT, tức là ba từ đầu tiên bằng 0 và từ thứ tư chứa địa chỉ IPv4 theo thứ tự byte mạng.
Thuộc tính tĩnh công khai
Bất kì
IPAddress Any
Đối tượng địa chỉ IP không xác định phân biệt.
Đối tượng này được sử dụng như một hằng số để so sánh tương đương. Người dùng của Lớp Nest Inet không được sửa đổi nó.
Chức năng công cộng
GlobalId
uint64_t GlobalId( void ) const
Trích xuất mã định danh mạng toàn cầu 16 bit của địa chỉ IPv6 ULA.
Sử dụng phương pháp này với địa chỉ cục bộ (ULA) IPv6 để trích xuất mã định danh mạng toàn cầu, là 40 bit ngay sau tiền tố mạng ULA phân biệt, tức là fd00 :: / 8. Nói cách khác, mã định danh mạng toàn cầu nằm trong năm byte từ byte thứ 2 đến byte thứ 6 trong địa chỉ.
Chi tiết | |
---|---|
Lợi nhuận | Số nhận dạng mạng toàn cầu 40 bit hoặc bằng 0 nếu địa chỉ IP không phải là địa chỉ cục bộ duy nhất IPv6. |
InterfaceId
uint64_t InterfaceId( void ) const
Trích xuất IID của địa chỉ IPv6 ULA.
Sử dụng phương pháp này với địa chỉ cục bộ duy nhất IPv6 (ULA) để trích xuất mã định danh nhận dạng (IID), là 64 bit ít quan trọng nhất của địa chỉ.
Chi tiết | |
---|---|
Lợi nhuận | Định danh giao diện 64-bit hoặc bằng 0 nếu địa chỉ IP không phải là địa chỉ cục bộ duy nhất IPv6. |
IsIPv4
bool IsIPv4( void ) const
Kiểm tra xem địa chỉ có tương thích với IPv4 hay không.
Sử dụng phương pháp này để kiểm tra xem địa chỉ có thuộc họ địa chỉ IPv4 hay không. Lưu ý tốt: địa chỉ không xác định không phải là địa chỉ IPv4.
Chi tiết | |||||
---|---|---|---|---|---|
Giá trị trả lại |
|
IsIPv4Broadcast
bool IsIPv4Broadcast( void ) const
Kiểm tra xem địa chỉ có phải là quảng bá IPv4 hay không.
Sử dụng phương pháp này để kiểm tra xem địa chỉ có phải là địa chỉ phát sóng IPv4 cho mục đích đặc biệt hay không.
Chi tiết | |||||
---|---|---|---|---|---|
Giá trị trả lại |
|
IsIPv4Multicast
bool IsIPv4Multicast( void ) const
Kiểm tra xem địa chỉ có phải là IPv4 multicast hay không.
Sử dụng phương pháp này để kiểm tra xem địa chỉ có phải là địa chỉ phát đa hướng IPv4 hay không.
Chi tiết | |||||
---|---|---|---|---|---|
Giá trị trả lại |
|
IsIPv6
bool IsIPv6( void ) const
Kiểm tra xem địa chỉ có tương thích với IPv6 không.
Sử dụng phương pháp này để kiểm tra xem địa chỉ có thuộc họ địa chỉ IPv6 hay không. Lưu ý tốt: địa chỉ không xác định không phải là địa chỉ IPv6.
Chi tiết | |||||
---|---|---|---|---|---|
Giá trị trả lại |
|
IsIPv6GlobalUnicast
bool IsIPv6GlobalUnicast( void ) const
Kiểm tra xem địa chỉ có phải là địa chỉ unicast toàn cầu IPv6 hay không.
Sử dụng phương pháp này để kiểm tra xem địa chỉ có thuộc họ địa chỉ IPv6 và có tiền tố địa chỉ unicast toàn cầu hay không.
Chi tiết | |||||
---|---|---|---|---|---|
Giá trị trả lại |
|
IsIPv6LinkLocal
bool IsIPv6LinkLocal( void ) const
Kiểm tra xem địa chỉ có phải là địa chỉ liên kết-cục bộ IPv6 (LL) hay không.
Sử dụng phương pháp này để kiểm tra xem địa chỉ có thuộc họ địa chỉ IPv6 và có tiền tố địa chỉ liên kết cục bộ IPv6 dành riêng hay không.
Chi tiết | |||||
---|---|---|---|---|---|
Giá trị trả lại |
|
IsIPv6Multicast
bool IsIPv6Multicast( void ) const
Kiểm tra xem địa chỉ có phải là IPv6 multicast hay không.
Sử dụng phương pháp này để kiểm tra xem địa chỉ có thuộc họ địa chỉ IPv6 và có tiền tố địa chỉ multicast IPv6 dành riêng hay không.
Chi tiết | |||||
---|---|---|---|---|---|
Giá trị trả lại |
|
IsIPv6ULA
bool IsIPv6ULA( void ) const
Kiểm tra xem địa chỉ có phải là địa chỉ cục bộ duy nhất IPv6 (ULA) hay không.
Sử dụng phương pháp này để kiểm tra xem địa chỉ có thuộc họ địa chỉ IPv6 và có tiền tố địa chỉ cục bộ IPv6 dành riêng không.
Chi tiết | |||||
---|---|---|---|---|---|
Giá trị trả lại |
|
IsMulticast
bool IsMulticast( void ) const
Kiểm tra xem địa chỉ là IPv4 hay IPv6 multicast.
Sử dụng phương pháp này để kiểm tra xem địa chỉ có thuộc họ địa chỉ IPv4 hoặc IPv6 và có tiền tố địa chỉ multicast IPv4 hoặc IPv6 dành riêng hay không.
Chi tiết | |||||
---|---|---|---|---|---|
Giá trị trả lại |
|
Mạng con
uint16_t Subnet( void ) const
Trích xuất mã định danh mạng con 16 bit của địa chỉ IPv6 ULA.
Sử dụng phương pháp này với địa chỉ cục bộ IPv6 (ULA) để trích xuất mã định danh mạng con, là 16 bit quan trọng nhất của tiền tố mạng. Tiền tố mạng là 64 bit quan trọng nhất của địa chỉ. Nói cách khác, định danh mạng con nằm ở byte thứ 7 và thứ 8 của địa chỉ 16 byte.
Chi tiết | |
---|---|
Lợi nhuận | Định danh mạng con 16-bit hoặc bằng 0 nếu địa chỉ IP không phải là địa chỉ cục bộ duy nhất IPv6. |
ToIPv4
ip4_addr_t ToIPv4( void ) const
Trích xuất địa chỉ IPv4 dưới dạng cấu trúc dữ liệu nền tảng.
Sử dụng ToIPv4() const
để trích xuất các nội dung như một địa chỉ IPv4, nếu có thể. Địa chỉ IPv6 và địa chỉ không xác định được chiết xuất như 0.0.0.0
.
Kết quả là một trong hai loại struct in_addr
(trên POSIX) hoặc ip4_addr_t
(trên LwIP).
Chi tiết | |
---|---|
Lợi nhuận | Địa chỉ IPv4 đóng gói, hoặc 0.0.0.0 nếu địa chỉ là một trong hai không xác định hoặc không phải là một địa chỉ IPv4. |
ToIPv4
struct in_addr ToIPv4( void ) const
ToIPv6
ip6_addr_t ToIPv6( void ) const
Trích xuất địa chỉ IPv6 dưới dạng cấu trúc dữ liệu nền tảng.
Sử dụng ToIPv6() const
để trích xuất các nội dung như địa chỉ IPv6, nếu có thể. Địa chỉ IPv4 và địa chỉ không xác định được chiết xuất như [::]
.
Kết quả là một trong hai loại struct in6_addr
(trên POSIX) hoặc ip6_addr_t
(trên LwIP).
Chi tiết | |
---|---|
Lợi nhuận | Địa chỉ IPv4 đóng gói, hoặc [::] 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
Phát địa chỉ IP ở định dạng trình bày văn bản thông thường.
Sử dụng ToString(char *buf, uint32_t bufSize) const
để viết dưới hình thức trình bày văn bản truyền thống của địa chỉ IP vào bộ nhớ nằm ở buf
và mở rộng càng nhiều càng bufSize
byte, bao gồm ký tự kết thúc NUL của nó.
Chi tiết | |||||
---|---|---|---|---|---|
Thông số |
|
Lưu ý Vâng: không tuân thủ RFC 5952 trên một số nền tảng. Cụ thể, nén bằng không có thể không được áp dụng theo mục 4.2.
Chi tiết | |
---|---|
Lợi nhuận | Đối số buf nếu không có lỗi định dạng, hoặc không có khác. |
Kiểu
IPAddressType Type( void ) const
Trích xuất loại địa chỉ IP.
Sử dụng phương pháp này để trả về một giá trị kiểu liệt kê IPAddressType
để chỉ ra loại địa chỉ IP.
Chi tiết | |||||||
---|---|---|---|---|---|---|---|
Giá trị trả lại |
|
WriteAddress
void WriteAddress( uint8_t *& p ) const
Phát địa chỉ IP trong biểu diễn mạng tiêu chuẩn.
Sử dụng WriteAddress(uint8_t *&p)
để mã hóa địa chỉ IP theo định dạng nhị phân được định nghĩa bởi RFC 4291 cho các địa chỉ IPv6. Địa chỉ IPv4 được mã hóa theo phần 2.5.5.1 "Địa chỉ IPv6 tương thích với IPv4" (V4COMPAT).
Chi tiết | |||
---|---|---|---|
Thông số |
|
toán tử! =
bool operator!=( const IPAddress & other ) const
So sánh địa chỉ IP này với địa chỉ IP khác để biết sự không tương đồng.
Chi tiết | |||||
---|---|---|---|---|---|
Thông số |
| ||||
Giá trị trả lại |
|
toán tử =
IPAddress & operator=( const IPAddress & other )
Toán tử gán thông thường.
Chi tiết | |||
---|---|---|---|
Thông số |
| ||
Lợi nhuận | Tham chiếu đến đối tượng này. |
toán tử ==
bool operator==( const IPAddress & other ) const
So sánh địa chỉ IP này với địa chỉ IP khác để biết sự tương đương.
Chi tiết | |||||
---|---|---|---|---|---|
Thông số |
| ||||
Giá trị trả lại |
|
Các chức năng tĩnh công khai
FromIPv4
IPAddress FromIPv4( const ip4_addr_t & addr )
Đây là một chức năng thành viên quá tải, cung cấp cho thuận tiện. Nó chỉ khác với hàm trên ở (các) đối số mà nó chấp nhận.
FromIPv4
IPAddress FromIPv4( const struct in_addr & addr )
Chèn địa chỉ IPv4 từ cấu trúc dữ liệu nền tảng.
Sử dụng FromIPv4(const ip4_addr_t &addr)
để bơm addr
như một địa chỉ IPv4.
Đối số addr
là một trong hai loại const struct in_addr&
(trên POSIX) hoặc const ip4_addr_t&
(trên LwIP).
Chi tiết | |
---|---|
Lợi nhuận | Địa chỉ IP được tạo. |
FromIPv6
IPAddress FromIPv6( const ip6_addr_t & addr )
Đây là một chức năng thành viên quá tải, cung cấp cho thuận tiện. Nó chỉ khác với hàm trên ở (các) đối số mà nó chấp nhận.
FromIPv6
IPAddress FromIPv6( const struct in6_addr & addr )
Chèn địa chỉ IPv6 từ cấu trúc dữ liệu nền tảng.
Sử dụng FromIPv6(const ip6_addr_t &addr)
để bơm addr
như một địa chỉ IPv6.
Đối số addr
là một trong hai loại const struct in6_addr&
(trên POSIX) hoặc const ip6_addr_t&
(trên LwIP).
Chi tiết | |
---|---|
Lợi nhuận | Địa chỉ IP được tạo. |
FromSockAddr
IPAddress FromSockAddr( const struct sockaddr & sockaddr )
Tiêm địa chỉ IPv6 từ một POSIX struct sockaddr&
Sử dụng FromSockAddr(const struct sockaddr& sockaddr)
để bơm sockaddr.sa_addr
như một địa chỉ IPv6.
Chi tiết | |
---|---|
Lợi nhuận | Địa chỉ IP được tạo. |
FromString
bool FromString( const char *str, IPAddress & output )
Quét địa chỉ IP từ văn bản trình bày thông thường của nó.
Sử dụng FromString(const char *str, IPAddress& output)
để ghi đè lên một địa chỉ IP bằng cách quét các trình bày văn bản thông thường nằm ở str
.
Chi tiết | |||||
---|---|---|---|---|---|
Thông số |
|
Chi tiết | |||||
---|---|---|---|---|---|
Giá trị trả lại |
|
FromString
bool FromString( const char *str, size_t strLen, IPAddress & output )
Quét địa chỉ IP từ văn bản trình bày thông thường của nó.
Sử dụng FromString(const char *str, size_t strLen, IPAddress& output)
để ghi đè lên một địa chỉ IP bằng cách quét các trình bày văn bản thông thường nằm ở str
.
Chi tiết | |||||||
---|---|---|---|---|---|---|---|
Thông số |
|
Chi tiết | |||||
---|---|---|---|---|---|
Giá trị trả lại |
|
MakeIPv4Broadcast
IPAddress MakeIPv4Broadcast( void )
Xây dựng địa chỉ quảng bá IPv4.
Chi tiết | |
---|---|
Lợi nhuận | Địa chỉ IP được tạo. |
MakeIPv6Multicast
IPAddress MakeIPv6Multicast( uint8_t aFlags, uint8_t aScope, const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES] )
Xây dựng địa chỉ đa hướng IPv6 từ các bộ phận của nó.
Sử dụng MakeIPv6Multicast(uint8_t flags, uint8_t scope, uint8_t groupId[14])
để xây dựng một địa chỉ multicast IPv6 với flags
cho định tuyến phạm vi scope
và octet nhận dạng nhóm groupId
.
Chi tiết | |
---|---|
Lợi nhuận | Địa chỉ IP được tạo. |
MakeIPv6Multicast
IPAddress MakeIPv6Multicast( uint8_t aFlags, uint8_t aScope, uint32_t aGroupId )
Xây dựng địa chỉ đa hướng IPv6 từ các bộ phận của nó.
Sử dụng MakeIPv6Multicast(uint8_t flags, uint8_t scope, uint32_t groupId)
để xây dựng một địa chỉ multicast IPv6 với flags
cho định tuyến phạm vi scope
và nhóm định danh groupId
.
Chi tiết | |
---|---|
Lợi nhuận | Địa chỉ IP được tạo. |
MakeIPv6PrefixMulticast
IPAddress MakeIPv6PrefixMulticast( uint8_t aScope, uint8_t aPrefixLength, const uint64_t & aPrefix, uint32_t aGroupId )
Tạo địa chỉ đa hướng IPv6 tiền tố tạm thời từ các bộ phận của nó.
Sử dụng MakeIPv6PrefixMulticast(uint8_t scope, uint8_t prefixlen, const uint64_t prefix, uint32_t groupId)
để xây dựng một thoáng qua, tiền tố IPv6 multicast địa chỉ với định tuyến phạm vi scope
và octet nhận dạng nhóm groupId
, trình độ của các tiền tố prefix
có độ dài prefixlen
bit.
Chi tiết | |
---|---|
Lợi nhuận | Địa chỉ IP được tạo. |
MakeIPv6TransientMulticast
IPAddress MakeIPv6TransientMulticast( uint8_t aFlags, uint8_t aScope, const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES] )
Xây dựng địa chỉ đa hướng IPv6 tạm thời từ các bộ phận của nó.
Sử dụng MakeIPv6TransientMulticast(uint8_t flags, uint8_t scope, uint8_t groupId[14])
để xây dựng một thoáng IPv6 multicast địa chỉ với flags
cho định tuyến phạm vi scope
và octet nhận dạng nhóm groupId
.
Chi tiết | |
---|---|
Lợi nhuận | Địa chỉ IP được tạo. |
MakeIPv6WellKnownMulticast
IPAddress MakeIPv6WellKnownMulticast( uint8_t aScope, uint32_t aGroupId )
Xây dựng một địa chỉ đa hướng IPv6 nổi tiếng từ các bộ phận của nó.
Sử dụng MakeIPv6WellKnownMulticast(uint8_t scope, uint32_t groupId)
để xây dựng một địa chỉ multicast IPv6 cho định tuyến phạm vi scope
và nhóm định danh groupId
.
Chi tiết | |
---|---|
Lợi nhuận | Địa chỉ IP được tạo. |
MakeLLA
IPAddress MakeLLA( uint64_t interfaceId )
Tạo địa chỉ liên kết cục bộ IPv6 (LL) từ IID của nó.
Sử dụng MakeLLA(uint64_t interfaceId)
để xây dựng một địa chỉ link-local IPv6 (LL) với giao diện định danh interfaceId
.
Chi tiết | |
---|---|
Lợi nhuận | Địa chỉ IP được tạo. |
MakeULA
IPAddress MakeULA( uint64_t globalId, uint16_t subnet, uint64_t interfaceId )
Xây dựng địa chỉ cục bộ duy nhất IPv6 (ULA) từ các bộ phận của nó.
Sử dụng MakeULA(uint64_t globalId, uint16_t subnet, uint64_t interfaceId)
để xây dựng một địa chỉ duy nhất địa phương (Ula) với mạng lưới toàn cầu nhận dạng globalId
, subnet định subnet
và giao diện định danh (IID) interfaceId
.
Chi tiết | |
---|---|
Lợi nhuận | Địa chỉ IP được tạo. |
ReadAddress
void ReadAddress( const uint8_t *& p, IPAddress & output )
Phát địa chỉ IP trong biểu diễn mạng tiêu chuẩn.
Sử dụng ReadAddress(uint8_t *&p, IPAddress &output)
để giải mã địa chỉ IP tại p
đến đối tượng output
.
Chi tiết | |||||
---|---|---|---|---|---|
Thông số |
|