nl::Inet::IPAddress

#include <src/inet/IPAddress.h>

Alamat protokol internet.

Ringkasan

Nest Inet Layer menggunakan objek dalam class ini untuk mewakili alamat protokol Internet (terlepas dari versi protokol).

Atribut publik

Addr[4]
uint32_t
Array kata buram untuk memuat alamat IP (terlepas dari versi protokol)

Atribut statis publik

Any
Objek alamat IP yang tidak ditentukan dan dibedakan.

Fungsi publik

GlobalId(void) const
uint64_t
Ekstrak ID jaringan global 16-bit dari alamat ULA IPv6.
InterfaceId(void) const
uint64_t
Ekstrak IID dari alamat ULA IPv6.
IsIPv4(void) const
bool
Uji apakah alamat kompatibel dengan IPv4.
IsIPv4Broadcast(void) const
bool
Uji apakah alamat merupakan siaran IPv4.
IsIPv4Multicast(void) const
bool
Uji apakah alamatnya adalah IPv4 multicast.
IsIPv6(void) const
bool
Uji apakah alamat kompatibel dengan IPv6.
IsIPv6GlobalUnicast(void) const
bool
Uji apakah alamatnya adalah alamat unicast global IPv6.
IsIPv6LinkLocal(void) const
bool
Uji apakah alamatnya adalah alamat link-local (LL) IPv6.
IsIPv6Multicast(void) const
bool
Uji apakah alamatnya adalah IPv6 multicast.
IsIPv6ULA(void) const
bool
Uji apakah alamat adalah alamat unik-lokal (ULA) IPv6.
IsMulticast(void) const
bool
Uji apakah alamatnya adalah multicast IPv4 atau IPv6.
Subnet(void) const
uint16_t
Ekstrak ID subnet 16-bit dari alamat ULA IPv6.
ToIPv4(void) const
Ekstrak alamat IPv4 sebagai struktur data platform.
ToIPv4(void) const
struct in_addr
ToIPv6(void) const
ip6_addr_t
Ekstrak alamat IPv6 sebagai struktur data platform.
ToIPv6(void) const
struct in6_addr
ToString(char *buf, uint32_t bufSize) const
char *
Memberikan alamat IP dalam format presentasi teks konvensional.
Type(void) const
IPAddressType
Ekstrak jenis alamat IP.
WriteAddress(uint8_t *& p) const
void
Memberikan alamat IP dalam representasi jaringan standar.
operator!=(const IPAddress & other) const
bool
Bandingkan alamat IP ini dengan alamat IP lain untuk mengetahui ketidaksetaraan.
operator=(const IPAddress & other)
Operator penetapan konvensional.
operator==(const IPAddress & other) const
bool
Bandingkan alamat IP ini dengan alamat IP lain untuk mendapatkan kesetaraan.

Fungsi statis publik

FromIPv4(const ip4_addr_t & addr)
FromIPv4(const struct in_addr & addr)
Memasukkan alamat IPv4 dari struktur data platform.
FromIPv6(const ip6_addr_t & addr)
FromIPv6(const struct in6_addr & addr)
Memasukkan alamat IPv6 dari struktur data platform.
FromSockAddr(const struct sockaddr & sockaddr)
Memasukkan alamat IPv6 dari struct sockaddr& POSIX
FromString(const char *str, IPAddress & output)
bool
Pindai alamat IP dari teks presentasi konvensional.
FromString(const char *str, size_t strLen, IPAddress & output)
bool
Pindai alamat IP dari teks presentasi konvensional.
MakeIPv4Broadcast(void)
Buat alamat broadcast IPv4.
MakeIPv6Multicast(uint8_t aFlags, uint8_t aScope, const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES])
Membuat alamat multicast IPv6 dari bagian-bagiannya.
MakeIPv6Multicast(uint8_t aFlags, uint8_t aScope, uint32_t aGroupId)
Membuat alamat multicast IPv6 dari bagian-bagiannya.
MakeIPv6PrefixMulticast(uint8_t aScope, uint8_t aPrefixLength, const uint64_t & aPrefix, uint32_t aGroupId)
Membuat alamat multicast IPv6 awalan sementara dari bagian-bagiannya.
MakeIPv6TransientMulticast(uint8_t aFlags, uint8_t aScope, const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES])
Membuat alamat multicast IPv6 sementara dari bagian-bagiannya.
MakeIPv6WellKnownMulticast(uint8_t aScope, uint32_t aGroupId)
Buat alamat multicast IPv6 yang dikenal dari bagian-bagiannya.
MakeLLA(uint64_t interfaceId)
Membuat alamat link-local (LL) IPv6 dari IID-nya.
MakeULA(uint64_t globalId, uint16_t subnet, uint64_t interfaceId)
Membuat alamat lokal unik (ULA) IPv6 dari bagian-bagiannya.
ReadAddress(const uint8_t *& p, IPAddress & output)
void
Memberikan alamat IP dalam representasi jaringan standar.

Atribut publik

Addr

uint32_t Addr[4]

Array kata buram untuk memuat alamat IP (terlepas dari versi protokol)

Alamat IPv6 menggunakan semua 128-bit yang dibagi menjadi empat byte jaringan 32-bit yang diurutkan untuk bilangan bulat yang tidak ditandatangani. Alamat IPv4 adalah V4COMPAT, yaitu tiga kata pertama adalah nol, dan kata keempat berisi alamat IPv4 dalam urutan byte jaringan.

Atribut statis publik

Semua

IPAddress Any

Objek alamat IP yang tidak ditentukan dan dibedakan.

Objek ini digunakan sebagai konstanta untuk perbandingan kesetaraan. Kunci ini tidak boleh dimodifikasi oleh pengguna Lapisan Nest Inet.

Fungsi publik

GlobalId

uint64_t GlobalId(
  void
) const 

Ekstrak ID jaringan global 16-bit dari alamat ULA IPv6.

Gunakan metode ini dengan alamat unik-lokal (ULA) IPv6 untuk mengekstrak pengenal jaringan global, yang merupakan 40 bit segera setelah awalan jaringan ULA yang dibedakan, yaitu fd00::/8. Dengan kata lain, pengidentifikasi jaringan global terletak di lima byte dari byte ke-2 hingga ke-6 di alamat.

Detail
Hasil
ID jaringan global 40-bit, atau nol jika alamat IP bukan alamat lokal-unik IPv6.

InterfaceId

uint64_t InterfaceId(
  void
) const 

Ekstrak IID dari alamat ULA IPv6.

Gunakan metode ini dengan alamat lokal unik (ULA) IPv6 untuk mengekstrak ID pengenal (IID), yang merupakan 64 bit alamat yang paling tidak signifikan.

Detail
Hasil
ID antarmuka 64-bit, atau nol jika alamat IP bukan alamat lokal-unik IPv6.

IsIPv4

bool IsIPv4(
  void
) const 

Uji apakah alamat kompatibel dengan IPv4.

Gunakan metode ini untuk memeriksa apakah alamat tersebut termasuk dalam kelompok alamat IPv4. Perhatikan juga: alamat yang tidak ditentukan bukanlah alamat IPv4.

Detail
Nilai yang Ditampilkan
true
Alamatnya adalah IPv4 dan bukan alamat yang tidak ditentukan.
false
Alamatnya adalah IPv6 atau alamat yang tidak ditentukan.

IsIPv4Broadcast

bool IsIPv4Broadcast(
  void
) const 

Uji apakah alamat merupakan siaran IPv4.

Gunakan metode ini untuk memeriksa apakah alamat tersebut adalah alamat siaran IPv4 tujuan khusus.

Detail
Nilai yang Ditampilkan
true
Alamat adalah siaran IPv4
false
Atau

IsIPv4Multicast

bool IsIPv4Multicast(
  void
) const 

Uji apakah alamatnya adalah IPv4 multicast.

Gunakan metode ini untuk memeriksa apakah alamat tersebut adalah alamat multicast IPv4.

Detail
Nilai yang Ditampilkan
true
Alamatnya adalah {i>multicast <i}IPv4
false
Atau

IsIPv6

bool IsIPv6(
  void
) const 

Uji apakah alamat kompatibel dengan IPv6.

Gunakan metode ini untuk memeriksa apakah alamat tersebut termasuk dalam kelompok alamat IPv6. Perhatikan juga: alamat yang tidak ditentukan bukanlah alamat IPv6.

Detail
Nilai yang Ditampilkan
true
Alamatnya adalah IPv6 dan bukan alamat yang tidak ditentukan.
false
Alamatnya adalah IPv4 atau alamat yang tidak ditentukan.

IsIPv6GlobalUnicast

bool IsIPv6GlobalUnicast(
  void
) const 

Uji apakah alamatnya adalah alamat unicast global IPv6.

Gunakan metode ini untuk memeriksa apakah alamat tersebut termasuk dalam kelompok alamat IPv6 dan memiliki awalan alamat unicast global.

Detail
Nilai yang Ditampilkan
true
Alamatnya adalah IPv6 global unicast
false
Atau

IsIPv6LinkLocal

bool IsIPv6LinkLocal(
  void
) const 

Uji apakah alamatnya adalah alamat link-local (LL) IPv6.

Gunakan metode ini untuk memeriksa apakah alamat tersebut termasuk dalam kelompok alamat IPv6 dan memiliki awalan alamat link-local IPv6 yang dicadangkan.

Detail
Nilai yang Ditampilkan
true
Alamatnya adalah IPv6 link-local
false
Atau

IsIPv6Multicast

bool IsIPv6Multicast(
  void
) const 

Uji apakah alamatnya adalah IPv6 multicast.

Gunakan metode ini untuk memeriksa apakah alamat tersebut termasuk dalam kelompok alamat IPv6 dan memiliki awalan alamat multicast IPv6 yang dicadangkan.

Detail
Nilai yang Ditampilkan
true
Alamatnya adalah IPv6 multicast
false
Atau

ISIPv6ULA

bool IsIPv6ULA(
  void
) const 

Uji apakah alamat adalah alamat unik-lokal (ULA) IPv6.

Gunakan metode ini untuk memeriksa apakah alamat tersebut termasuk dalam kelompok alamat IPv6 dan memiliki awalan alamat unik-lokal IPv6 yang dicadangkan.

Detail
Nilai yang Ditampilkan
true
Alamat adalah IPv6 unik-lokal
false
Atau

IsMulticast

bool IsMulticast(
  void
) const 

Uji apakah alamatnya adalah multicast IPv4 atau IPv6.

Gunakan metode ini untuk memeriksa apakah alamat tersebut milik keluarga alamat IPv4 atau IPv6 dan memiliki prefiks alamat multicast IPv4 atau IPv6 yang dicadangkan.

Detail
Nilai yang Ditampilkan
true
Alamatnya adalah IPv4 atau IPv6 multicast
false
Atau

Subnet

uint16_t Subnet(
  void
) const 

Ekstrak ID subnet 16-bit dari alamat ULA IPv6.

Gunakan metode ini dengan alamat lokal unik (ULA) IPv6 untuk mengekstrak ID subnet, yang merupakan 16 bit yang paling tidak signifikan dari awalan jaringan. Awalan jaringan adalah 64 bit yang paling signifikan dari alamat. Dengan kata lain, pengidentifikasi subnet terletak di byte ke-7 dan ke-8 dari alamat 16 byte.

Detail
Hasil
ID subnet 16 bit, atau nol jika alamat IP bukan alamat lokal-unik IPv6.

ToIPv4

ip4_addr_t ToIPv4(
  void
) const 

Ekstrak alamat IPv4 sebagai struktur data platform.

Gunakan ToIPv4() const untuk mengekstrak konten sebagai alamat IPv4, jika memungkinkan. Alamat IPv6 dan alamat yang tidak ditentukan diekstrak sebagai 0.0.0.0.

Hasilnya adalah salah satu dari jenis struct in_addr (di POSIX) atau ip4_addr_t (di LwIP).

Detail
Hasil
Alamat IPv4 yang dienkapsulasi, atau 0.0.0.0 jika alamat tersebut tidak ditentukan atau bukan alamat IPv4.

ToIPv4

struct in_addr ToIPv4(
  void
) const 

ToIPv6

ip6_addr_t ToIPv6(
  void
) const 

Ekstrak alamat IPv6 sebagai struktur data platform.

Gunakan ToIPv6() const untuk mengekstrak konten sebagai alamat IPv6, jika memungkinkan. Alamat IPv4 dan alamat yang tidak ditentukan diekstrak sebagai [::].

Hasilnya adalah salah satu dari jenis struct in6_addr (di POSIX) atau ip6_addr_t (di LwIP).

Detail
Hasil
Alamat IPv4 yang dienkapsulasi, atau [::] 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 

Memberikan alamat IP dalam format presentasi teks konvensional.

Gunakan ToString(char *buf, uint32_t bufSize) const untuk menulis bentuk presentasi teks konvensional dari alamat IP ke memori yang terletak di buf dan memperluas hingga bufSize byte, termasuk karakter penghentian NUL-nya.

Detail
Parameter
[out] buf
Alamat teks yang dimunculkan.
[in] bufSize
Ukuran buffer untuk teks yang dimunculkan.

Catatan: Tidak sesuai dengan RFC 5952 di beberapa platform. Secara khusus, kompresi nol tidak dapat diterapkan sesuai dengan bagian 4.2.

Detail
Hasil
Argumen buf jika tidak ada error pemformatan, atau nol jika tidak.

Jenis

IPAddressType Type(
  void
) const 

Ekstrak jenis alamat IP.

Gunakan metode ini untuk menampilkan nilai jenis IPAddressType yang dienumerasi untuk menunjukkan jenis alamat IP.

Detail
Nilai yang Ditampilkan
kIPAddressType_IPv4
Alamatnya adalah IPv4.
kIPAddressType_IPv6
Alamatnya adalah IPv6.
kIPAddressType_Any
Alamatnya adalah alamat yang tidak ditentukan.

WriteAddress

void WriteAddress(
  uint8_t *& p
) const 

Memberikan alamat IP dalam representasi jaringan standar.

Gunakan WriteAddress(uint8_t *&p) untuk mengenkode alamat IP dalam format biner yang ditentukan oleh RFC 4291 untuk alamat IPv6. Alamat IPv4 dikodekan sesuai dengan bagian 2.5.5.1 "Kompatibel dengan IPv4 Alamat IPv6" (V4COMPAT).

Detail
Parameter
[in,out] p
Referensi ke kursor yang akan digunakan untuk menulis.

operator!=

bool operator!=(
  const IPAddress & other
) const 

Bandingkan alamat IP ini dengan alamat IP lain untuk mengetahui ketidaksetaraan.

Detail
Parameter
[in] other
Alamat untuk dibandingkan.
Nilai yang Ditampilkan
true
Jika setara dengan other
false
Atau

operator=

IPAddress & operator=(
  const IPAddress & other
)

Operator penetapan konvensional.

Detail
Parameter
[in] other
Alamat yang akan disalin.
Hasil
Referensi ke objek ini.

operator==

bool operator==(
  const IPAddress & other
) const 

Bandingkan alamat IP ini dengan alamat IP lain untuk mendapatkan kesetaraan.

Detail
Parameter
[in] other
Alamat untuk dibandingkan.
Nilai yang Ditampilkan
true
Jika setara dengan other
false
Atau

Fungsi statis publik

FromIPv4

IPAddress FromIPv4(
  const ip4_addr_t & addr
)

Ini adalah fungsi anggota yang kelebihan beban, disediakan untuk memudahkan. Fungsi ini berbeda dari fungsi di atas hanya dalam argumen yang diterima.

FromIPv4

IPAddress FromIPv4(
  const struct in_addr & addr
)

Memasukkan alamat IPv4 dari struktur data platform.

Gunakan FromIPv4(const ip4_addr_t &addr) untuk memasukkan addr sebagai alamat IPv4.

Argumen addr adalah jenis const struct in_addr& (di POSIX) atau const ip4_addr_t& (di LwIP).

Detail
Hasil
Alamat IP yang dibuat.

FromIPv6

IPAddress FromIPv6(
  const ip6_addr_t & addr
)

Ini adalah fungsi anggota yang kelebihan beban, disediakan untuk memudahkan. Fungsi ini berbeda dari fungsi di atas hanya dalam argumen yang diterima.

FromIPv6

IPAddress FromIPv6(
  const struct in6_addr & addr
)

Memasukkan alamat IPv6 dari struktur data platform.

Gunakan FromIPv6(const ip6_addr_t &addr) untuk memasukkan addr sebagai alamat IPv6.

Argumen addr adalah jenis const struct in6_addr& (di POSIX) atau const ip6_addr_t& (di LwIP).

Detail
Hasil
Alamat IP yang dibuat.

FromSockAddr

IPAddress FromSockAddr(
  const struct sockaddr & sockaddr
)

Memasukkan alamat IPv6 dari struct sockaddr& POSIX

Gunakan FromSockAddr(const struct sockaddr& sockaddr) untuk memasukkan sockaddr.sa_addr sebagai alamat IPv6.

Detail
Hasil
Alamat IP yang dibuat.

FromString

bool FromString(
  const char *str,
  IPAddress & output
)

Pindai alamat IP dari teks presentasi konvensional.

Gunakan FromString(const char *str, IPAddress& output) untuk menimpa alamat IP dengan memindai presentasi teks konvensional yang terletak di str.

Detail
Parameter
[in] str
Alamat teks yang dimunculkan.
[out] output
Objek yang akan ditetapkan ke alamat yang dipindai.

Detail
Nilai yang Ditampilkan
true
Format presentasi valid
false
Atau

FromString

bool FromString(
  const char *str,
  size_t strLen,
  IPAddress & output
)

Pindai alamat IP dari teks presentasi konvensional.

Gunakan FromString(const char *str, size_t strLen, IPAddress& output) untuk menimpa alamat IP dengan memindai presentasi teks konvensional yang terletak di str.

Detail
Parameter
[in] str
Pointer ke teks yang akan dipindai.
[in] strLen
Panjang teks yang akan dipindai.
[out] output
Objek yang akan ditetapkan ke alamat yang dipindai.

Detail
Nilai yang Ditampilkan
true
Format presentasi valid
false
Atau

MakeIPv4Broadcast

IPAddress MakeIPv4Broadcast(
  void
)

Buat alamat broadcast IPv4.

Detail
Hasil
Alamat IP yang dibuat.

MakeIPv6Multicast

IPAddress MakeIPv6Multicast(
  uint8_t aFlags,
  uint8_t aScope,
  const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES]
)

Membuat alamat multicast IPv6 dari bagian-bagiannya.

Gunakan MakeIPv6Multicast(uint8_t flags, uint8_t scope, uint8_t groupId[14]) untuk membuat alamat multicast IPv6 dengan flags untuk cakupan pemilihan rute scope dan octet ID grup groupId.

Detail
Hasil
Alamat IP yang dibuat.

MakeIPv6Multicast

IPAddress MakeIPv6Multicast(
  uint8_t aFlags,
  uint8_t aScope,
  uint32_t aGroupId
)

Membuat alamat multicast IPv6 dari bagian-bagiannya.

Gunakan MakeIPv6Multicast(uint8_t flags, uint8_t scope, uint32_t groupId) untuk membuat alamat multicast IPv6 dengan flags untuk cakupan pemilihan rute scope dan ID grup groupId.

Detail
Hasil
Alamat IP yang dibuat.

MakeIPv6PrefixMulticast

IPAddress MakeIPv6PrefixMulticast(
  uint8_t aScope,
  uint8_t aPrefixLength,
  const uint64_t & aPrefix,
  uint32_t aGroupId
)

Membuat alamat multicast IPv6 awalan sementara dari bagian-bagiannya.

Gunakan MakeIPv6PrefixMulticast(uint8_t scope, uint8_t prefixlen, const uint64_t prefix, uint32_t groupId) untuk membuat alamat multicast awalan IPv6 sementara dengan cakupan pemilihan rute scope dan octet ID grup groupId, yang memenuhi syarat oleh awalan prefix dengan panjang prefixlen bit.

Detail
Hasil
Alamat IP yang dibuat.

MakeIPv6TransientMulticast

IPAddress MakeIPv6TransientMulticast(
  uint8_t aFlags,
  uint8_t aScope,
  const uint8_t aGroupId[NL_INET_IPV6_MCAST_GROUP_LEN_IN_BYTES]
)

Membuat alamat multicast IPv6 sementara dari bagian-bagiannya.

Gunakan MakeIPv6TransientMulticast(uint8_t flags, uint8_t scope, uint8_t groupId[14]) untuk membuat alamat multicast IPv6 sementara dengan flags untuk cakupan pemilihan rute scope dan octet ID grup groupId.

Detail
Hasil
Alamat IP yang dibuat.

MakeIPv6WellKnownMulticast

IPAddress MakeIPv6WellKnownMulticast(
  uint8_t aScope,
  uint32_t aGroupId
)

Buat alamat multicast IPv6 yang dikenal dari bagian-bagiannya.

Gunakan MakeIPv6WellKnownMulticast(uint8_t scope, uint32_t groupId) untuk membuat alamat multicast IPv6 untuk cakupan pemilihan rute scope dan ID grup groupId.

Detail
Hasil
Alamat IP yang dibuat.

MakeLLA

IPAddress MakeLLA(
  uint64_t interfaceId
)

Membuat alamat link-local (LL) IPv6 dari IID-nya.

Gunakan MakeLLA(uint64_t interfaceId) untuk membuat alamat link-local (LL) IPv6 dengan ID antarmuka interfaceId.

Detail
Hasil
Alamat IP yang dibuat.

MakeULA

IPAddress MakeULA(
  uint64_t globalId,
  uint16_t subnet,
  uint64_t interfaceId
)

Membuat alamat lokal unik (ULA) IPv6 dari bagian-bagiannya.

Gunakan MakeULA(uint64_t globalId, uint16_t subnet, uint64_t interfaceId) untuk membuat alamat lokal unik (ULA) dengan ID jaringan global globalId, ID subnet subnet, dan ID antarmuka (IID) interfaceId.

Detail
Hasil
Alamat IP yang dibuat.

ReadAddress

void ReadAddress(
  const uint8_t *& p,
  IPAddress & output
)

Memberikan alamat IP dalam representasi jaringan standar.

Gunakan ReadAddress(uint8_t *&p, IPAddress &output) untuk mendekode alamat IP di p ke objek output.

Detail
Parameter
[in,out] p
Referensi ke kursor yang akan digunakan untuk membaca.
[out] output
Objek untuk menerima alamat IP yang didekode.