nl::Inet::InetLayer

#include <src/inet/InetLayer.h>

Layanan ini menyediakan akses ke layanan Internet, termasuk timer, resolusi Domain Name System (DNS), transportasi jaringan TCP, transportasi jaringan UDP, dan transportasi jaringan mentah, untuk satu thread.

Ringkasan

Untuk BSD/POSIX Sockets, notifikasi kesiapan peristiwa ditangani melalui deskriptor file dan implementasi polling / pilih tradisional pada adaptasi platform.

Untuk LwIP, notifikasi kesiapan peristiwa ditangani melalui peristiwa / pesan serta hook khusus platform dan sistem untuk sistem peristiwa / pesan.

Konstruktor dan Destruktor

InetLayer(void)
Ini adalah konstruktor default InetLayer.

Jenis publik

@5{
  kState_NotInitialized = 0,
  kState_Initialized = 1,
  kState_ShutdownInProgress = 2
}
enum
Status objek InetLayer saat ini.
DNSResolveCompleteFunct typedef
DNSResolver::OnResolveCompleteFunct

Atribut publik

State
enum nl::Inet::InetLayer::@5
Status objek InetLayer saat ini.

Atribut statis publik

sInetEventHandlerDelegate

Fungsi publik

CanEnqueueDroppableEvent(void)
bool
CancelResolveHostAddress(DNSResolveCompleteFunct onComplete, void *appState)
void
Batalkan kueri DNS apa pun yang belum diproses (untuk callback penyelesaian yang cocok dan status aplikasi) yang mungkin masih aktif.
DroppableEventDequeued(void)
void
GetInterfaceFromAddr(const IPAddress & addr, InterfaceId & intfId)
Mendapatkan ID antarmuka untuk alamat IP yang ditentukan.
GetLinkLocalAddr(InterfaceId link, IPAddress *llAddr)
Dapatkan alamat IPv6 lokal link untuk link atau antarmuka yang ditentukan.
GetPlatformData(void)
void *
Tindakan ini akan menampilkan data platform spesifik per klien yang ditetapkan ke instance, jika telah ditetapkan sebelumnya.
HandleSelectResult(int selectRes, fd_set *readfds, fd_set *writefds, fd_set *exceptfds)
void
Tangani I/O dari panggilan tertentu.
Init(Weave::System::Layer & aSystemLayer, void *aContext)
Ini adalah penginisialisasi eksplisit InetLayer.
InitQueueLimiter(void)
MatchLocalIPv6Subnet(const IPAddress & addr)
bool
Periksa apakah ada kecocokan awalan antara alamat IPv6 yang ditentukan dan salah satu alamat IPv6 yang dikonfigurasi secara lokal.
NewRawEndPoint(IPVersion ipVer, IPProtocol ipProto, RawEndPoint **retEndPoint)
Membuat objek RawEndPoint baru untuk protokol dan versi IP tertentu.
NewTCPEndPoint(TCPEndPoint **retEndPoint)
Membuat objek TCPEndPoint baru.
NewTunEndPoint(TunEndPoint **retEndPoint)
Membuat objek TunEndPoint baru.
NewUDPEndPoint(UDPEndPoint **retEndPoint)
Membuat objek UDPEndPoint baru.
PrepareSelect(int & nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval & sleepTime)
void
Siapkan kumpulan deskriptor file yang akan digunakan select().
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t options, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Melakukan resolusi alamat IP dari nama host yang ditentukan.
ResolveHostAddress(const char *hostName, uint16_t hostNameLen, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Melakukan resolusi alamat IP dari nama host yang ditentukan.
ResolveHostAddress(const char *hostName, uint8_t maxAddrs, IPAddress *addrArray, DNSResolveCompleteFunct onComplete, void *appState)
Melakukan resolusi alamat IP dari nama host yang ditentukan.
SetPlatformData(void *aPlatformData)
void
Tindakan ini menetapkan data platform khusus klien yang ditentukan ke instance untuk diambil nanti oleh platform klien.
Shutdown(void)
Ini adalah deinisialisasir eksplisit InetLayer dan harus dipanggil sebelum membuang instance InetLayer yang dibuat instance-nya.
SystemLayer(void) const

Fungsi statis publik

HandleInetLayerEvent(Weave::System::Object & aTarget, Weave::System::EventType aEventType, uintptr_t aArgument)
Weave::System::Error
IsDroppableEvent(Weave::System::EventType aType)
bool
UpdateSnapshot(nl::Weave::System::Stats::Snapshot & aSnapshot)
void

Jenis publik

@5

 @5

Status objek InetLayer saat ini.

Properti
kState_Initialized

Status diinisialisasi.

kState_NotInitialized

Bukan status diinisialisasi.

kState_ShutdownInProgress

Status saat Penonaktifan dipicu.

DNSResolveCompleteFunct

DNSResolver::OnResolveCompleteFunct DNSResolveCompleteFunct

Atribut publik

Negara Bagian

enum nl::Inet::InetLayer::@5 State

Status objek InetLayer saat ini.

[HANYA BACA] Status saat ini.

Atribut statis publik

sInetEventHandlerDelegate

Weave::System::LwIPEventHandlerDelegate sInetEventHandlerDelegate

Fungsi publik

CanEnqueueDroppableEvent

bool CanEnqueueDroppableEvent(
  void
)

CancelResolveHostAddress

void CancelResolveHostAddress(
  DNSResolveCompleteFunct onComplete,
  void *appState
)

Batalkan kueri DNS apa pun yang belum diproses (untuk callback penyelesaian yang cocok dan status aplikasi) yang mungkin masih aktif.

Detail
Parameter
[in] onComplete
Pointer ke fungsi callback saat permintaan DNS selesai.
[in] appState
Pointer ke objek status aplikasi yang akan diteruskan ke fungsi callback sebagai argumen.

DroppableEventDequeued

void DroppableEventDequeued(
  void
)

GetInterfaceFromAddr

INET_ERROR GetInterfaceFromAddr(
  const IPAddress & addr,
  InterfaceId & intfId
)

Mendapatkan ID antarmuka untuk alamat IP yang ditentukan.

Jika ID antarmuka tidak dapat diperoleh, ID tersebut akan ditetapkan ke INET_NULL_INTERFACEID.

Detail
Parameter
[in] addr
Referensi ke objek IPAddress.
[out] intfId
Referensi ke objek InterfaceId.
Hasil
INET_NO_ERROR tanpa syarat.

GetLinkLocalAddr

INET_ERROR GetLinkLocalAddr(
  InterfaceId link,
  IPAddress *llAddr
)

Dapatkan alamat IPv6 lokal link untuk link atau antarmuka yang ditentukan.

Detail
Parameter
[in] link
Antarmuka yang dicari alamat IPv6 lokal tautan.
[out] llAddr
Alamat IPv6 lokal link untuk link tersebut.
Nilai yang Ditampilkan
INET_ERROR_NOT_IMPLEMENTED
Jika IPv6 tidak didukung.
INET_ERROR_BAD_ARGS
Jika alamat lokal tautan adalah NULL.
INET_ERROR_ADDRESS_NOT_FOUND
Jika link tidak memiliki alamat yang dikonfigurasi.
INET_NO_ERROR
Berhasil.

GetPlatformData

void * GetPlatformData(
  void
)

Tindakan ini akan menampilkan data platform spesifik per klien yang ditetapkan ke instance, jika telah ditetapkan sebelumnya.

Detail
Hasil
Data platform khusus klien, jika telah ditetapkan sebelumnya; jika tidak, maka akan menjadi NULL.

HandleSelectResult

void HandleSelectResult(
  int selectRes,
  fd_set *readfds,
  fd_set *writefds,
  fd_set *exceptfds
)

Tangani I/O dari panggilan tertentu.

Metode ini mendaftarkan peristiwa I/O yang tertunda di setiap endpoint aktif, lalu memanggil fungsi penanganan I/O masing-masing untuk endpoint tersebut.

Detail
Parameter
[in] selectRes
Nilai hasil dari panggilan pilih.
[in] readfds
Pointer ke kumpulan deskriptor file baca.
[in] writefds
Pointer ke kumpulan deskriptor file tulis.
[in] exceptfds
Pointer ke kumpulan deskriptor file yang memiliki error.

InetLayer

 InetLayer(
  void
)

Ini adalah konstruktor default InetLayer.

Ia melakukan beberapa inisialisasi anggota data dasar; Namun, karena InetLayer mengikuti pola desain penginisialisasi eksplisit, metode InetLayer::Init harus berhasil dipanggil sebelum menggunakan objek.

Init

INET_ERROR Init(
  Weave::System::Layer & aSystemLayer,
  void *aContext
)

Ini adalah penginisialisasi eksplisit InetLayer.

Fungsi ini harus dipanggil dan diselesaikan sebelum InetLayer dapat digunakan.

Pemanggil dapat memberikan argumen konteks opsional yang akan diteruskan kembali melalui fungsi hook khusus platform. Untuk adaptasi berbasis LwIP, ini biasanya menjadi pointer ke antrean peristiwa yang terkait dengan instance InetLayer.

Platform dapat memilih untuk menyatakan hook INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS di header konfigurasi khusus platform dan mengaktifkan Platform::InetLayer::WillInit dan Platform::InetLayer::DidInit untuk memberikan pengaruh pada penyesuaian khusus platform atau ekstensi data ke InetLayer.

Detail
Parameter
[in] aSystemLayer
Instance yang diperlukan dari Lapisan Sistem Weave sudah berhasil diinisialisasi.
[in] aContext
Argumen konteks opsional yang akan diteruskan kembali ke pemanggil melalui fungsi hook khusus platform.
Nilai yang Ditampilkan
INET_ERROR_INCORRECT_STATE
Jika InetLayer dalam status yang salah.
INET_ERROR_NO_MEMORY
Jika InetLayer kehabisan resource untuk permintaan ini untuk timer baru.
other
Error khusus platform yang menunjukkan alasan kegagalan inisialisasi.
INET_NO_ERROR
Berhasil.

InitQueueLimiter

INET_ERROR InitQueueLimiter(
  void
)

MatchLocalIPv6Subnet

bool MatchLocalIPv6Subnet(
  const IPAddress & addr
)

Periksa apakah ada kecocokan awalan antara alamat IPv6 yang ditentukan dan salah satu alamat IPv6 yang dikonfigurasi secara lokal.

Detail
Parameter
[in] addr
Alamat IPv6 untuk memeriksa kecocokan awalan.
Hasil
true jika ditemukan kecocokan yang berhasil, jika tidak ditemukan salah.

NewRawEndPoint

INET_ERROR NewRawEndPoint(
  IPVersion ipVer,
  IPProtocol ipProto,
  RawEndPoint **retEndPoint
)

Membuat objek RawEndPoint baru untuk protokol dan versi IP tertentu.

Detail
Parameter
[in] ipVer
IPv4 atau IPv6.
[in] ipProto
Protokol dalam keluarga IP (mis., ICMPv4 atau ICMPv6).
[in,out] retEndPoint
Pointer ke pointer objek RawEndPoint yang merupakan parameter nilai yang ditampilkan setelah pembuatan objek selesai. *retEndPoint adalah NULL jika pembuatan gagal.
Nilai yang Ditampilkan
INET_ERROR_INCORRECT_STATE
Jika objek InetLayer tidak diinisialisasi.
INET_ERROR_NO_ENDPOINTS
Jika kumpulan InetLayerRawEndPoint sudah penuh dan tidak ada endpoint baru yang dapat dibuat.
INET_NO_ERROR
Berhasil.

NewTCPEndPoint

INET_ERROR NewTCPEndPoint(
  TCPEndPoint **retEndPoint
)

Membuat objek TCPEndPoint baru.

Detail
Parameter
[in,out] retEndPoint
Pointer ke pointer objek TCPEndPoint yang merupakan parameter nilai yang ditampilkan setelah pembuatan objek selesai. *retEndPoint adalah NULL jika pembuatan gagal.
Nilai yang Ditampilkan
INET_ERROR_INCORRECT_STATE
Jika objek InetLayer tidak diinisialisasi.
INET_ERROR_NO_ENDPOINTS
Jika kumpulan InetLayerTCPEndPoint sudah penuh dan tidak ada endpoint baru yang dapat dibuat.
INET_NO_ERROR
Berhasil.

NewTunEndPoint

INET_ERROR NewTunEndPoint(
  TunEndPoint **retEndPoint
)

Membuat objek TunEndPoint baru.

Detail
Parameter
[in,out] retEndPoint
Pointer ke pointer objek TunEndPoint yang merupakan parameter nilai yang ditampilkan setelah pembuatan objek selesai. *retEndPoint adalah NULL jika pembuatan gagal.
Nilai yang Ditampilkan
INET_ERROR_INCORRECT_STATE
Jika objek InetLayer tidak diinisialisasi.
INET_ERROR_NO_ENDPOINTS
Jika kumpulan InetLayerTunEndPoint sudah penuh dan tidak ada kumpulan baru yang dapat dibuat.
INET_NO_ERROR
Berhasil.

NewUDPEndPoint

INET_ERROR NewUDPEndPoint(
  UDPEndPoint **retEndPoint
)

Membuat objek UDPEndPoint baru.

Detail
Parameter
[in,out] retEndPoint
Pointer ke pointer objek UDPEndPoint yang merupakan parameter nilai yang ditampilkan setelah pembuatan objek selesai. *retEndPoint adalah NULL jika pembuatan gagal.
Nilai yang Ditampilkan
INET_ERROR_INCORRECT_STATE
Jika objek InetLayer tidak diinisialisasi.
INET_ERROR_NO_ENDPOINTS
Jika kumpulan InetLayerUDPEndPoint sudah penuh dan tidak ada endpoint baru yang dapat dibuat.
INET_NO_ERROR
Berhasil.

PrepareSelect

void PrepareSelect(
  int & nfds,
  fd_set *readfds,
  fd_set *writefds,
  fd_set *exceptfds,
  struct timeval & sleepTime
)

Siapkan kumpulan deskriptor file yang akan digunakan select().

Detail
Parameter
[out] nfds
Rentang deskriptor file dalam set deskriptor file.
[in] readfds
Pointer ke kumpulan deskriptor file yang bisa dibaca.
[in] writefds
Pointer ke serangkaian deskriptor file yang bisa ditulis.
[in] exceptfds
Pointer ke kumpulan deskriptor file yang memiliki error.
[in] sleepTimeTV
Pointer ke struktur yang menentukan berapa lama pilihan harus tidur

ResolveHostAddress

INET_ERROR ResolveHostAddress(
  const char *hostName,
  uint16_t hostNameLen,
  uint8_t options,
  uint8_t maxAddrs,
  IPAddress *addrArray,
  DNSResolveCompleteFunct onComplete,
  void *appState
)

Melakukan resolusi alamat IP dari nama host yang ditentukan.

Detail
Parameter
[in] hostName
Pointer ke string C yang diakhiri dengan non-NULL, yang mewakili nama host yang akan dikueri.
[in] hostNameLen
Panjang string nama host.
[in] options
Nilai bilangan bulat yang mengontrol cara resolusi nama host dilakukan.
                    Value should be one of the address family values from the
                    #DNSOptions enumeration:

                    #kDNSOption_AddrFamily_Any
                    #kDNSOption_AddrFamily_IPv4Only
                    #kDNSOption_AddrFamily_IPv6Only
                    #kDNSOption_AddrFamily_IPv4Preferred
                    #kDNSOption_AddrFamily_IPv6Preferred
[in] maxAddrs
Jumlah maksimum alamat yang akan disimpan dalam tabel DNS.
[in] addrArray
Pointer ke tabel DNS.
[in] onComplete
Pointer ke fungsi callback saat permintaan DNS selesai.
[in] appState
Pointer ke status aplikasi yang akan diteruskan ke onComplete saat permintaan DNS selesai.
Nilai yang Ditampilkan
INET_NO_ERROR
jika permintaan DNS berhasil ditangani.
INET_ERROR_NO_MEMORY
jika kumpulan resolver lapisan Inet penuh.
INET_ERROR_HOST_NAME_TOO_LONG
jika nama {i>host<i} yang diminta terlalu panjang.
INET_ERROR_HOST_NOT_FOUND
jika nama {i>host<i} permintaan tidak dapat diselesaikan menjadi alamat.
INET_ERROR_DNS_TRY_AGAIN
jika server nama mengembalikan indikasi kegagalan sementara; mencoba lagi nanti.
INET_ERROR_DNS_NO_RECOVERY
jika server nama mengembalikan {i>error<i} yang tidak dapat dipulihkan.
INET_ERROR_NOT_IMPLEMENTED
jika resolusi DNS tidak diaktifkan pada platform yang mendasarinya.
other
Error OS atau jaringan POSIX yang ditampilkan oleh implementasi DNS resolver yang mendasarinya.

ResolveHostAddress

INET_ERROR ResolveHostAddress(
  const char *hostName,
  uint16_t hostNameLen,
  uint8_t maxAddrs,
  IPAddress *addrArray,
  DNSResolveCompleteFunct onComplete,
  void *appState
)

Melakukan resolusi alamat IP dari nama host yang ditentukan.

Detail
Parameter
[in] hostName
Pointer ke string C yang diakhiri dengan non-NULL, yang mewakili nama host yang akan dikueri.
[in] hostNameLen
Panjang string nama host.
[in] maxAddrs
Jumlah maksimum alamat yang akan disimpan dalam tabel DNS.
[in] addrArray
Pointer ke tabel DNS.
[in] onComplete
Pointer ke fungsi callback saat permintaan DNS selesai.
[in] appState
Pointer ke status aplikasi yang akan diteruskan ke onComplete saat permintaan DNS selesai.
Nilai yang Ditampilkan
INET_NO_ERROR
jika permintaan DNS berhasil ditangani.
INET_ERROR_NO_MEMORY
jika kumpulan resolver lapisan Inet penuh.
INET_ERROR_HOST_NAME_TOO_LONG
jika nama {i>host<i} yang diminta terlalu panjang.
INET_ERROR_HOST_NOT_FOUND
jika nama {i>host<i} permintaan tidak dapat diselesaikan menjadi alamat.
INET_ERROR_DNS_TRY_AGAIN
jika server nama mengembalikan indikasi kegagalan sementara; mencoba lagi nanti.
INET_ERROR_DNS_NO_RECOVERY
jika server nama mengembalikan {i>error<i} yang tidak dapat dipulihkan.
INET_ERROR_NOT_IMPLEMENTED
jika resolusi DNS tidak diaktifkan pada platform yang mendasarinya.
other
Error OS atau jaringan POSIX yang ditampilkan oleh implementasi DNS resolver yang mendasarinya.

ResolveHostAddress

INET_ERROR ResolveHostAddress(
  const char *hostName,
  uint8_t maxAddrs,
  IPAddress *addrArray,
  DNSResolveCompleteFunct onComplete,
  void *appState
)

Melakukan resolusi alamat IP dari nama host yang ditentukan.

Detail
Parameter
[in] hostName
Pointer ke string C yang diakhiri dengan NULL yang mewakili nama host yang akan dikueri.
[in] maxAddrs
Jumlah maksimum alamat yang akan disimpan dalam tabel DNS.
[in] addrArray
Pointer ke tabel DNS.
[in] onComplete
Pointer ke fungsi callback saat permintaan DNS selesai.
[in] appState
Pointer ke status aplikasi yang akan diteruskan ke onComplete saat permintaan DNS selesai.
Nilai yang Ditampilkan
INET_NO_ERROR
jika permintaan DNS berhasil ditangani.
INET_ERROR_NO_MEMORY
jika kumpulan resolver lapisan Inet penuh.
INET_ERROR_HOST_NAME_TOO_LONG
jika nama {i>host<i} yang diminta terlalu panjang.
INET_ERROR_HOST_NOT_FOUND
jika nama {i>host<i} permintaan tidak dapat diselesaikan menjadi alamat.
INET_ERROR_DNS_TRY_AGAIN
jika server nama mengembalikan indikasi kegagalan sementara; mencoba lagi nanti.
INET_ERROR_DNS_NO_RECOVERY
jika server nama mengembalikan {i>error<i} yang tidak dapat dipulihkan.
INET_ERROR_NOT_IMPLEMENTED
jika resolusi DNS tidak diaktifkan pada platform yang mendasarinya.
other
Error OS atau jaringan POSIX yang ditampilkan oleh implementasi DNS resolver yang mendasarinya.

SetPlatformData

void SetPlatformData(
  void *aPlatformData
)

Tindakan ini menetapkan data platform khusus klien yang ditentukan ke instance untuk diambil nanti oleh platform klien.

Detail
Parameter
[in] aPlatformData
Data platform khusus klien yang akan ditetapkan.

Nonaktif

INET_ERROR Shutdown(
  void
)

Ini adalah deinisialisasir eksplisit InetLayer dan harus dipanggil sebelum membuang instance InetLayer yang dibuat instance-nya.

Platform dapat memilih untuk menetapkan hook INET_CONFIG_WILL_OVERRIDE_PLATFORM_XTOR_FUNCS di header konfigurasi khusus platform dan mengaktifkan Platform::InetLayer::WillShutdown dan Platform::InetLayer::DidShutdown untuk melakukan pembersihan penyesuaian khusus platform atau ekstensi data pada InetLayer.

Detail
Hasil
INET_NO_ERROR saat berhasil; jika tidak, error tertentu yang menunjukkan alasan kegagalan shutdown.

SystemLayer

Weave::System::Layer * SystemLayer(
  void
) const 

Fungsi statis publik

HandleInetLayerEvent

Weave::System::Error HandleInetLayerEvent(
  Weave::System::Object & aTarget,
  Weave::System::EventType aEventType,
  uintptr_t aArgument
)

IsDroppableEvent

bool IsDroppableEvent(
  Weave::System::EventType aType
)

UpdateSnapshot

void UpdateSnapshot(
  nl::Weave::System::Stats::Snapshot & aSnapshot
)