NAT64
โมดูลนี้มีฟังก์ชันและโครงสร้างสำหรับฟังก์ชัน NAT64 บน Border Router
สรุป
ฟังก์ชันเหล่านี้จะใช้งานได้เมื่อเปิดใช้ OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE
เท่านั้น
การแจกแจง |
|
---|---|
otNat64DropReason{
|
enum เหตุผลของการเลิกใช้งานแพ็กเก็ต |
otNat64State{
|
enum สถานะของ NAT64 |
Typedef |
|
---|---|
otIp4Address
|
typedefstruct otIp4Address
แสดงที่อยู่ IPv4 |
otIp4Cidr
|
typedefstruct otIp4Cidr
|
otNat64AddressMapping
|
typedefstruct otNat64AddressMapping
แสดงระเบียนการแมปที่อยู่สำหรับ NAT64 |
otNat64AddressMappingIterator
|
typedef ใช้ในการทำซ้ำผ่านการแมปที่อยู่ NAT64 |
otNat64Counters
|
typedefstruct otNat64Counters
แสดงตัวนับสำหรับ NAT64 |
otNat64DropReason
|
typedefenum otNat64DropReason
เหตุผลของการเลิกใช้งานแพ็กเก็ต |
otNat64ErrorCounters
|
typedefstruct otNat64ErrorCounters
แสดงตัวนับของแพ็กเก็ตที่ลดลงเนื่องจากข้อผิดพลาดเมื่อจัดการแพ็กเก็ต NAT64 |
otNat64ProtocolCounters
|
typedefstruct otNat64ProtocolCounters
แสดงตัวนับสำหรับโปรโตคอลที่ NAT64 รองรับ |
otNat64ReceiveIp4Callback)(otMessage *aMessage, void *aContext)
|
typedefvoid(*
ระบบจะเรียก Pointer เมื่อได้รับ IPv4 Datagram (แปลโดยนักแปล NAT64) |
ตัวแปร |
|
---|---|
OT_TOOL_PACKED_END
|
OT_TOOL_PACKED_BEGIN struct otIp4Address
|
ฟังก์ชัน |
|
---|---|
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:: |
การแจกแจง
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
otIp4Cidr
struct otIp4Cidr otIp4Cidr
otNat64AddressMapping
struct otNat64AddressMapping otNat64AddressMapping
แสดงระเบียนการแมปที่อยู่สำหรับ NAT64
otNat64AddressMappingIterator
struct otNat64AddressMappingIterator otNat64AddressMappingIterator
ใช้ในการทำซ้ำผ่านการแมปที่อยู่ NAT64
ช่องประเภทนี้จะทึบแสง (มีไว้ใช้กับ OpenThread Core เท่านั้น) ผู้โทรจึงไม่ควรเข้าถึงหรือใช้งานฟิลด์ดังกล่าว
ต้องเริ่มต้นโดยใช้ otNat64AddressMappingIteratorInit()
ก่อนใช้ตัวซ้ำ
otNat64ErrorCounters
struct otNat64ErrorCounters otNat64ErrorCounters
แสดงตัวนับของแพ็กเก็ตที่ลดลงเนื่องจากข้อผิดพลาดเมื่อจัดการแพ็กเก็ต NAT64
otNat64ProtocolCounters
struct otNat64ProtocolCounters otNat64ProtocolCounters
แสดงตัวนับสำหรับโปรโตคอลที่ NAT64 รองรับ
otNat64ReceiveIp4Callback
void(* otNat64ReceiveIp4Callback)(otMessage *aMessage, void *aContext)
ระบบจะเรียก Pointer เมื่อได้รับ IPv4 Datagram (แปลโดยนักแปล NAT64)
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
ตัวแปร
OT_TOOL_PACKED_END
OT_TOOL_PACKED_BEGIN struct otIp4Address OT_TOOL_PACKED_END
ฟังก์ชัน
otIp4AddressFromString
otError otIp4AddressFromString( const char *aString, otIp4Address *aAddress )
แปลงสตริงที่อยู่ IPv4 ที่มนุษย์อ่านได้เป็นค่าแทนแบบไบนารี
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
แสดงผลค่า |
|
otIp4AddressToString
void otIp4AddressToString( const otIp4Address *aAddress, char *aBuffer, uint16_t aSize )
แปลงที่อยู่เป็นสตริง
รูปแบบสตริงนี้ใช้สัญลักษณ์จุดไข่ปลาจำนวน 4 ไบต์ในที่อยู่ (เช่น "127.0.0.1")
หากสตริงผลลัพธ์ไม่พอดีกับ aBuffer
(ภายใน aSize
อักขระ) ระบบจะตัดสตริงให้สั้นลง แต่สตริงที่ส่งออกจะเป็นค่าว่างเสมอ
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
otIp4CidrFromString
otError otIp4CidrFromString( const char *aString, otIp4Cidr *aCidr )
แปลงสตริง IPv4 CIDR ที่มนุษย์อ่านได้เป็นไบนารี
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
แสดงผลค่า |
|
otIp4CidrToString
void otIp4CidrToString( const otIp4Cidr *aCidr, char *aBuffer, uint16_t aSize )
แปลง IPv4 CIDR เป็นสตริง
รูปแบบสตริงใช้เครื่องหมายจุดไข่ปลาจำนวน 4 ไบต์ในที่อยู่โดยมีความยาวนำหน้า (เช่น "127.0.0.1/32")
หากสตริงผลลัพธ์ไม่พอดีกับ aBuffer
(ภายใน aSize
อักขระ) ระบบจะตัดสตริงให้สั้นลง แต่สตริงที่ส่งออกจะเป็นค่าว่างเสมอ
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
otIp4ExtractFromIp6Address
void otIp4ExtractFromIp6Address( uint8_t aPrefixLength, const otIp6Address *aIp6Address, otIp4Address *aIp4Address )
ตั้งค่า aIp4Address
โดยแปลที่อยู่ NAT64 จาก aIp6Address
ตามที่ระบุไว้ใน RFC 6052
aPrefixLength
ของ NAT64 ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้: 32, 40, 48, 56, 64 หรือ 96 มิเช่นนั้นจะไม่สามารถระบุลักษณะการทำงานของวิธีนี้ได้
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
otIp4IsAddressEqual
bool otIp4IsAddressEqual( const otIp4Address *aFirst, const otIp4Address *aSecond )
ทดสอบว่าที่อยู่ IPv4 ซ้ำกัน 2 รายการหรือไม่
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
แสดงผลค่า |
|
otIp4NewMessage
otMessage * otIp4NewMessage( otInstance *aInstance, const otMessageSettings *aSettings )
จัดสรรบัฟเฟอร์ข้อความใหม่สำหรับการส่งข้อความ IPv4 ไปยังเครื่องมือแปล NAT64
บัฟเฟอร์ข้อความที่ฟังก์ชันนี้จัดสรรไว้จะสงวนไว้ 20 ไบต์ (ความแตกต่างระหว่างขนาดของส่วนหัว IPv6 และขนาดส่วนหัว IPv4)
ใช้งานได้เมื่อเปิดใช้ OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การส่งคืน |
ตัวชี้ไปยังบัฟเฟอร์ข้อความหรือค่า NULL หากไม่มีบัฟเฟอร์ข้อความหรือพารามิเตอร์ไม่ถูกต้อง
|
otNat64Send
otNat64GetCidr
otError otNat64GetCidr( otInstance *aInstance, otIp4Cidr *aCidr )
รับ IPv4 CIDR ที่กำหนดค่าไว้ในเครื่องมือแปล NAT64
ใช้งานได้เมื่อเปิดใช้ OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
otNat64GetCounters
void otNat64GetCounters( otInstance *aInstance, otNat64ProtocolCounters *aCounters )
รับตัวนับเครื่องแปล NAT64
ระบบจะนับตัวนับนับตั้งแต่อินสแตนซ์เริ่มต้น
ใช้งานได้เมื่อเปิดใช้ OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
otNat64GetErrorCounters
void otNat64GetErrorCounters( otInstance *aInstance, otNat64ErrorCounters *aCounters )
รับตัวนับข้อผิดพลาดของนักแปล NAT64
ตัวนับจะเริ่มต้นเป็น 0 เมื่ออินสแตนซ์ OpenThread เริ่มต้น
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
otNat64GetNextAddressMapping
otError otNat64GetNextAddressMapping( otInstance *aInstance, otNat64AddressMappingIterator *aIterator, otNat64AddressMapping *aMapping )
รับข้อมูล AddressMapping ถัดไป (โดยใช้ตัวซ้ำ)
ใช้งานได้เมื่อเปิดใช้ OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||
แสดงผลค่า |
|
otNat64GetPrefixManagerState
otNat64State otNat64GetPrefixManagerState( otInstance *aInstance )
รับสถานะของเครื่องมือจัดการคำนำหน้า NAT64
ใช้งานได้เมื่อเปิดใช้ OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE
รายละเอียด | |||||||||
---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||
แสดงผลค่า |
|
otNat64GetTranslatorState
otNat64State otNat64GetTranslatorState( otInstance *aInstance )
รับสถานะของเครื่องมือแปล NAT64
ใช้งานได้เมื่อเปิดใช้ OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||
แสดงผลค่า |
|
otNat64InitAddressMappingIterator
void otNat64InitAddressMappingIterator( otInstance *aInstance, otNat64AddressMappingIterator *aIterator )
เริ่มต้น otNat64AddressMappingIterator
เครื่องมือซ้ำต้องถูกเริ่มต้นก่อนใช้งาน
คุณสามารถเริ่มตัววนซ้ำอีกครั้งเพื่อรีสตาร์ทจากจุดเริ่มต้นของข้อมูลการแมป
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
otNat64Send
otError otNat64Send( otInstance *aInstance, otMessage *aMessage )
แปล IPv4 Datagram เป็น IPv6 Datagram และส่งผ่านอินเทอร์เฟซ Thread
ผู้โทรจะโอนสิทธิ์การเป็นเจ้าของ aMessage
เมื่อทำการโทรนี้ OpenThread จะเพิ่มพื้นที่ว่าง aMessage
เมื่อการประมวลผลเสร็จสมบูรณ์ รวมถึงเมื่อแสดงผลค่าอื่นที่ไม่ใช่ OT_ERROR_NONE
รายละเอียด | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||||||||
แสดงผลค่า |
|
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
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
otNat64GetTranslatorState
otNat64GetPrefixManagerState
otNat64SetIp4Cidr
otError otNat64SetIp4Cidr( otInstance *aInstance, const otIp4Cidr *aCidr )
ตั้งค่า CIDR ที่ใช้เมื่อตั้งค่าที่อยู่ต้นทางของแพ็กเกต IPv4 ที่แปลเป็นขาออก
ใช้งานได้เมื่อเปิดใช้ OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE เท่านั้น
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
แสดงผลค่า |
|
otBorderRouterSend
otBorderRouterSetReceiveCallback
otNat64SetReceiveIp4Callback
void otNat64SetReceiveIp4Callback( otInstance *aInstance, otNat64ReceiveIp4Callback aCallback, void *aContext )
ลงทะเบียนโค้ดเรียกกลับเพื่อระบุ Datagram ของ IPv4 ที่ได้รับ
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
otNat64SynthesizeIp6Address
otError otNat64SynthesizeIp6Address( otInstance *aInstance, const otIp4Address *aIp4Address, otIp6Address *aIp6Address )
ตั้งค่าที่อยู่ IPv6 โดยแปลที่อยู่ NAT64 จากคำนำหน้า NAT64 ที่ต้องการและที่อยู่ IPv4 ที่ระบุตามที่ระบุใน RFC 6052
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
|
||||||
การส่งคืน |
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 ดูข้อมูลเพิ่มเติมหรือมีส่วนร่วมในเอกสารประกอบของเราได้ที่แหล่งข้อมูล