NAT64

Modul ini mencakup fungsi dan struktur untuk fungsi NAT64 di router pembatas.

Ringkasan

Fungsi ini hanya tersedia jika OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE diaktifkan.

Enumerasi

otNat64DropReason{
  OT_NAT64_DROP_REASON_UNKNOWN = 0,
  OT_NAT64_DROP_REASON_ILLEGAL_PACKET,
  OT_NAT64_DROP_REASON_UNSUPPORTED_PROTO,
  OT_NAT64_DROP_REASON_NO_MAPPING
}
enum
Alasan penghentian paket.
otNat64State{
  OT_NAT64_STATE_DISABLED = 0,
  OT_NAT64_STATE_NOT_RUNNING,
  OT_NAT64_STATE_IDLE,
  OT_NAT64_STATE_ACTIVE
}
enum
Status NAT64.

Typedef

otIp4Address typedef
struct otIp4Address
Mewakili alamat IPv4.
otIp4Cidr typedef
struct otIp4Cidr
otNat64AddressMapping typedef
Mewakili data pemetaan alamat untuk NAT64.
otNat64AddressMappingIterator typedef
Digunakan untuk melakukan iterasi melalui pemetaan alamat NAT64.
otNat64Counters typedef
Mewakili penghitung untuk NAT64.
otNat64DropReason typedef
Alasan penghentian paket.
otNat64ErrorCounters typedef
Menggambarkan penghitung paket yang dilepas karena error saat menangani paket NAT64.
otNat64ProtocolCounters typedef
Mewakili penghitung untuk protokol yang didukung oleh NAT64.
otNat64ReceiveIp4Callback)(otMessage *aMessage, void *aContext) typedef
void(*
Pointer dipanggil ketika datagram IPv4 (diterjemahkan oleh penerjemah NAT64) diterima.

Variabel

OT_TOOL_PACKED_END

Fungsi

otIp4AddressFromString(const char *aString, otIp4Address *aAddress)
Mengonversi string alamat IPv4 yang dapat dibaca manusia menjadi representasi biner.
otIp4AddressToString(const otIp4Address *aAddress, char *aBuffer, uint16_t aSize)
void
Mengonversi alamat menjadi string.
otIp4CidrFromString(const char *aString, otIp4Cidr *aCidr)
Mengonversi string CIDR IPv4 yang dapat dibaca manusia menjadi representasi biner.
otIp4CidrToString(const otIp4Cidr *aCidr, char *aBuffer, uint16_t aSize)
void
Mengonversi CIDR IPv4 menjadi string.
otIp4ExtractFromIp6Address(uint8_t aPrefixLength, const otIp6Address *aIp6Address, otIp4Address *aIp4Address)
void
Tetapkan aIp4Address dengan melakukan terjemahan alamat NAT64 dari aIp6Address seperti yang ditentukan dalam RFC 6052.
otIp4IsAddressEqual(const otIp4Address *aFirst, const otIp4Address *aSecond)
bool
Uji apakah dua alamat IPv4 adalah sama.
otIp4NewMessage(otInstance *aInstance, const otMessageSettings *aSettings)
Mengalokasikan buffering pesan baru untuk mengirim pesan IPv4 ke penerjemah NAT64.
otNat64GetCidr(otInstance *aInstance, otIp4Cidr *aCidr)
Mendapatkan CIDR IPv4 yang dikonfigurasi di penerjemah NAT64.
otNat64GetCounters(otInstance *aInstance, otNat64ProtocolCounters *aCounters)
void
Mendapatkan penghitung penerjemah NAT64.
otNat64GetErrorCounters(otInstance *aInstance, otNat64ErrorCounters *aCounters)
void
Mendapatkan penghitung error penerjemah NAT64.
otNat64GetNextAddressMapping(otInstance *aInstance, otNat64AddressMappingIterator *aIterator, otNat64AddressMapping *aMapping)
Mendapatkan info AddressMapping berikutnya (menggunakan iterator).
otNat64GetPrefixManagerState(otInstance *aInstance)
Mendapatkan status pengelola awalan NAT64.
otNat64GetTranslatorState(otInstance *aInstance)
Mendapatkan status penerjemah NAT64.
otNat64InitAddressMappingIterator(otInstance *aInstance, otNat64AddressMappingIterator *aIterator)
void
otNat64Send(otInstance *aInstance, otMessage *aMessage)
Menerjemahkan datagram IPv4 ke datagram IPv6 dan mengirimkannya melalui antarmuka Thread.
otNat64SetEnabled(otInstance *aInstance, bool aEnabled)
void
Mengaktifkan atau menonaktifkan fungsi NAT64.
otNat64SetIp4Cidr(otInstance *aInstance, const otIp4Cidr *aCidr)
Menetapkan CIDR yang digunakan saat menetapkan alamat sumber paket IPv4 keluar yang diterjemahkan.
otNat64SetReceiveIp4Callback(otInstance *aInstance, otNat64ReceiveIp4Callback aCallback, void *aContext)
void
Mendaftarkan callback untuk menyediakan datagram IPv4 yang diterima.
otNat64SynthesizeIp6Address(otInstance *aInstance, const otIp4Address *aIp4Address, otIp6Address *aIp6Address)
Menyetel alamat IPv6 dengan melakukan penerjemahan alamat NAT64 dari awalan NAT64 yang disukai dan alamat IPv4 yang diberikan seperti yang ditentukan dalam RFC 6052.

Struct

otIp4Address

Mewakili alamat IPv4.

otIp4Cidr

Menggambarkan blok CIDR IPv4.

otNat64AddressMapping

Mewakili data pemetaan alamat untuk NAT64.

otNat64AddressMappingIterator

Digunakan untuk melakukan iterasi melalui pemetaan alamat NAT64.

otNat64Counters

Mewakili penghitung untuk NAT64.

otNat64ErrorCounters

Menggambarkan penghitung paket yang dilepas karena error saat menangani paket NAT64.

otNat64ProtocolCounters

Mewakili penghitung untuk protokol yang didukung oleh NAT64.

Serikat

otIp4Address::OT_TOOL_PACKED_FIELD

Enumerasi

otNat64DropReason

 otNat64DropReason

Alasan penghentian paket.

Properti
OT_NAT64_DROP_REASON_ILLEGAL_PACKET

Penurunan paket karena gagal mengurai datagram.

OT_NAT64_DROP_REASON_NO_MAPPING

Paket dihapus karena pemetaan tidak ditemukan atau kumpulan pemetaan habis.

OT_NAT64_DROP_REASON_UNKNOWN

Paket tiba karena alasan yang tidak diketahui.

OT_NAT64_DROP_REASON_UNSUPPORTED_PROTO

Paket hilang karena protokol IP tidak didukung.

otNat64State

 otNat64State

Status NAT64.

Properti
OT_NAT64_STATE_ACTIVE

BR memublikasikan awalan NAT64 dan/atau menerjemahkan paket.

OT_NAT64_STATE_DISABLED

NAT64 dinonaktifkan.

OT_NAT64_STATE_IDLE

NAT64 diaktifkan, tetapi BR ini bukan NAT64 BR aktif.

OT_NAT64_STATE_NOT_RUNNING

NAT64 diaktifkan, tetapi satu atau beberapa dependensi NAT64 tidak berjalan.

Typedef

otIp4Address

struct otIp4Address otIp4Address

Mewakili alamat IPv4.

otIp4Cidr

struct otIp4Cidr otIp4Cidr

otNat64AddressMapping

struct otNat64AddressMapping otNat64AddressMapping

Mewakili data pemetaan alamat untuk NAT64.

otNat64AddressMappingIterator

struct otNat64AddressMappingIterator otNat64AddressMappingIterator

Digunakan untuk melakukan iterasi melalui pemetaan alamat NAT64.

Kolom dalam jenis ini buram (hanya ditujukan untuk digunakan oleh inti OpenThread) sehingga tidak boleh diakses atau digunakan oleh pemanggil.

Sebelum menggunakan iterator, iterator HARUS diinisialisasi menggunakan otNat64AddressMappingIteratorInit().

otNat64Counters

struct otNat64Counters otNat64Counters

Mewakili penghitung untuk NAT64.

otNat64DropReason

enum otNat64DropReason otNat64DropReason

Alasan penghentian paket.

otNat64ErrorCounters

struct otNat64ErrorCounters otNat64ErrorCounters

Menggambarkan penghitung paket yang dilepas karena error saat menangani paket NAT64.

otNat64ProtocolCounters

struct otNat64ProtocolCounters otNat64ProtocolCounters

Mewakili penghitung untuk protokol yang didukung oleh NAT64.

otNat64ReceiveIp4Callback

void(* otNat64ReceiveIp4Callback)(otMessage *aMessage, void *aContext)

Pointer dipanggil ketika datagram IPv4 (diterjemahkan oleh penerjemah NAT64) diterima.

Detail
Parameter
[in] aMessage
Pointer ke buffer pesan yang berisi datagram IPv6 yang diterima. Fungsi ini mentransfer kepemilikan aMessage ke penerima callback. Pesan harus dibebaskan oleh penerima callback setelah diproses.
[in] aContext
Pointer ke konteks khusus aplikasi.

Variabel

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otIp4Address OT_TOOL_PACKED_END

Fungsi

otIp4AddressFromString

otError otIp4AddressFromString(
  const char *aString,
  otIp4Address *aAddress
)

Mengonversi string alamat IPv4 yang dapat dibaca manusia menjadi representasi biner.

Detail
Parameter
[in] aString
Pointer ke string yang dihentikan NULL.
[out] aAddress
Penunjuk ke alamat IPv4.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil mengurai string.
OT_ERROR_INVALID_ARGS
Gagal mengurai string.

otIp4AddressToString

void otIp4AddressToString(
  const otIp4Address *aAddress,
  char *aBuffer,
  uint16_t aSize
)

Mengonversi alamat menjadi string.

Format string menggunakan notasi titik-titik empat byte dalam alamat (mis., "127.0.0.1").

Jika string yang dihasilkan tidak sesuai dengan aBuffer (dalam karakter aSize-nya), string akan terpotong tetapi string yang dihasilkan selalu dihentikan null.

Detail
Parameter
[in] aAddress
Pointer ke alamat IPv4 (HARUS TIDAK NULL).
[out] aBuffer
Pointer ke array karakter untuk menghasilkan string (TIDAK BOLEH nullptr).
[in] aSize
Ukuran aBuffer (dalam byte).

otIp4CidrFromString

otError otIp4CidrFromString(
  const char *aString,
  otIp4Cidr *aCidr
)

Mengonversi string CIDR IPv4 yang dapat dibaca manusia menjadi representasi biner.

Detail
Parameter
[in] aString
Pointer ke string yang dihentikan NULL.
[out] aCidr
Pointer ke CIDR IPv4.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil mengurai string.
OT_ERROR_INVALID_ARGS
Gagal mengurai string.

otIp4CidrToString

void otIp4CidrToString(
  const otIp4Cidr *aCidr,
  char *aBuffer,
  uint16_t aSize
)

Mengonversi CIDR IPv4 menjadi string.

Format string menggunakan notasi bertitik empat byte dalam alamat dengan panjang awalan (mis., "127.0.0.1/32").

Jika string yang dihasilkan tidak sesuai dengan aBuffer (dalam karakter aSize-nya), string akan terpotong tetapi string yang dihasilkan selalu dihentikan null.

Detail
Parameter
[in] aCidr
Pointer ke CIDR IPv4 (TIDAK BOLEH NULL).
[out] aBuffer
Pointer ke array karakter untuk menghasilkan string (TIDAK BOLEH nullptr).
[in] aSize
Ukuran aBuffer (dalam byte).

otIp4ExtractFromIp6Address

void otIp4ExtractFromIp6Address(
  uint8_t aPrefixLength,
  const otIp6Address *aIp6Address,
  otIp4Address *aIp4Address
)

Tetapkan aIp4Address dengan melakukan terjemahan alamat NAT64 dari aIp6Address seperti yang ditentukan dalam RFC 6052.

aPrefixLength NAT64 HARUS berupa salah satu dari nilai berikut: 32, 40, 48, 56, 64, atau 96. Jika tidak, perilaku metode ini tidak dapat ditentukan.

Detail
Parameter
[in] aPrefixLength
Panjang awalan yang digunakan untuk terjemahan IPv4/IPv6.
[in] aIp6Address
Penunjuk ke alamat IPv6.
[out] aIp4Address
Pointer untuk menghasilkan output alamat IPv4.

otIp4IsAddressEqual

bool otIp4IsAddressEqual(
  const otIp4Address *aFirst,
  const otIp4Address *aSecond
)

Uji apakah dua alamat IPv4 adalah sama.

Detail
Parameter
[in] aFirst
Penunjuk ke alamat IPv4 pertama untuk dibandingkan.
[in] aSecond
Penunjuk ke alamat IPv4 kedua untuk dibandingkan.
Nilai Pengembalian
TRUE
Kedua alamat IPv4 itu sama.
FALSE
Kedua alamat IPv4 tidak sama.

otIp4NewMessage

otMessage * otIp4NewMessage(
  otInstance *aInstance,
  const otMessageSettings *aSettings
)

Mengalokasikan buffering pesan baru untuk mengirim pesan IPv4 ke penerjemah NAT64.

Buffering pesan yang dialokasikan oleh fungsi ini akan memiliki 20 byte (perbedaan antara ukuran header IPv6 dan ukuran header IPv4) yang dicadangkan.

Tersedia jika OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE diaktifkan.

Detail
Parameter
[in] aInstance
Pointer ke instance OpenThread.
[in] aSettings
Pointer ke setelan pesan atau NULL untuk menetapkan setelan default.
Hasil
Pointer ke buffer pesan atau NULL jika tidak ada buffer pesan yang tersedia atau parameter tidak valid.
Lihat juga:
otNat64Send

otNat64GetCidr

otError otNat64GetCidr(
  otInstance *aInstance,
  otIp4Cidr *aCidr
)

Mendapatkan CIDR IPv4 yang dikonfigurasi di penerjemah NAT64.

Tersedia jika OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE diaktifkan.

Detail
Parameter
[in] aInstance
Pointer ke instance OpenThread.
[out] aCidr
Pointer ke otIp4Cidr. Tempat CIDR akan diisi.

otNat64GetCounters

void otNat64GetCounters(
  otInstance *aInstance,
  otNat64ProtocolCounters *aCounters
)

Mendapatkan penghitung penerjemah NAT64.

Penghitung dihitung sejak instance diinisialisasi.

Tersedia jika OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE diaktifkan.

Detail
Parameter
[in] aInstance
Pointer ke instance OpenThread.
[out] aCounters
Pointer ke otNat64Counters tempat penghitung penerjemah NAT64 akan ditempatkan.

otNat64GetErrorCounters

void otNat64GetErrorCounters(
  otInstance *aInstance,
  otNat64ErrorCounters *aCounters
)

Mendapatkan penghitung error penerjemah NAT64.

Penghitung diinisialisasi ke nol saat instance OpenThread diinisialisasi.

Detail
Parameter
[in] aInstance
Pointer ke instance OpenThread.
[out] aCounters
Pointer ke otNat64Counters tempat penghitung penerjemah NAT64 akan ditempatkan.

otNat64GetNextAddressMapping

otError otNat64GetNextAddressMapping(
  otInstance *aInstance,
  otNat64AddressMappingIterator *aIterator,
  otNat64AddressMapping *aMapping
)

Mendapatkan info AddressMapping berikutnya (menggunakan iterator).

Tersedia jika OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE diaktifkan.

Detail
Parameter
[in] aInstance
Pointer ke instance OpenThread.
[in,out] aIterator
Pointer ke iterator. Setelah berhasil, iterator akan diperbarui agar mengarah ke data pemetaan alamat NAT64 berikutnya. Untuk mendapatkan entri pertama, iterator harus disetel ke OT_NAT64_ADDRESS_MAPPING_ITERATOR_INIT.
[out] aMapping
Pointer ke otNat64AddressMapping tempat informasi data pemetaan alamat NAT64 berikutnya ditempatkan (jika berhasil).
Nilai Pengembalian
OT_ERROR_NONE
Berhasil menemukan info pemetaan alamat NAT64 berikutnya (aMapping berhasil diperbarui).
OT_ERROR_NOT_FOUND
Tidak ditemukan info pemetaan alamat NAT64 berikutnya.

otNat64GetPrefixManagerState

otNat64State otNat64GetPrefixManagerState(
  otInstance *aInstance
)

Mendapatkan status pengelola awalan NAT64.

Tersedia jika OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE diaktifkan.

Detail
Parameter
[in] aInstance
Pointer ke instance OpenThread.
Nilai Pengembalian
OT_NAT64_STATE_DISABLED
Pengelola awalan NAT64 dinonaktifkan.
OT_NAT64_STATE_NOT_RUNNING
Pengelola awalan NAT64 diaktifkan, tetapi tidak berjalan (karena pengelola perutean tidak berjalan).
OT_NAT64_STATE_IDLE
Pengelola awalan NAT64 diaktifkan, tetapi tidak memublikasikan awalan NAT64. Biasanya ketika ada router pembatas lain yang menerbitkan awalan NAT64 dengan prioritas lebih tinggi.
OT_NAT64_STATE_ACTIVE
Pengelola awalan NAT64 diaktifkan, dan memublikasikan awalan NAT64 ke jaringan Thread.

otNat64GetTranslatorState

otNat64State otNat64GetTranslatorState(
  otInstance *aInstance
)

Mendapatkan status penerjemah NAT64.

Tersedia jika OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE diaktifkan.

Detail
Parameter
[in] aInstance
Pointer ke instance OpenThread.
Nilai Pengembalian
OT_NAT64_STATE_DISABLED
Penerjemah NAT64 dinonaktifkan.
OT_NAT64_STATE_NOT_RUNNING
Penerjemah NAT64 diaktifkan, tetapi penerjemah tidak dikonfigurasi dengan awalan NAT64 yang valid dan CIDR.
OT_NAT64_STATE_ACTIVE
Penerjemah NAT64 diaktifkan, dan sedang menerjemahkan paket.

otNat64InitAddressMappingIterator

void otNat64InitAddressMappingIterator(
  otInstance *aInstance,
  otNat64AddressMappingIterator *aIterator
)

Menginisialisasi otNat64AddressMappingIterator.

Iterator HARUS diinisialisasi sebelum digunakan.

Iterator dapat diinisialisasi lagi untuk memulai ulang dari awal info pemetaan.

Detail
Parameter
[in] aInstance
Instance OpenThread.
[out] aIterator
Pointer ke iterator yang akan diinisialisasi.

otNat64Send

otError otNat64Send(
  otInstance *aInstance,
  otMessage *aMessage
)

Menerjemahkan datagram IPv4 ke datagram IPv6 dan mengirimkannya melalui antarmuka Thread.

Penelepon mentransfer kepemilikan aMessage saat melakukan panggilan ini. OpenThread akan membebaskan aMessage saat pemrosesan selesai, termasuk saat nilai selain OT_ERROR_NONE ditampilkan.

Detail
Parameter
[in] aInstance
Pointer ke instance OpenThread.
[in] aMessage
Penunjuk ke {i>buffer<i} pesan yang berisi datagram IPv4.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil memproses pesan.
OT_ERROR_DROP
Pesan diformat dengan baik, tetapi tidak sepenuhnya diproses karena aturan pemrosesan paket.
OT_ERROR_NO_BUFS
Tidak dapat mengalokasikan buffer pesan yang diperlukan saat memproses datagram.
OT_ERROR_NO_ROUTE
Tidak ada rute untuk dihosting.
OT_ERROR_INVALID_SOURCE_ADDRESS
Alamat sumber tidak valid, misalnya alamat anycast atau alamat multicast.
OT_ERROR_PARSE
Menemukan header yang salah format saat memproses pesan.

otNat64SetEnabled

void otNat64SetEnabled(
  otInstance *aInstance,
  bool aEnabled
)

Mengaktifkan atau menonaktifkan fungsi NAT64.

Catatan: Ini termasuk Penerjemah NAT64 (saat OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE diaktifkan) dan Prefix Manager NAT64 (saat OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE diaktifkan).

Jika OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE diaktifkan, menyetel dinonaktifkan ke benar (true) akan mereset tabel pemetaan di penerjemah.

Tersedia saat OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE atau OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE diaktifkan.

Detail
Parameter
[in] aInstance
Pointer ke instance OpenThread.
[in] aEnabled
Boolean untuk mengaktifkan/menonaktifkan fungsi NAT64
Lihat juga:
otNat64GetTranslatorState
otNat64GetPrefixManagerState

otNat64SetIp4Cidr

otError otNat64SetIp4Cidr(
  otInstance *aInstance,
  const otIp4Cidr *aCidr
)

Menetapkan CIDR yang digunakan saat menetapkan alamat sumber paket IPv4 keluar yang diterjemahkan.

Hanya tersedia jika OPENANCHOR_CONFIG_NAT64_TRANSLATOR_ENABLE diaktifkan.

Detail
Parameter
[in] aInstance
Pointer ke instance OpenThread.
[in] aCidr
Pointer ke otIp4Cidr untuk blok CIDR IPv4 untuk NAT64.
Nilai Pengembalian
OT_ERROR_INVALID_ARGS
CIDR yang diberikan bukan CIDR IPv4 yang valid untuk NAT64.
OT_ERROR_NONE
Berhasil menyetel CIDR untuk NAT64.
Lihat juga:
otBorderRouterSend
otBorderRouterSetReceiveCallback

otNat64SetReceiveIp4Callback

void otNat64SetReceiveIp4Callback(
  otInstance *aInstance,
  otNat64ReceiveIp4Callback aCallback,
  void *aContext
)

Mendaftarkan callback untuk menyediakan datagram IPv4 yang diterima.

Detail
Parameter
[in] aInstance
Pointer ke instance OpenThread.
[in] aCallback
Pointer ke fungsi yang dipanggil ketika datagram IPv4 diterima atau NULL untuk menonaktifkan callback.
[in] aContext
Pointer ke konteks khusus aplikasi.

otNat64SynthesizeIp6Address

otError otNat64SynthesizeIp6Address(
  otInstance *aInstance,
  const otIp4Address *aIp4Address,
  otIp6Address *aIp6Address
)

Menyetel alamat IPv6 dengan melakukan penerjemahan alamat NAT64 dari awalan NAT64 yang disukai dan alamat IPv4 yang diberikan seperti yang ditentukan dalam RFC 6052.

Detail
Parameter
[in] aInstance
Pointer ke instance OpenThread.
[in] aIp4Address
Penunjuk ke alamat IPv4 untuk diterjemahkan ke IPv6.
[out] aIp6Address
Penunjuk ke alamat IPv6 yang disintesis.
Hasil
OT_ERROR_NONE Berhasil menyintesis alamat IPv6 dari awalan NAT64 dan alamat IPv4.
Hasil
OT_ERROR_INVALID_STATE Tidak ada awalan NAT64 yang valid dalam data jaringan.

Makro

OT_IP4_ADDRESS_SIZE

 OT_IP4_ADDRESS_SIZE 4

Ukuran alamat IPv4 (byte)

OT_IP4_ADDRESS_STRING_SIZE

 OT_IP4_ADDRESS_STRING_SIZE 17

Panjang 000.000.000.000 ditambah akhiran NUL.

OT_IP4_CIDR_STRING_SIZE

 OT_IP4_CIDR_STRING_SIZE 20

Panjang 000.000.000.000/00 ditambah akhiran NUL.

Referensi

Topik Referensi OpenThread API berasal dari kode sumber yang tersedia di GitHub. Untuk informasi selengkapnya, atau untuk berkontribusi pada dokumentasi kami, lihat Referensi.