NAT64

โมดูลนี้มีฟังก์ชันและโครงสร้างสำหรับฟังก์ชัน NAT64 บน Border Router

สรุป

ฟังก์ชันเหล่านี้จะใช้งานได้เมื่อเปิดใช้ OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE เท่านั้น

การแจกแจง

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
เหตุผลของการเลิกใช้งานแพ็กเก็ต
otNat64State{
  OT_NAT64_STATE_DISABLED = 0,
  OT_NAT64_STATE_NOT_RUNNING,
  OT_NAT64_STATE_IDLE,
  OT_NAT64_STATE_ACTIVE
}
enum
สถานะของ NAT64

Typedef

otIp4Address typedef
struct otIp4Address
แสดงที่อยู่ IPv4
otIp4Cidr typedef
struct otIp4Cidr
otNat64AddressMapping typedef
แสดงระเบียนการแมปที่อยู่สำหรับ NAT64
otNat64AddressMappingIterator typedef
ใช้ในการทำซ้ำผ่านการแมปที่อยู่ NAT64
otNat64Counters typedef
แสดงตัวนับสำหรับ NAT64
otNat64DropReason typedef
เหตุผลของการเลิกใช้งานแพ็กเก็ต
otNat64ErrorCounters typedef
แสดงตัวนับของแพ็กเก็ตที่ลดลงเนื่องจากข้อผิดพลาดเมื่อจัดการแพ็กเก็ต NAT64
otNat64ProtocolCounters typedef
แสดงตัวนับสำหรับโปรโตคอลที่ NAT64 รองรับ
otNat64ReceiveIp4Callback)(otMessage *aMessage, void *aContext) typedef
void(*
ระบบจะเรียก Pointer เมื่อได้รับ IPv4 Datagram (แปลโดยนักแปล NAT64)

ตัวแปร

OT_TOOL_PACKED_END

ฟังก์ชัน

otIp4AddressFromString(const char *aString, otIp4Address *aAddress)
แปลงสตริงที่อยู่ IPv4 ที่มนุษย์อ่านได้เป็นค่าแทนแบบไบนารี
otIp4AddressToString(const otIp4Address *aAddress, char *aBuffer, uint16_t aSize)
void
แปลงที่อยู่เป็นสตริง
otIp4CidrFromString(const char *aString, otIp4Cidr *aCidr)
แปลงสตริง IPv4 CIDR ที่มนุษย์อ่านได้เป็นไบนารี
otIp4CidrToString(const otIp4Cidr *aCidr, char *aBuffer, uint16_t aSize)
void
แปลง IPv4 CIDR เป็นสตริง
otIp4ExtractFromIp6Address(uint8_t aPrefixLength, const otIp6Address *aIp6Address, otIp4Address *aIp4Address)
void
ตั้งค่า aIp4Address โดยแปลที่อยู่ NAT64 จาก aIp6Address ตามที่ระบุไว้ใน RFC 6052
otIp4IsAddressEqual(const otIp4Address *aFirst, const otIp4Address *aSecond)
bool
ทดสอบว่าที่อยู่ IPv4 ซ้ำกัน 2 รายการหรือไม่
otIp4NewMessage(otInstance *aInstance, const otMessageSettings *aSettings)
จัดสรรบัฟเฟอร์ข้อความใหม่สำหรับการส่งข้อความ IPv4 ไปยังเครื่องมือแปล NAT64
otNat64GetCidr(otInstance *aInstance, otIp4Cidr *aCidr)
รับ IPv4 CIDR ที่กำหนดค่าไว้ในเครื่องมือแปล NAT64
otNat64GetCounters(otInstance *aInstance, otNat64ProtocolCounters *aCounters)
void
รับตัวนับเครื่องแปล NAT64
otNat64GetErrorCounters(otInstance *aInstance, otNat64ErrorCounters *aCounters)
void
รับตัวนับข้อผิดพลาดของนักแปล NAT64
otNat64GetNextAddressMapping(otInstance *aInstance, otNat64AddressMappingIterator *aIterator, otNat64AddressMapping *aMapping)
รับข้อมูล AddressMapping ถัดไป (โดยใช้ตัวซ้ำ)
otNat64GetPrefixManagerState(otInstance *aInstance)
รับสถานะของเครื่องมือจัดการคำนำหน้า NAT64
otNat64GetTranslatorState(otInstance *aInstance)
รับสถานะของเครื่องมือแปล NAT64
otNat64InitAddressMappingIterator(otInstance *aInstance, otNat64AddressMappingIterator *aIterator)
void
เริ่มต้น otNat64AddressMappingIterator
otNat64Send(otInstance *aInstance, otMessage *aMessage)
แปล IPv4 Datagram เป็น IPv6 Datagram และส่งผ่านอินเทอร์เฟซ Thread
otNat64SetEnabled(otInstance *aInstance, bool aEnabled)
void
เปิดหรือปิดใช้ฟังก์ชัน NAT64
otNat64SetIp4Cidr(otInstance *aInstance, const otIp4Cidr *aCidr)
ตั้งค่า CIDR ที่ใช้เมื่อตั้งค่าที่อยู่ต้นทางของแพ็กเกต IPv4 ที่แปลเป็นขาออก
otNat64SetReceiveIp4Callback(otInstance *aInstance, otNat64ReceiveIp4Callback aCallback, void *aContext)
void
ลงทะเบียนโค้ดเรียกกลับเพื่อระบุ Datagram ของ IPv4 ที่ได้รับ
otNat64SynthesizeIp6Address(otInstance *aInstance, const otIp4Address *aIp4Address, otIp6Address *aIp6Address)
ตั้งค่าที่อยู่ IPv6 โดยแปลที่อยู่ NAT64 จากคำนำหน้า NAT64 ที่ต้องการและที่อยู่ IPv4 ที่ระบุตามที่ระบุใน RFC 6052

โครงสร้าง

otIp4Address

แสดงที่อยู่ IPv4

otIp4Cidr

แสดงบล็อก IPv4 CIDR

otNat64AddressMapping

แสดงระเบียนการแมปที่อยู่สำหรับ NAT64

otNat64AddressMappingIterator

ใช้ในการทำซ้ำผ่านการแมปที่อยู่ NAT64

otNat64Counters

แสดงตัวนับสำหรับ NAT64

otNat64ErrorCounters

แสดงตัวนับของแพ็กเก็ตที่ลดลงเนื่องจากข้อผิดพลาดเมื่อจัดการแพ็กเก็ต NAT64

otNat64ProtocolCounters

แสดงตัวนับสำหรับโปรโตคอลที่ NAT64 รองรับ

สหภาพ

otIp4Address::OT_TOOL_PACKED_FIELD

การแจกแจง

otNat64DropReason

 otNat64DropReason

เหตุผลของการเลิกใช้งานแพ็กเก็ต

พร็อพเพอร์ตี้
OT_NAT64_DROP_REASON_ILLEGAL_PACKET

แพ็กเก็ตที่ลดลงเนื่องจากแยกวิเคราะห์ Datagram ไม่สำเร็จ

OT_NAT64_DROP_REASON_NO_MAPPING

แพ็กเก็ตที่ลดลงเนื่องจากไม่พบการแมป หรือมีการใช้พูลการแมปจนหมด

OT_NAT64_DROP_REASON_UNKNOWN

แพ็กเกตลดลงโดยไม่ทราบสาเหตุ

OT_NAT64_DROP_REASON_UNSUPPORTED_PROTO

แพ็กเกตลดลงเนื่องจากโปรโตคอล IP ที่ไม่รองรับ

otNat64State

 otNat64State

สถานะของ NAT64

พร็อพเพอร์ตี้
OT_NAT64_STATE_ACTIVE

BR กำลังเผยแพร่คำนำหน้า NAT64 และ/หรือการแปลแพ็กเก็ต

OT_NAT64_STATE_DISABLED

NAT64 ปิดอยู่

OT_NAT64_STATE_IDLE

เปิดใช้ NAT64 อยู่ แต่ BR นี้ไม่ใช่ NAT64 BR ที่ใช้งานอยู่

OT_NAT64_STATE_NOT_RUNNING

เปิดใช้ NAT64 อยู่ แต่ทรัพยากร Dependency ของ NAT64 อย่างน้อย 1 รายการไม่ทำงาน

Typedef

otIp4Address

struct otIp4Address otIp4Address

แสดงที่อยู่ IPv4

otIp4Cidr

struct otIp4Cidr otIp4Cidr

otNat64AddressMapping

struct otNat64AddressMapping otNat64AddressMapping

แสดงระเบียนการแมปที่อยู่สำหรับ NAT64

otNat64AddressMappingIterator

struct otNat64AddressMappingIterator otNat64AddressMappingIterator

ใช้ในการทำซ้ำผ่านการแมปที่อยู่ NAT64

ช่องประเภทนี้จะทึบแสง (มีไว้ใช้กับ OpenThread Core เท่านั้น) ผู้โทรจึงไม่ควรเข้าถึงหรือใช้งานฟิลด์ดังกล่าว

ต้องเริ่มต้นโดยใช้ otNat64AddressMappingIteratorInit() ก่อนใช้ตัวซ้ำ

otNat64Counters

struct otNat64Counters otNat64Counters

แสดงตัวนับสำหรับ NAT64

otNat64DropReason

enum otNat64DropReason otNat64DropReason

เหตุผลของการเลิกใช้งานแพ็กเก็ต

otNat64ErrorCounters

struct otNat64ErrorCounters otNat64ErrorCounters

แสดงตัวนับของแพ็กเก็ตที่ลดลงเนื่องจากข้อผิดพลาดเมื่อจัดการแพ็กเก็ต NAT64

otNat64ProtocolCounters

struct otNat64ProtocolCounters otNat64ProtocolCounters

แสดงตัวนับสำหรับโปรโตคอลที่ NAT64 รองรับ

otNat64ReceiveIp4Callback

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

ระบบจะเรียก Pointer เมื่อได้รับ IPv4 Datagram (แปลโดยนักแปล NAT64)

รายละเอียด
พารามิเตอร์
[in] aMessage
ตัวชี้ไปยังบัฟเฟอร์ข้อความที่มี IPv6 Datagram ที่ได้รับ ฟังก์ชันนี้โอนการเป็นเจ้าของ aMessage ให้กับผู้รับของโค้ดเรียกกลับ ผู้รับสายโทรกลับควรปล่อยข้อความหลังจากประมวลผลแล้ว
[in] aContext
ตัวชี้ไปยังบริบทเฉพาะแอปพลิเคชัน

ตัวแปร

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otIp4Address OT_TOOL_PACKED_END

ฟังก์ชัน

otIp4AddressFromString

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

แปลงสตริงที่อยู่ IPv4 ที่มนุษย์อ่านได้เป็นค่าแทนแบบไบนารี

รายละเอียด
พารามิเตอร์
[in] aString
ตัวชี้ไปยังสตริงที่สิ้นสุดค่า NULL
[out] aAddress
ตัวชี้ไปยังที่อยู่ IPv4
แสดงผลค่า
OT_ERROR_NONE
แยกวิเคราะห์สตริงสำเร็จแล้ว
OT_ERROR_INVALID_ARGS
แยกวิเคราะห์สตริงไม่สำเร็จ

otIp4AddressToString

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

แปลงที่อยู่เป็นสตริง

รูปแบบสตริงนี้ใช้สัญลักษณ์จุดไข่ปลาจำนวน 4 ไบต์ในที่อยู่ (เช่น "127.0.0.1")

หากสตริงผลลัพธ์ไม่พอดีกับ aBuffer (ภายใน aSize อักขระ) ระบบจะตัดสตริงให้สั้นลง แต่สตริงที่ส่งออกจะเป็นค่าว่างเสมอ

รายละเอียด
พารามิเตอร์
[in] aAddress
ตัวชี้ไปยังที่อยู่ IPv4 (ต้องไม่ใช่ NULL)
[out] aBuffer
ตัวชี้ไปยังอาร์เรย์อักขระเพื่อแสดงสตริง (ต้องไม่ใช่ nullptr)
[in] aSize
ขนาด aBuffer (ในหน่วยไบต์)

otIp4CidrFromString

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

แปลงสตริง IPv4 CIDR ที่มนุษย์อ่านได้เป็นไบนารี

รายละเอียด
พารามิเตอร์
[in] aString
ตัวชี้ไปยังสตริงที่สิ้นสุดค่า NULL
[out] aCidr
ตัวชี้ไปยัง IPv4 CIDR
แสดงผลค่า
OT_ERROR_NONE
แยกวิเคราะห์สตริงสำเร็จแล้ว
OT_ERROR_INVALID_ARGS
แยกวิเคราะห์สตริงไม่สำเร็จ

otIp4CidrToString

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

แปลง IPv4 CIDR เป็นสตริง

รูปแบบสตริงใช้เครื่องหมายจุดไข่ปลาจำนวน 4 ไบต์ในที่อยู่โดยมีความยาวนำหน้า (เช่น "127.0.0.1/32")

หากสตริงผลลัพธ์ไม่พอดีกับ aBuffer (ภายใน aSize อักขระ) ระบบจะตัดสตริงให้สั้นลง แต่สตริงที่ส่งออกจะเป็นค่าว่างเสมอ

รายละเอียด
พารามิเตอร์
[in] aCidr
ตัวชี้ไปยัง IPv4 CIDR (ต้องไม่ใช่ NULL)
[out] aBuffer
ตัวชี้ไปยังอาร์เรย์อักขระเพื่อแสดงสตริง (ต้องไม่ใช่ nullptr)
[in] aSize
ขนาด aBuffer (ในหน่วยไบต์)

otIp4ExtractFromIp6Address

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

ตั้งค่า aIp4Address โดยแปลที่อยู่ NAT64 จาก aIp6Address ตามที่ระบุไว้ใน RFC 6052

aPrefixLength ของ NAT64 ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้: 32, 40, 48, 56, 64 หรือ 96 มิเช่นนั้นจะไม่สามารถระบุลักษณะการทำงานของวิธีนี้ได้

รายละเอียด
พารามิเตอร์
[in] aPrefixLength
ความยาวของคำนำหน้าที่ใช้สำหรับการแปล IPv4/IPv6
[in] aIp6Address
ตัวชี้ไปยังที่อยู่ IPv6
[out] aIp4Address
ตัวชี้สำหรับเอาต์พุตที่อยู่ IPv4

otIp4IsAddressEqual

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

ทดสอบว่าที่อยู่ IPv4 ซ้ำกัน 2 รายการหรือไม่

รายละเอียด
พารามิเตอร์
[in] aFirst
ตัวชี้ไปยังที่อยู่ IPv4 แรกเพื่อเปรียบเทียบ
[in] aSecond
ตัวชี้ไปยังที่อยู่ IPv4 ที่ 2 เพื่อเปรียบเทียบ
แสดงผลค่า
TRUE
ที่อยู่ IPv4 ทั้ง 2 ที่อยู่เหมือนกัน
FALSE
ที่อยู่ IPv4 ทั้งสองนี้ไม่เหมือนกัน

otIp4NewMessage

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

จัดสรรบัฟเฟอร์ข้อความใหม่สำหรับการส่งข้อความ IPv4 ไปยังเครื่องมือแปล NAT64

บัฟเฟอร์ข้อความที่ฟังก์ชันนี้จัดสรรไว้จะสงวนไว้ 20 ไบต์ (ความแตกต่างระหว่างขนาดของส่วนหัว IPv6 และขนาดส่วนหัว IPv4)

ใช้งานได้เมื่อเปิดใช้ OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE

รายละเอียด
พารามิเตอร์
[in] aInstance
ตัวชี้ไปยังอินสแตนซ์ OpenThread
[in] aSettings
ตัวชี้ไปยังการตั้งค่าข้อความหรือ NULL เพื่อตั้งค่าเริ่มต้น
การส่งคืน
ตัวชี้ไปยังบัฟเฟอร์ข้อความหรือค่า NULL หากไม่มีบัฟเฟอร์ข้อความหรือพารามิเตอร์ไม่ถูกต้อง
ดูเพิ่มเติม:
otNat64Send

otNat64GetCidr

otError otNat64GetCidr(
  otInstance *aInstance,
  otIp4Cidr *aCidr
)

รับ IPv4 CIDR ที่กำหนดค่าไว้ในเครื่องมือแปล NAT64

ใช้งานได้เมื่อเปิดใช้ OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE

รายละเอียด
พารามิเตอร์
[in] aInstance
ตัวชี้ไปยังอินสแตนซ์ OpenThread
[out] aCidr
ตัวชี้ไปยัง otIp4Cidr ตำแหน่งที่ระบบจะกรอก CIDR

otNat64GetCounters

void otNat64GetCounters(
  otInstance *aInstance,
  otNat64ProtocolCounters *aCounters
)

รับตัวนับเครื่องแปล NAT64

ระบบจะนับตัวนับนับตั้งแต่อินสแตนซ์เริ่มต้น

ใช้งานได้เมื่อเปิดใช้ OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE

รายละเอียด
พารามิเตอร์
[in] aInstance
ตัวชี้ไปยังอินสแตนซ์ OpenThread
[out] aCounters
ตัวชี้ไปยัง otNat64Counters ซึ่งจะวางตัวนับของนักแปล NAT64

otNat64GetErrorCounters

void otNat64GetErrorCounters(
  otInstance *aInstance,
  otNat64ErrorCounters *aCounters
)

รับตัวนับข้อผิดพลาดของนักแปล NAT64

ตัวนับจะเริ่มต้นเป็น 0 เมื่ออินสแตนซ์ OpenThread เริ่มต้น

รายละเอียด
พารามิเตอร์
[in] aInstance
ตัวชี้ไปยังอินสแตนซ์ OpenThread
[out] aCounters
ตัวชี้ไปยัง otNat64Counters ซึ่งจะวางตัวนับของนักแปล NAT64

otNat64GetNextAddressMapping

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

รับข้อมูล AddressMapping ถัดไป (โดยใช้ตัวซ้ำ)

ใช้งานได้เมื่อเปิดใช้ OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE

รายละเอียด
พารามิเตอร์
[in] aInstance
ตัวชี้ไปยังอินสแตนซ์ OpenThread
[in,out] aIterator
ตัวชี้ไปยังตัววนซ้ำ หากสำเร็จ ตัววนซ้ำจะได้รับการอัปเดตให้ชี้ไปยังระเบียนการจับคู่ที่อยู่ NAT64 ถัดไป ในการใช้รายการแรก ควรตั้งค่าตัววนซ้ำเป็น OT_NAT64_ADDRESS_MAPPING_ITERATOR_INIT
[out] aMapping
ตัวชี้ไปยัง otNat64AddressMapping ซึ่งเป็นตำแหน่งที่วางข้อมูลของบันทึกการแมปที่อยู่ NAT64 ถัดไป (เมื่อสําเร็จ)
แสดงผลค่า
OT_ERROR_NONE
พบข้อมูลการแมปที่อยู่ NAT64 ถัดไปเรียบร้อยแล้ว (อัปเดต aMapping เรียบร้อยแล้ว)
OT_ERROR_NOT_FOUND
ไม่พบข้อมูลการแมปที่อยู่ NAT64 ที่ตามมา

otNat64GetPrefixManagerState

otNat64State otNat64GetPrefixManagerState(
  otInstance *aInstance
)

รับสถานะของเครื่องมือจัดการคำนำหน้า NAT64

ใช้งานได้เมื่อเปิดใช้ OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE

รายละเอียด
พารามิเตอร์
[in] aInstance
ตัวชี้ไปยังอินสแตนซ์ OpenThread
แสดงผลค่า
OT_NAT64_STATE_DISABLED
ปิดใช้ตัวจัดการคำนำหน้า NAT64 อยู่
OT_NAT64_STATE_NOT_RUNNING
เปิดใช้ตัวจัดการคำนำหน้า NAT64 แล้ว แต่ไม่ทำงาน (เนื่องจากเครื่องมือจัดการการกำหนดเส้นทางไม่ทำงาน)
OT_NAT64_STATE_IDLE
เปิดใช้ตัวจัดการคำนำหน้า NAT64 อยู่แต่ไม่ได้เผยแพร่คำนำหน้า NAT64 โดยปกติแล้วเมื่อมี Border Router อีกตัวหนึ่งที่เผยแพร่คำนำหน้า NAT64 ที่มีลำดับความสำคัญสูงกว่า
OT_NAT64_STATE_ACTIVE
เปิดใช้ตัวจัดการคำนำหน้า NAT64 อยู่ และกำลังเผยแพร่คำนำหน้า NAT64 ไปยังเครือข่ายเทรด

otNat64GetTranslatorState

otNat64State otNat64GetTranslatorState(
  otInstance *aInstance
)

รับสถานะของเครื่องมือแปล NAT64

ใช้งานได้เมื่อเปิดใช้ OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE

รายละเอียด
พารามิเตอร์
[in] aInstance
ตัวชี้ไปยังอินสแตนซ์ OpenThread
แสดงผลค่า
OT_NAT64_STATE_DISABLED
ปิดใช้เครื่องมือแปล NAT64 อยู่
OT_NAT64_STATE_NOT_RUNNING
เปิดใช้นักแปล NAT64 อยู่ แต่นักแปลไม่ได้รับการกำหนดค่าด้วยคำนำหน้า NAT64 ที่ถูกต้องและ CIDR
OT_NAT64_STATE_ACTIVE
เครื่องมือแปล NAT64 เปิดใช้อยู่และกำลังแปลแพ็กเก็ต

otNat64InitAddressMappingIterator

void otNat64InitAddressMappingIterator(
  otInstance *aInstance,
  otNat64AddressMappingIterator *aIterator
)

เริ่มต้น otNat64AddressMappingIterator

เครื่องมือซ้ำต้องถูกเริ่มต้นก่อนใช้งาน

คุณสามารถเริ่มตัววนซ้ำอีกครั้งเพื่อรีสตาร์ทจากจุดเริ่มต้นของข้อมูลการแมป

รายละเอียด
พารามิเตอร์
[in] aInstance
อินสแตนซ์ OpenThread
[out] aIterator
ตัวชี้ไปยังตัววนซ้ำเพื่อเริ่มต้นใช้งาน

otNat64Send

otError otNat64Send(
  otInstance *aInstance,
  otMessage *aMessage
)

แปล IPv4 Datagram เป็น IPv6 Datagram และส่งผ่านอินเทอร์เฟซ Thread

ผู้โทรจะโอนสิทธิ์การเป็นเจ้าของ aMessage เมื่อทำการโทรนี้ OpenThread จะเพิ่มพื้นที่ว่าง aMessage เมื่อการประมวลผลเสร็จสมบูรณ์ รวมถึงเมื่อแสดงผลค่าอื่นที่ไม่ใช่ OT_ERROR_NONE

รายละเอียด
พารามิเตอร์
[in] aInstance
ตัวชี้ไปยังอินสแตนซ์ OpenThread
[in] aMessage
ตัวชี้ไปยังบัฟเฟอร์ข้อความที่มี IPv4 Datagram
แสดงผลค่า
OT_ERROR_NONE
ประมวลผลข้อความสำเร็จแล้ว
OT_ERROR_DROP
ข้อความมีรูปแบบที่ถูกต้อง แต่ยังประมวลผลไม่เสร็จสมบูรณ์เนื่องจากกฎการประมวลผลแพ็กเก็ต
OT_ERROR_NO_BUFS
จัดสรรบัฟเฟอร์ข้อความที่จำเป็นเมื่อประมวลผล Datagram ไม่ได้
OT_ERROR_NO_ROUTE
ไม่มีเส้นทางไปยังโฮสต์
OT_ERROR_INVALID_SOURCE_ADDRESS
ที่อยู่ต้นทางไม่ถูกต้อง เช่น ที่อยู่ Anycast หรือที่อยู่มัลติแคสต์
OT_ERROR_PARSE
พบส่วนหัวที่มีรูปแบบไม่ถูกต้องเมื่อประมวลผลข้อความ

otNat64SetEnabled

void otNat64SetEnabled(
  otInstance *aInstance,
  bool aEnabled
)

เปิดหรือปิดใช้ฟังก์ชัน NAT64

หมายเหตุ: เครื่องมือแปล NAT64 (เมื่อเปิดใช้ OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE) และเครื่องมือจัดการคำนำหน้า NAT64 (เมื่อเปิดใช้ OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE)

เมื่อเปิดใช้ OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE การตั้งค่า "ปิดใช้" เป็น "จริง" จะรีเซ็ตตารางการแมปในเครื่องมือแปลภาษา

ใช้งานได้เมื่อเปิดใช้ OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE หรือ OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE

รายละเอียด
พารามิเตอร์
[in] aInstance
ตัวชี้ไปยังอินสแตนซ์ OpenThread
[in] aEnabled
บูลีนสำหรับเปิด/ปิดใช้ฟังก์ชัน NAT64
ดูเพิ่มเติม:
otNat64GetTranslatorState
otNat64GetPrefixManagerState

otNat64SetIp4Cidr

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

ตั้งค่า CIDR ที่ใช้เมื่อตั้งค่าที่อยู่ต้นทางของแพ็กเกต IPv4 ที่แปลเป็นขาออก

ใช้งานได้เมื่อเปิดใช้ OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE เท่านั้น

รายละเอียด
พารามิเตอร์
[in] aInstance
ตัวชี้ไปยังอินสแตนซ์ OpenThread
[in] aCidr
ตัวชี้ไปยัง otIp4Cidr สําหรับบล็อก IPv4 CIDR สําหรับ NAT64
แสดงผลค่า
OT_ERROR_INVALID_ARGS
CIDR ที่ระบุไม่ใช่ CIDR แบบ IPv4 ที่ถูกต้องสำหรับ NAT64
OT_ERROR_NONE
ตั้งค่า CIDR สำหรับ NAT64 เรียบร้อยแล้ว
ดูเพิ่มเติม:
otBorderRouterSend
otBorderRouterSetReceiveCallback

otNat64SetReceiveIp4Callback

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

ลงทะเบียนโค้ดเรียกกลับเพื่อระบุ Datagram ของ IPv4 ที่ได้รับ

รายละเอียด
พารามิเตอร์
[in] aInstance
ตัวชี้ไปยังอินสแตนซ์ OpenThread
[in] aCallback
ตัวชี้ไปยังฟังก์ชันที่เรียกใช้เมื่อได้รับ IPv4 Datagram หรือมีค่า NULL เพื่อปิดใช้การเรียกกลับ
[in] aContext
ตัวชี้ไปยังบริบทเฉพาะแอปพลิเคชัน

otNat64SynthesizeIp6Address

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

ตั้งค่าที่อยู่ IPv6 โดยแปลที่อยู่ NAT64 จากคำนำหน้า NAT64 ที่ต้องการและที่อยู่ IPv4 ที่ระบุตามที่ระบุใน RFC 6052

รายละเอียด
พารามิเตอร์
[in] aInstance
ตัวชี้ไปยังอินสแตนซ์ OpenThread
[in] aIp4Address
ตัวชี้ไปยังที่อยู่ IPv4 ที่จะแปลเป็น IPv6
[out] aIp6Address
ตัวชี้ไปยังที่อยู่ IPv6 สังเคราะห์
การส่งคืน
OT_ERROR_NONE รวมที่อยู่ IPv6 จากคำนำหน้า NAT64 และที่อยู่ IPv4 สำเร็จแล้ว
การส่งคืน
OT_ERROR_INVALID_STATE ไม่มีคำนำหน้า NAT64 ที่ถูกต้องในข้อมูลเครือข่าย

มาโคร

OT_IP4_ADDRESS_SIZE

 OT_IP4_ADDRESS_SIZE 4

ขนาดของที่อยู่ IPv4 (ไบต์)

OT_IP4_ADDRESS_STRING_SIZE

 OT_IP4_ADDRESS_STRING_SIZE 17

ความยาว 000.000.000.000 และคำต่อท้าย NUL

OT_IP4_CIDR_STRING_SIZE

 OT_IP4_CIDR_STRING_SIZE 20

ความยาว 000.000.000.000/00 และคำต่อท้าย NUL

แหล่งข้อมูล

หัวข้ออ้างอิง API ของ OpenThread จะมาจากซอร์สโค้ดซึ่งพร้อมใช้งานใน GitHub ดูข้อมูลเพิ่มเติมหรือมีส่วนร่วมในเอกสารประกอบของเราได้ที่แหล่งข้อมูล