DNS

โมดูลนี้ประกอบด้วยฟังก์ชันที่ควบคุมการสื่อสาร DNS

สรุป

ฟังก์ชันในโมดูลนี้จะใช้ได้ต่อเมื่อมีการเปิดใช้งานฟีเจอร์ OPENTHREAD_CONFIG_DNS_CLIENT_ENABLE

การแจกแจง

otDnsNat64Mode{
  OT_DNS_NAT64_UNSPECIFIED = 0,
  OT_DNS_NAT64_ALLOW = 1,
  OT_DNS_NAT64_DISALLOW = 2
}
enum
Type แสดงถึงโหมด NAT64 ใน otDnsQueryConfig
otDnsRecursionFlag{
  OT_DNS_FLAG_UNSPECIFIED = 0,
  OT_DNS_FLAG_RECURSION_DESIRED = 1,
  OT_DNS_FLAG_NO_RECURSION = 2
}
enum
ประเภทแสดงถึงแฟล็ก "การทำซ้ำที่ต้องการ" (RD) ใน otDnsQueryConfig
otDnsServiceMode{
  OT_DNS_SERVICE_MODE_UNSPECIFIED = 0,
  OT_DNS_SERVICE_MODE_SRV = 1,
  OT_DNS_SERVICE_MODE_TXT = 2,
  OT_DNS_SERVICE_MODE_SRV_TXT = 3,
  OT_DNS_SERVICE_MODE_SRV_TXT_SEPARATE = 4,
  OT_DNS_SERVICE_MODE_SRV_TXT_OPTIMIZE = 5
}
enum
ประเภท แสดงถึงโหมดการแก้ปัญหาของบริการใน otDnsQueryConfig
otDnsTransportProto{
  OT_DNS_TRANSPORT_UDP = 1,
  OT_DNS_TRANSPORT_TCP = 2
}
enum
Type แสดงโปรโตคอล DNS Transport ใน otDnsQueryConfig

Typedef

otDnsAddressCallback)(otError aError, const otDnsAddressResponse *aResponse, void *aContext) typedef
void(*
ระบบจะเรียกใช้ตัวชี้เมื่อได้รับการตอบกลับจาก DNS สำหรับการค้นหาเพื่อแก้ปัญหาที่อยู่
otDnsAddressResponse typedef
การแสดงการตอบกลับคำขอ DNS ที่มีการแก้ไขที่อยู่แบบทึบ
otDnsBrowseCallback)(otError aError, const otDnsBrowseResponse *aResponse, void *aContext) typedef
void(*
ระบบจะเรียกใช้ตัวชี้เมื่อได้รับการตอบกลับ DNS สำหรับการค้นหาการเรียกดู (การแจงนับอินสแตนซ์บริการ)
otDnsBrowseResponse typedef
การแสดงการตอบกลับแบบทึบสำหรับคำขอ DNS การเรียกดู (การแจงนับอินสแตนซ์บริการ)
otDnsQueryConfig typedef
แสดงการกำหนดค่าการค้นหา DNS
otDnsServiceCallback)(otError aError, const otDnsServiceResponse *aResponse, void *aContext) typedef
void(*
ระบบจะเรียกใช้ตัวชี้เมื่อได้รับการตอบกลับ DNS สำหรับการค้นหาการแก้ปัญหาอินสแตนซ์บริการ
otDnsServiceInfo typedef
ระบุข้อมูลสำหรับอินสแตนซ์บริการ DNS
otDnsServiceResponse typedef
การเป็นตัวแทนแบบทึบของการตอบกลับคำขอ DNS เพื่อการแก้ปัญหาอินสแตนซ์บริการ
otDnsTxtEntry typedef
struct otDnsTxtEntry
แสดงรายการระเบียน TXT ที่แสดงคู่คีย์/ค่า (RFC 6763 - ส่วน 6.3)
otDnsTxtEntryIterator typedef
แสดงตัวซ้ำสำหรับรายการระเบียน TXT (คู่คีย์/ค่า)

ฟังก์ชัน

otDnsAddressResponseGetAddress(const otDnsAddressResponse *aResponse, uint16_t aIndex, otIp6Address *aAddress, uint32_t *aTtl)
รับที่อยู่ IPv6 ที่เชื่อมโยงกับการตอบสนอง DNS ของการแปลงที่อยู่
otDnsAddressResponseGetHostName(const otDnsAddressResponse *aResponse, char *aNameBuffer, uint16_t aNameBufferSize)
รับชื่อโฮสต์แบบเต็มที่เชื่อมโยงกับการตอบสนอง DNS สำหรับการแปลงที่อยู่
otDnsBrowseResponseGetHostAddress(const otDnsBrowseResponse *aResponse, const char *aHostName, uint16_t aIndex, otIp6Address *aAddress, uint32_t *aTtl)
รับที่อยู่ IPv6 ของโฮสต์จากการตอบสนองของการเรียกดู DNS (การแจงนับอินสแตนซ์บริการ)
otDnsBrowseResponseGetServiceInfo(const otDnsBrowseResponse *aResponse, const char *aInstanceLabel, otDnsServiceInfo *aServiceInfo)
รับข้อมูลสำหรับอินสแตนซ์บริการจากการตอบสนองการเรียกดู DNS (การแจงนับอินสแตนซ์บริการ)
otDnsBrowseResponseGetServiceInstance(const otDnsBrowseResponse *aResponse, uint16_t aIndex, char *aLabelBuffer, uint8_t aLabelBufferSize)
รับอินสแตนซ์บริการที่เชื่อมโยงกับการตอบสนองการเรียกดู DNS (การแจงนับอินสแตนซ์บริการ)
otDnsBrowseResponseGetServiceName(const otDnsBrowseResponse *aResponse, char *aNameBuffer, uint16_t aNameBufferSize)
รับชื่อบริการที่เชื่อมโยงกับการตอบกลับการเรียกดู DNS (การแจงนับอินสแตนซ์บริการ)
otDnsClientBrowse(otInstance *aInstance, const char *aServiceName, otDnsBrowseCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
ส่งคำค้นหาการเรียกดู DNS (การแจงนับอินสแตนซ์บริการ) สำหรับชื่อบริการที่ระบุ
otDnsClientGetDefaultConfig(otInstance *aInstance)
รับการกำหนดค่าการค้นหาเริ่มต้นในปัจจุบันที่ไคลเอ็นต์ DNS ใช้
otDnsClientResolveAddress(otInstance *aInstance, const char *aHostName, otDnsAddressCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
ส่งการค้นหา DNS เกี่ยวกับการแปลงที่อยู่สำหรับระเบียน AAAA (IPv6) สำหรับชื่อโฮสต์ที่ระบุ
otDnsClientResolveIp4Address(otInstance *aInstance, const char *aHostName, otDnsAddressCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
ส่งการค้นหา DNS เพื่อแก้ไขที่อยู่สำหรับระเบียน A (IPv4) ของชื่อโฮสต์ที่ระบุ
otDnsClientResolveService(otInstance *aInstance, const char *aInstanceLabel, const char *aServiceName, otDnsServiceCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
เริ่มการแปลงอินสแตนซ์บริการ DNS สำหรับอินสแตนซ์บริการที่ระบุ
otDnsClientResolveServiceAndHostAddress(otInstance *aInstance, const char *aInstanceLabel, const char *aServiceName, otDnsServiceCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
เริ่มต้นการแปลงอินสแตนซ์บริการ DNS สำหรับอินสแตนซ์บริการที่ระบุ พร้อมการแก้ไขที่อยู่ติดตามผลที่เป็นไปได้สำหรับชื่อโฮสต์ที่ค้นพบสำหรับอินสแตนซ์บริการ
otDnsClientSetDefaultConfig(otInstance *aInstance, const otDnsQueryConfig *aConfig)
void
ตั้งการกำหนดค่าการค้นหาเริ่มต้นในไคลเอ็นต์ DNS
otDnsEncodeTxtData(const otDnsTxtEntry *aTxtEntries, uint16_t aNumTxtEntries, uint8_t *aTxtData, uint16_t *aTxtDataLength)
เข้ารหัสรายการระเบียน TXT (คู่คีย์/ค่า) ที่ระบุเป็นข้อมูล TXT (รูปแบบต่อไปนี้ระบุโดย RFC 6763)
otDnsGetNextTxtEntry(otDnsTxtEntryIterator *aIterator, otDnsTxtEntry *aEntry)
แยกวิเคราะห์ข้อมูล TXT จากตัววนซ้ำและรับรายการระเบียน TXT ถัดไป (คู่คีย์/ค่า)
otDnsInitTxtEntryIterator(otDnsTxtEntryIterator *aIterator, const uint8_t *aTxtData, uint16_t aTxtDataLength)
void
เริ่มต้นตัววนซ้ำระเบียน TXT
otDnsIsNameCompressionEnabled(void)
bool
ระบุว่าได้เปิดใช้โหมด "การบีบอัดชื่อ DNS" หรือไม่
otDnsServiceResponseGetHostAddress(const otDnsServiceResponse *aResponse, const char *aHostName, uint16_t aIndex, otIp6Address *aAddress, uint32_t *aTtl)
รับที่อยู่ IPv6 ของโฮสต์จากการตอบสนองเพื่อแปลงอินสแตนซ์ของบริการ DNS
otDnsServiceResponseGetServiceInfo(const otDnsServiceResponse *aResponse, otDnsServiceInfo *aServiceInfo)
รับข้อมูลของอินสแตนซ์บริการจากการตอบสนองเพื่อการแก้ปัญหาอินสแตนซ์ของบริการ DNS
otDnsServiceResponseGetServiceName(const otDnsServiceResponse *aResponse, char *aLabelBuffer, uint8_t aLabelBufferSize, char *aNameBuffer, uint16_t aNameBufferSize)
รับชื่ออินสแตนซ์บริการที่เชื่อมโยงกับการตอบสนองการแก้ปัญหาของอินสแตนซ์บริการ DNS
otDnsSetNameCompressionEnabled(bool aEnabled)
void
เปิด/ปิดใช้โหมด "การบีบอัดชื่อ DNS"

โครงสร้าง

otDnsQueryConfig

แสดงการกำหนดค่าการค้นหา DNS

otDnsServiceInfo

ระบุข้อมูลสำหรับอินสแตนซ์บริการ DNS

otDnsTxtEntry

แสดงรายการระเบียน TXT ที่แสดงคู่คีย์/ค่า (RFC 6763 - ส่วน 6.3)

otDnsTxtEntryIterator

แสดงตัวซ้ำสำหรับรายการระเบียน TXT (คู่คีย์/ค่า)

การแจกแจง

otDnsNat64Mode

 otDnsNat64Mode

Type แสดงถึงโหมด NAT64 ใน otDnsQueryConfig

โหมด NAT64 จะระบุว่าจะอนุญาตหรือไม่อนุญาตการแปลที่อยู่ NAT64 ระหว่างการแปลงที่อยู่ไคลเอ็นต์ DNS ระบบจะใช้โหมดนี้เมื่อเปิดใช้ OPENTHREAD_CONFIG_DNS_CLIENT_NAT64_ENABLE เท่านั้น

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

อนุญาตการแปลที่อยู่ NAT64 ระหว่างการแปลงที่อยู่ไคลเอ็นต์ DNS

OT_DNS_NAT64_DISALLOW

ไม่อนุญาตให้แปลที่อยู่ NAT64 ระหว่างการแปลงที่อยู่ไคลเอ็นต์ DNS

OT_DNS_NAT64_UNSPECIFIED

ไม่ได้ระบุโหมด NAT64 ใช้โหมด NAT64 เริ่มต้น

otDnsRecursionFlag

 otDnsRecursionFlag

ประเภทแสดงถึงแฟล็ก "การทำซ้ำที่ต้องการ" (RD) ใน otDnsQueryConfig

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

ระบุว่าเนมเซิร์ฟเวอร์ DNS แก้ไขการค้นหาซ้ำไม่ได้

OT_DNS_FLAG_RECURSION_DESIRED

ระบุว่าเนมเซิร์ฟเวอร์ DNS แก้ไขการค้นหาซ้ำได้

OT_DNS_FLAG_UNSPECIFIED

บ่งบอกว่าไม่ได้ระบุธง

otDnsServiceMode

 otDnsServiceMode

ประเภท แสดงถึงโหมดการแก้ปัญหาของบริการใน otDnsQueryConfig

ซึ่งจะใช้ในระหว่างการแก้ปัญหาบริการไคลเอ็นต์ DNS otDnsClientResolveService() เท่านั้น ซึ่งจะเป็นตัวกำหนดประเภทระเบียนที่จะค้นหา

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

ข้อความค้นหาสำหรับระเบียน SRV เท่านั้น

OT_DNS_SERVICE_MODE_SRV_TXT

ข้อความค้นหาสำหรับทั้งระเบียน SRV และ TXT ในข้อความเดียวกัน

OT_DNS_SERVICE_MODE_SRV_TXT_OPTIMIZE

ค้นหา TXT/SRV ก่อน หากไม่สำเร็จก็จะค้นหาแยกต่างหาก

OT_DNS_SERVICE_MODE_SRV_TXT_SEPARATE

การค้นหาพร้อมกันสำหรับ SRV และ TXT โดยใช้ข้อความแยกต่างหาก

OT_DNS_SERVICE_MODE_TXT

การค้นหาระเบียน TXT เท่านั้น

OT_DNS_SERVICE_MODE_UNSPECIFIED

ไม่ได้ระบุโหมด ใช้โหมดบริการเริ่มต้น

otDnsTransportProto

 otDnsTransportProto

Type แสดงโปรโตคอล DNS Transport ใน otDnsQueryConfig

ระบบจะรองรับ OT_DNS_TRANSPORT_TCP นี้ก็ต่อเมื่อเปิดใช้ OPENTHREAD_CONFIG_DNS_CLIENT_OVER_TCP_ENABLE เท่านั้น

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

คำขอ DNS ควรส่งผ่าน UDP

OT_DNS_TRANSPORT_UDP

ไม่ได้ระบุการส่ง DNS

Typedef

otDnsAddressCallback

void(* otDnsAddressCallback)(otError aError, const otDnsAddressResponse *aResponse, void *aContext)

ระบบจะเรียกใช้ตัวชี้เมื่อได้รับการตอบกลับจาก DNS สำหรับการค้นหาเพื่อแก้ปัญหาที่อยู่

ภายในโค้ดเรียกกลับนี้ ผู้ใช้จะใช้ฟังก์ชัน otDnsAddressResponseGet{Item}() ร่วมกับตัวชี้ aResponse เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการตอบกลับได้

aResponse ตัวชี้สามารถใช้ภายในโค้ดเรียกกลับนี้ และหลังจากกลับมาจากฟังก์ชันนี้แล้ว ตัวชี้นี้จะไม่สามารถใช้งานได้ ดังนั้นผู้ใช้จะต้องไม่เก็บตัวชี้ aResponse ไว้ใช้ในภายหลัง

aError อาจมีสิ่งต่อไปนี้

รายละเอียด
พารามิเตอร์
[in] aError
ผลลัพธ์ของธุรกรรม DNS
[in] aResponse
ตัวชี้ไปยังคำตอบ (ไม่ใช่ NULL เสมอ)
[in] aContext
ตัวชี้ไปยังบริบทเฉพาะแอปพลิเคชัน

  • OT_ERROR_NONE ได้รับการตอบกลับสำเร็จแล้ว
  • OT_ERROR_ABORT ธุรกรรม DNS ถูกล้มเลิกโดยสแต็ก
  • OT_ERROR_RESPONSE_TIMEOUT ไม่ได้รับการตอบสนอง DNS ภายในระยะหมดเวลา

หากเซิร์ฟเวอร์ปฏิเสธคำขอแก้ไขที่อยู่ ระบบจะจับคู่รหัสข้อผิดพลาดจากเซิร์ฟเวอร์ดังนี้

  • (0) NOERROR สำเร็จ (ไม่มีเงื่อนไขข้อผิดพลาด) -> OT_ERROR_NONE
  • (1) เซิร์ฟเวอร์ FORMERR ไม่สามารถแปลผล เนื่องจากรูปแบบผิดพลาด -> OT_ERROR_PARSE
  • (2) เซิร์ฟเวอร์ SERVFAIL พบความล้มเหลวภายใน -> OT_ERROR_FAILED
  • (3) ชื่อ NXDOMAIN ที่ควรมีอยู่ ไม่มีอยู่ -> OT_ERROR_NOT_FOUND
  • (4) เซิร์ฟเวอร์ NOTIMP ไม่สนับสนุนประเภทข้อความค้นหา (OpCode) -> OT_ERROR_NOT_IMPLEMENTED
  • (5) เซิร์ฟเวอร์ REFUSED ถูกปฏิเสธเนื่องจากเหตุผลด้านนโยบาย/ความปลอดภัย -> OT_ERROR_SECURITY
  • (6) YXDOMAIN บางชื่อที่ไม่ควรมีอยู่ -> OT_ERROR_DUPLICATED
  • (7) YXRRSET บาง RRset ที่ไม่ควรมีอยู่ -> OT_ERROR_DUPLICATED
  • (8) NXRRSET ชุด RRset บางส่วนที่ควรมีอยู่ไม่มีอยู่ -> OT_ERROR_NOT_FOUND
  • (9) บริการ NOTAUTH ไม่ได้รับอนุญาตสำหรับโซน -> OT_ERROR_SECURITY
  • (10) NOTZONE A ไม่ได้อยู่ในโซน -> OT_ERROR_PARSE
  • (20) BADNAME ชื่อไม่ถูกต้อง -> OT_ERROR_PARSE
  • (21) BADALG อัลกอริทึมไม่ดี -> OT_ERROR_SECURITY
  • (22) BADTRUN การตัดข้อความไม่ดี -> OT_ERROR_PARSE
  • รหัสการตอบกลับอื่นๆ -> OT_ERROR_FAILED

otDnsAddressResponse

struct otDnsAddressResponse otDnsAddressResponse

การแสดงการตอบกลับคำขอ DNS ที่มีการแก้ไขที่อยู่แบบทึบ

เราได้ระบุตัวชี้ไปยังอินสแตนซ์ของประเภทนี้จากโค้ดเรียกกลับ otDnsAddressCallback

otDnsBrowseCallback

void(* otDnsBrowseCallback)(otError aError, const otDnsBrowseResponse *aResponse, void *aContext)

ระบบจะเรียกใช้ตัวชี้เมื่อได้รับการตอบกลับ DNS สำหรับการค้นหาการเรียกดู (การแจงนับอินสแตนซ์บริการ)

ภายในโค้ดเรียกกลับนี้ ผู้ใช้จะใช้ฟังก์ชัน otDnsBrowseResponseGet{Item}() ร่วมกับตัวชี้ aResponse เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการตอบกลับได้

aResponse ตัวชี้สามารถใช้ภายในโค้ดเรียกกลับนี้ และหลังจากกลับมาจากฟังก์ชันนี้แล้ว ตัวชี้นี้จะไม่สามารถใช้งานได้ ดังนั้นผู้ใช้จะต้องไม่เก็บตัวชี้ aResponse ไว้ใช้ในภายหลัง

สำหรับรายการค่าที่เป็นไปได้ทั้งหมดสำหรับ aError โปรดดูที่ otDnsAddressCallback()

รายละเอียด
พารามิเตอร์
[in] aError
ผลลัพธ์ของธุรกรรม DNS
[in] aResponse
ตัวชี้ไปยังคำตอบ (ไม่ใช่ NULL เสมอ)
[in] aContext
ตัวชี้ไปยังบริบทเฉพาะแอปพลิเคชัน

otDnsBrowseResponse

struct otDnsBrowseResponse otDnsBrowseResponse

การแสดงการตอบกลับแบบทึบสำหรับคำขอ DNS การเรียกดู (การแจงนับอินสแตนซ์บริการ)

เราได้ระบุตัวชี้ไปยังอินสแตนซ์ของประเภทนี้จากโค้ดเรียกกลับ otDnsBrowseCallback

otDnsQueryConfig

struct otDnsQueryConfig otDnsQueryConfig

แสดงการกำหนดค่าการค้นหา DNS

ฟิลด์ใดก็ได้ในโครงสร้างนี้สามารถตั้งค่าเป็น 0 เพื่อระบุว่าไม่ได้ระบุ วิธีดำเนินการกับช่องที่ไม่ได้ระบุจะกำหนดโดยฟังก์ชันที่ใช้อินสแตนซ์ของ otDnsQueryConfig

otDnsServiceCallback

void(* otDnsServiceCallback)(otError aError, const otDnsServiceResponse *aResponse, void *aContext)

ระบบจะเรียกใช้ตัวชี้เมื่อได้รับการตอบกลับ DNS สำหรับการค้นหาการแก้ปัญหาอินสแตนซ์บริการ

ภายในโค้ดเรียกกลับนี้ ผู้ใช้จะใช้ฟังก์ชัน otDnsServiceResponseGet{Item}() ร่วมกับตัวชี้ aResponse เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการตอบกลับได้

aResponse ตัวชี้สามารถใช้ภายในโค้ดเรียกกลับนี้ และหลังจากกลับมาจากฟังก์ชันนี้แล้ว ตัวชี้นี้จะไม่สามารถใช้งานได้ ดังนั้นผู้ใช้จะต้องไม่เก็บตัวชี้ aResponse ไว้ใช้ในภายหลัง

สำหรับรายการค่าที่เป็นไปได้ทั้งหมดสำหรับ aError โปรดดูที่ otDnsAddressCallback()

รายละเอียด
พารามิเตอร์
[in] aError
ผลลัพธ์ของธุรกรรม DNS
[in] aResponse
ตัวชี้ไปยังคำตอบ (ไม่ใช่ NULL เสมอ)
[in] aContext
ตัวชี้ไปยังบริบทเฉพาะแอปพลิเคชัน

otDnsServiceInfo

struct otDnsServiceInfo otDnsServiceInfo

ระบุข้อมูลสำหรับอินสแตนซ์บริการ DNS

otDnsServiceResponse

struct otDnsServiceResponse otDnsServiceResponse

การเป็นตัวแทนแบบทึบของการตอบกลับคำขอ DNS เพื่อการแก้ปัญหาอินสแตนซ์บริการ

เราได้ระบุตัวชี้ไปยังอินสแตนซ์ของประเภทนี้จากโค้ดเรียกกลับ otDnsAddressCallback

otDnsTxtEntry

struct otDnsTxtEntry otDnsTxtEntry

แสดงรายการระเบียน TXT ที่แสดงคู่คีย์/ค่า (RFC 6763 - ส่วน 6.3)

บัฟเฟอร์สตริงที่ mKey และ mValue ชี้ไปจะต้องมีอยู่และไม่มีการเปลี่ยนแปลงหลังจากที่ส่งอินสแตนซ์ของโครงสร้างดังกล่าวไปยัง OpenThread (ในฐานะส่วนหนึ่งของอินสแตนซ์ otSrpClientService)

ระบบใช้อาร์เรย์ของรายการ otDnsTxtEntry ใน otSrpClientService เพื่อระบุระเบียน TXT แบบเต็ม (รายการ)

otDnsTxtEntryIterator

struct otDnsTxtEntryIterator otDnsTxtEntryIterator

แสดงตัวซ้ำสำหรับรายการระเบียน TXT (คู่คีย์/ค่า)

ช่องข้อมูลในโครงสร้างนี้มีไว้สำหรับใช้โดย OpenThread Core และผู้โทรไม่ควรอ่านหรือเปลี่ยนแปลงช่องนี้

ฟังก์ชัน

otDnsAddressResponseGetAddress

otError otDnsAddressResponseGetAddress(
  const otDnsAddressResponse *aResponse,
  uint16_t aIndex,
  otIp6Address *aAddress,
  uint32_t *aTtl
)

รับที่อยู่ IPv6 ที่เชื่อมโยงกับการตอบสนอง DNS ของการแปลงที่อยู่

ต้องใช้จาก otDnsAddressCallback เท่านั้น

การตอบสนองอาจมีระเบียนที่อยู่ IPv6 หลายรายการ ใช้ aIndex เพื่อทำซ้ำตามรายการที่อยู่ได้ ดัชนี 0 จะได้รับที่อยู่แรก และอื่นๆ และจะแสดง OT_ERROR_NOT_FOUND เมื่อถึงส่วนท้ายของรายการ

รายละเอียด
พารามิเตอร์
[in] aResponse
ตัวชี้ไปยังคำตอบ
[in] aIndex
ดัชนีระเบียนที่อยู่ที่จะเรียกข้อมูล
[out] aAddress
ตัวชี้ไปยังที่อยู่ IPv6 เพื่อส่งออกที่อยู่ (ต้องไม่ใช่ NULL)
[out] aTtl
ตัวชี้ไปยัง uint32_t เพื่อเอาต์พุต TTL ของที่อยู่ โดยอาจเป็นค่า NULL หากผู้โทรไม่ต้องการรับ TTL
แสดงผลค่า
OT_ERROR_NONE
อ่านที่อยู่สำเร็จแล้ว
OT_ERROR_NOT_FOUND
ไม่มีบันทึกที่อยู่ใน aResponse ที่ aIndex
OT_ERROR_PARSE
ไม่สามารถแยกวิเคราะห์ระเบียนใน aResponse
OT_ERROR_INVALID_STATE
ไม่มีคำนำหน้า NAT64 (ใช้ได้เมื่ออนุญาตให้ใช้ NAT64 เท่านั้น)

otDnsAddressResponseGetHostName

otError otDnsAddressResponseGetHostName(
  const otDnsAddressResponse *aResponse,
  char *aNameBuffer,
  uint16_t aNameBufferSize
)

รับชื่อโฮสต์แบบเต็มที่เชื่อมโยงกับการตอบสนอง DNS สำหรับการแปลงที่อยู่

ต้องใช้จาก otDnsAddressCallback เท่านั้น

รายละเอียด
พารามิเตอร์
[in] aResponse
ตัวชี้ไปยังคำตอบ
[out] aNameBuffer
บัฟเฟอร์สำหรับอาร์เรย์อักขระที่จะแสดงชื่อโฮสต์แบบเต็ม (ต้องไม่ใช่ NULL)
[in] aNameBufferSize
ขนาดของ aNameBuffer
แสดงผลค่า
OT_ERROR_NONE
อ่านชื่อโฮสต์แบบเต็มเรียบร้อยแล้ว
OT_ERROR_NO_BUFS
ชื่อไม่เหมาะกับ aNameBuffer

otDnsBrowseResponseGetHostAddress

otError otDnsBrowseResponseGetHostAddress(
  const otDnsBrowseResponse *aResponse,
  const char *aHostName,
  uint16_t aIndex,
  otIp6Address *aAddress,
  uint32_t *aTtl
)

รับที่อยู่ IPv6 ของโฮสต์จากการตอบสนองของการเรียกดู DNS (การแจงนับอินสแตนซ์บริการ)

ต้องใช้จาก otDnsBrowseCallback เท่านั้น

การตอบสนองอาจมีระเบียนที่อยู่ IPv6 ตั้งแต่ 0 ระเบียนขึ้นไป ใช้ aIndex เพื่อทำซ้ำตามรายการที่อยู่ได้ ดัชนี 0 จะได้รับที่อยู่แรก และอื่นๆ และจะแสดง OT_ERROR_NOT_FOUND เมื่อถึงส่วนท้ายของรายการ

รายละเอียด
พารามิเตอร์
[in] aResponse
ตัวชี้ไปยังคำตอบ
[in] aHostName
ชื่อโฮสต์ที่จะใช้เรียกที่อยู่ (ต้องไม่ใช่ NULL)
[in] aIndex
ดัชนีระเบียนที่อยู่ที่จะเรียกข้อมูล
[out] aAddress
ตัวชี้ไปยังที่อยู่ IPv6 เพื่อส่งออกที่อยู่ (ต้องไม่ใช่ NULL)
[out] aTtl
ตัวชี้ไปยัง uint32_t เพื่อเอาต์พุต TTL ของที่อยู่ โดยอาจเป็นค่า NULL หากผู้โทรไม่ต้องการรับ TTL
แสดงผลค่า
OT_ERROR_NONE
อ่านที่อยู่สำเร็จแล้ว
OT_ERROR_NOT_FOUND
ไม่มีบันทึกที่อยู่ของ aHostname ใน aResponse ที่ aIndex
OT_ERROR_PARSE
ไม่สามารถแยกวิเคราะห์ระเบียนใน aResponse

otDnsBrowseResponseGetServiceInfo

otError otDnsBrowseResponseGetServiceInfo(
  const otDnsBrowseResponse *aResponse,
  const char *aInstanceLabel,
  otDnsServiceInfo *aServiceInfo
)

รับข้อมูลสำหรับอินสแตนซ์บริการจากการตอบสนองการเรียกดู DNS (การแจงนับอินสแตนซ์บริการ)

ต้องใช้จาก otDnsBrowseCallback เท่านั้น

การตอบสนองของ DNS ที่เรียกดูอาจรวมระเบียน SRV, TXT และ AAAA สำหรับอินสแตนซ์บริการที่มีการแจกแจง นี่เป็นข้อกำหนด "ควร" และไม่จำเป็น และไม่จำเป็นต้องมีเซิร์ฟเวอร์/ตัวแก้ปัญหา ฟังก์ชันนี้จะพยายามเรียกข้อมูลนี้สำหรับอินสแตนซ์ของบริการที่ระบุ (หากมี)

  • หากไม่พบระเบียน SRV ที่ตรงกันใน aResponse ระบบจะแสดงผล OT_ERROR_NOT_FOUND ในกรณีนี้จะไม่มีการอ่านระเบียนเพิ่มเติม (ไม่มี TXT และ/หรือ AAAA)
  • หากพบระเบียน SRV ที่ตรงกันใน aResponse ระบบจะอัปเดต aServiceInfo และแสดงผล OT_ERROR_NONE
  • หากไม่พบระเบียน TXT ที่ตรงกันใน aResponse ระบบจะตั้งค่า mTxtDataSize ใน aServiceInfo เป็น 0
  • หากข้อมูล TXT มีความยาวมากกว่า mTxtDataSize ระบบจะอ่านค่าดังกล่าวบางส่วน และตั้งค่า mTxtDataTruncated เป็น "จริง"
  • หากไม่พบระเบียน AAAA ที่ตรงกันใน aResponse mHostAddress is set to all zero or unspecified address.
  • If there are multiple AAAA records for the host name in @p aResponse,mHostAddressis set to the first one. The other addresses can be retrieved usingotDnsBrowseResponseGetHostAddress()`

รายละเอียด
พารามิเตอร์
[in] aResponse
ตัวชี้ไปยังคำตอบ
[in] aInstanceLabel
ป้ายกำกับอินสแตนซ์บริการ (ต้องไม่ใช่ NULL)
[out] aServiceInfo
ServiceInfo เพื่อแสดงผลข้อมูลอินสแตนซ์บริการ (ต้องไม่ใช่ NULL)
แสดงผลค่า
OT_ERROR_NONE
อ่านข้อมูลอินสแตนซ์บริการแล้ว อัปเดต aServiceInfo แล้ว
OT_ERROR_NOT_FOUND
ไม่พบระเบียน SRV ที่ตรงกันสำหรับ aInstanceLabel
OT_ERROR_NO_BUFS
ชื่อโฮสต์และ/หรือข้อมูล TXT ไม่พอดีกับบัฟเฟอร์ที่ระบุ
OT_ERROR_PARSE
ไม่สามารถแยกวิเคราะห์ระเบียนใน aResponse

otDnsBrowseResponseGetServiceInstance

otError otDnsBrowseResponseGetServiceInstance(
  const otDnsBrowseResponse *aResponse,
  uint16_t aIndex,
  char *aLabelBuffer,
  uint8_t aLabelBufferSize
)

รับอินสแตนซ์บริการที่เชื่อมโยงกับการตอบสนองการเรียกดู DNS (การแจงนับอินสแตนซ์บริการ)

ต้องใช้จาก otDnsBrowseCallback เท่านั้น

การตอบกลับอาจมีระเบียนอินสแตนซ์บริการหลายรายการ aIndex สามารถใช้ซ้ำในรายการได้ ดัชนีศูนย์จะระบุระเบียนแรก และจะแสดง OT_ERROR_NOT_FOUND เมื่อถึงส่วนท้ายของรายการ

โปรดทราบว่าฟังก์ชันนี้จะได้รับป้ายกำกับอินสแตนซ์บริการ ไม่ใช่ชื่ออินสแตนซ์บริการแบบเต็มซึ่งอยู่ในรูปแบบ ..

รายละเอียด
พารามิเตอร์
[in] aResponse
ตัวชี้ไปยังคำตอบ
[in] aIndex
ดัชนีระเบียนของอินสแตนซ์บริการที่จะดึงข้อมูล
[out] aLabelBuffer
บัฟเฟอร์สำหรับอาร์เรย์อักขระสำหรับส่งออกป้ายกำกับอินสแตนซ์บริการ (ต้องไม่ใช่ NULL)
[in] aLabelBufferSize
ขนาดของ aLabelBuffer
แสดงผลค่า
OT_ERROR_NONE
อ่านอินสแตนซ์บริการเรียบร้อยแล้ว
OT_ERROR_NO_BUFS
ชื่อไม่เหมาะกับ aNameBuffer
OT_ERROR_NOT_FOUND
ไม่มีระเบียนอินสแตนซ์บริการใน aResponse ที่ aIndex
OT_ERROR_PARSE
ไม่สามารถแยกวิเคราะห์ระเบียนใน aResponse

otDnsBrowseResponseGetServiceName

otError otDnsBrowseResponseGetServiceName(
  const otDnsBrowseResponse *aResponse,
  char *aNameBuffer,
  uint16_t aNameBufferSize
)

รับชื่อบริการที่เชื่อมโยงกับการตอบกลับการเรียกดู DNS (การแจงนับอินสแตนซ์บริการ)

ต้องใช้จาก otDnsBrowseCallback เท่านั้น

รายละเอียด
พารามิเตอร์
[in] aResponse
ตัวชี้ไปยังคำตอบ
[out] aNameBuffer
บัฟเฟอร์สำหรับอาร์เรย์อักขระที่จะแสดงชื่อบริการ (ต้องไม่ใช่ NULL)
[in] aNameBufferSize
ขนาดของ aNameBuffer
แสดงผลค่า
OT_ERROR_NONE
อ่านชื่อบริการเรียบร้อยแล้ว
OT_ERROR_NO_BUFS
ชื่อไม่เหมาะกับ aNameBuffer

otDnsClientBrowse

otError otDnsClientBrowse(
  otInstance *aInstance,
  const char *aServiceName,
  otDnsBrowseCallback aCallback,
  void *aContext,
  const otDnsQueryConfig *aConfig
)

ส่งคำค้นหาการเรียกดู DNS (การแจงนับอินสแตนซ์บริการ) สำหรับชื่อบริการที่ระบุ

พร้อมใช้งานเมื่อเปิดใช้ OPENTHREAD_CONFIG_DNS_CLIENT_SERVICE_DISCOVERY_ENABLE

aConfig มีค่าเป็น NULL ได้ ในกรณีนี้ ระบบจะใช้การกำหนดค่าเริ่มต้น (จาก otDnsClientGetDefaultConfig()) เป็นค่ากำหนดสำหรับการค้นหานี้ ในช่อง aConfig ที่ไม่ใช่ NULL ช่องบางช่องสามารถเว้นค่าไว้แบบไม่ระบุได้ (ค่าเป็น 0) ช่องที่ไม่ได้ระบุไว้จะถูกแทนที่ด้วยค่าจากการกำหนดค่าเริ่มต้น

รายละเอียด
พารามิเตอร์
[in] aInstance
ตัวชี้ไปยังอินสแตนซ์ OpenThread
[in] aServiceName
ชื่อบริการที่ต้องการค้นหา (ต้องไม่ใช่ NULL)
[in] aCallback
ตัวชี้ฟังก์ชันที่ต้องเรียกใช้เมื่อมีการตอบรับหรือหมดเวลา
[in] aContext
ตัวชี้ไปยังข้อมูลบริบทที่กำหนดเอง
[in] aConfig
ตัวชี้ไปยังการกำหนดค่าที่จะใช้สำหรับการค้นหานี้
แสดงผลค่า
OT_ERROR_NONE
ส่งคำค้นหาเรียบร้อยแล้ว ระบบจะเรียกใช้ aCallback เพื่อรายงานสถานะ
OT_ERROR_NO_BUFS
บัฟเฟอร์ไม่เพียงพอที่จะเตรียมและส่งคำค้นหา

otDnsClientGetDefaultConfig

const otDnsQueryConfig * otDnsClientGetDefaultConfig(
  otInstance *aInstance
)

รับการกำหนดค่าการค้นหาเริ่มต้นในปัจจุบันที่ไคลเอ็นต์ DNS ใช้

เมื่อสแต็ก OpenThread เริ่มทำงาน ระบบจะกำหนดการกำหนดค่าการค้นหา DNS เริ่มต้นจากชุดตัวเลือกการกำหนดค่า OT เช่น OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_SERVER_IP6_ADDRESS, _DEFAULT_SERVER_PORT, _DEFAULT_RESPONSE_TIMEOUT เป็นต้น (โปรดดูตัวเลือกการกำหนดค่าที่เกี่ยวข้องทั้งหมดได้ที่ config/dns_client.h)

รายละเอียด
พารามิเตอร์
[in] aInstance
ตัวชี้ไปยังอินสแตนซ์ OpenThread
การส่งคืน
ตัวชี้ไปยังการกำหนดค่าเริ่มต้นปัจจุบันที่ไคลเอ็นต์ DNS ใช้

otDnsClientResolveAddress

otError otDnsClientResolveAddress(
  otInstance *aInstance,
  const char *aHostName,
  otDnsAddressCallback aCallback,
  void *aContext,
  const otDnsQueryConfig *aConfig
)

ส่งการค้นหา DNS เกี่ยวกับการแปลงที่อยู่สำหรับระเบียน AAAA (IPv6) สำหรับชื่อโฮสต์ที่ระบุ

aConfig มีค่าเป็น NULL ได้ ในกรณีนี้ ระบบจะใช้การกำหนดค่าเริ่มต้น (จาก otDnsClientGetDefaultConfig()) เป็นค่ากำหนดสำหรับการค้นหานี้ ในช่อง aConfig ที่ไม่ใช่ NULL ช่องบางช่องสามารถเว้นค่าไว้แบบไม่ระบุได้ (ค่าเป็น 0) ช่องที่ไม่ได้ระบุไว้จะถูกแทนที่ด้วยค่าจากการกำหนดค่าเริ่มต้น

รายละเอียด
พารามิเตอร์
[in] aInstance
ตัวชี้ไปยังอินสแตนซ์ OpenThread
[in] aHostName
ชื่อโฮสต์ที่จะใช้ค้นหาที่อยู่ (ต้องไม่ใช่ NULL)
[in] aCallback
ตัวชี้ฟังก์ชันที่ต้องเรียกใช้เมื่อมีการตอบรับหรือหมดเวลา
[in] aContext
ตัวชี้ไปยังข้อมูลบริบทที่กำหนดเอง
[in] aConfig
ตัวชี้ไปยังการกำหนดค่าที่จะใช้สำหรับการค้นหานี้
แสดงผลค่า
OT_ERROR_NONE
ส่งคำค้นหาเรียบร้อยแล้ว ระบบจะเรียกใช้ aCallback เพื่อรายงานสถานะ
OT_ERROR_NO_BUFS
บัฟเฟอร์ไม่เพียงพอที่จะเตรียมและส่งคำค้นหา
OT_ERROR_INVALID_ARGS
ชื่อโฮสต์มีรูปแบบไม่ถูกต้อง
OT_ERROR_INVALID_STATE
ส่งการค้นหาไม่ได้เนื่องจากอินเทอร์เฟซเทรดไม่ทํางาน

otDnsClientResolveIp4Address

otError otDnsClientResolveIp4Address(
  otInstance *aInstance,
  const char *aHostName,
  otDnsAddressCallback aCallback,
  void *aContext,
  const otDnsQueryConfig *aConfig
)

ส่งการค้นหา DNS เพื่อแก้ไขที่อยู่สำหรับระเบียน A (IPv4) ของชื่อโฮสต์ที่ระบุ

จำเป็นและพร้อมใช้งานเมื่อเปิดใช้ OPENTHREAD_CONFIG_DNS_CLIENT_NAT64_ENABLE

เมื่อได้รับการตอบกลับที่สำเร็จ ระบบจะแสดงผลที่อยู่จาก aCallback เป็นที่อยู่ IPv4 เวอร์ชันแปลของ NAT64 IPv6 จากการตอบกลับการค้นหา

aConfig มีค่าเป็น NULL ได้ ในกรณีนี้ ระบบจะใช้การกำหนดค่าเริ่มต้น (จาก otDnsClientGetDefaultConfig()) เป็นค่ากำหนดสำหรับการค้นหานี้ ในช่อง aConfig ที่ไม่ใช่ NULL ช่องบางช่องสามารถเว้นค่าไว้แบบไม่ระบุได้ (ค่าเป็น 0) ช่องที่ไม่ได้ระบุไว้จะถูกแทนที่ด้วยค่าจากการกำหนดค่าเริ่มต้น

รายละเอียด
พารามิเตอร์
[in] aInstance
ตัวชี้ไปยังอินสแตนซ์ OpenThread
[in] aHostName
ชื่อโฮสต์ที่จะใช้ค้นหาที่อยู่ (ต้องไม่ใช่ NULL)
[in] aCallback
ตัวชี้ฟังก์ชันที่ต้องเรียกใช้เมื่อมีการตอบรับหรือหมดเวลา
[in] aContext
ตัวชี้ไปยังข้อมูลบริบทที่กำหนดเอง
[in] aConfig
ตัวชี้ไปยังการกำหนดค่าที่จะใช้สำหรับการค้นหานี้
แสดงผลค่า
OT_ERROR_NONE
ส่งคำค้นหาเรียบร้อยแล้ว ระบบจะเรียกใช้ aCallback เพื่อรายงานสถานะ
OT_ERROR_NO_BUFS
บัฟเฟอร์ไม่เพียงพอที่จะเตรียมและส่งคำค้นหา
OT_ERROR_INVALID_ARGS
ชื่อโฮสต์มีรูปแบบไม่ถูกต้อง หรือไม่ได้เปิดใช้ NAT64 ในการกำหนดค่า
OT_ERROR_INVALID_STATE
ส่งการค้นหาไม่ได้เนื่องจากอินเทอร์เฟซเทรดไม่ทํางาน

otDnsClientResolveService

otError otDnsClientResolveService(
  otInstance *aInstance,
  const char *aInstanceLabel,
  const char *aServiceName,
  otDnsServiceCallback aCallback,
  void *aContext,
  const otDnsQueryConfig *aConfig
)

เริ่มการแปลงอินสแตนซ์บริการ DNS สำหรับอินสแตนซ์บริการที่ระบุ

พร้อมใช้งานเมื่อเปิดใช้ OPENTHREAD_CONFIG_DNS_CLIENT_SERVICE_DISCOVERY_ENABLE

aConfig มีค่าเป็น NULL ได้ ในกรณีนี้ ระบบจะใช้การกำหนดค่าเริ่มต้น (จาก otDnsClientGetDefaultConfig()) เป็นค่ากำหนดสำหรับการค้นหานี้ ในช่อง aConfig ที่ไม่ใช่ NULL ช่องบางช่องสามารถเว้นค่าไว้แบบไม่ระบุได้ (ค่าเป็น 0) ช่องที่ไม่ได้ระบุไว้จะถูกแทนที่ด้วยค่าจากการกำหนดค่าเริ่มต้น

ฟังก์ชันนี้จะส่งการค้นหาสำหรับระเบียน SRV และ/หรือ TXT สำหรับอินสแตนซ์บริการที่ระบุ ช่อง mServiceMode ใน otDnsQueryConfig จะกำหนดระเบียนที่จะค้นหา (SRV เท่านั้น, TXT เท่านั้น หรือทั้ง SRV และ TXT) และวิธีดำเนินการค้นหา (รวมกันในข้อความเดียวกัน แยกกันแบบขนาน หรือในโหมดเพิ่มประสิทธิภาพที่ไคลเอ็นต์จะลองดำเนินการในข้อความเดียวกันก่อน จากนั้นจึงแยกกันต่างหากหากไม่ได้รับการตอบกลับ)

ระเบียน SRV จะให้ข้อมูลเกี่ยวกับพอร์ตบริการ ลำดับความสำคัญ และน้ำหนัก พร้อมด้วยชื่อโฮสต์ที่เชื่อมโยงกับอินสแตนซ์บริการ ฟังก์ชันนี้จะไม่ทำการแปลงที่อยู่สำหรับชื่อโฮสต์ที่ค้นพบจากระเบียน SRV เซิร์ฟเวอร์/ตัวแก้ปัญหาอาจให้ระเบียน AAAA/A สำหรับชื่อโฮสต์ในส่วนข้อมูลเพิ่มเติมของการตอบสนองต่อการค้นหา SRV/TXT และคุณดึงข้อมูลนี้ได้โดยใช้ otDnsServiceResponseGetServiceInfo() ใน otDnsServiceCallback ผู้ใช้ API นี้ต้องไม่คิดว่าที่อยู่โฮสต์จะพร้อมใช้งานจาก otDnsServiceResponseGetServiceInfo() เสมอ

รายละเอียด
พารามิเตอร์
[in] aInstance
ตัวชี้ไปยังอินสแตนซ์ OpenThread
[in] aInstanceLabel
ป้ายกำกับอินสแตนซ์บริการ
[in] aServiceName
ชื่อบริการ (ร่วมกับชื่อเต็มของแบบฟอร์ม aInstanceLabel)
[in] aCallback
ตัวชี้ฟังก์ชันที่ต้องเรียกใช้เมื่อมีการตอบรับหรือหมดเวลา
[in] aContext
ตัวชี้ไปยังข้อมูลบริบทที่กำหนดเอง
[in] aConfig
ตัวชี้ไปยังการกำหนดค่าที่จะใช้สำหรับการค้นหานี้
แสดงผลค่า
OT_ERROR_NONE
ส่งคำค้นหาเรียบร้อยแล้ว ระบบจะเรียกใช้ aCallback เพื่อรายงานสถานะ
OT_ERROR_NO_BUFS
บัฟเฟอร์ไม่เพียงพอที่จะเตรียมและส่งคำค้นหา
OT_ERROR_INVALID_ARGS
aInstanceLabel เป็นค่าว่าง

otDnsClientResolveServiceAndHostAddress

otError otDnsClientResolveServiceAndHostAddress(
  otInstance *aInstance,
  const char *aInstanceLabel,
  const char *aServiceName,
  otDnsServiceCallback aCallback,
  void *aContext,
  const otDnsQueryConfig *aConfig
)

เริ่มต้นการแปลงอินสแตนซ์บริการ DNS สำหรับอินสแตนซ์บริการที่ระบุ พร้อมการแก้ไขที่อยู่ติดตามผลที่เป็นไปได้สำหรับชื่อโฮสต์ที่ค้นพบสำหรับอินสแตนซ์บริการ

พร้อมใช้งานเมื่อเปิดใช้ OPENTHREAD_CONFIG_DNS_CLIENT_SERVICE_DISCOVERY_ENABLE

aConfig มีค่าเป็น NULL ได้ ในกรณีนี้ ระบบจะใช้การกำหนดค่าเริ่มต้น (จาก otDnsClientGetDefaultConfig()) เป็นค่ากำหนดสำหรับการค้นหานี้ ในช่อง aConfig ที่ไม่ใช่ NULL ช่องบางช่องสามารถเว้นค่าไว้แบบไม่ระบุได้ (ค่าเป็น 0) ช่องที่ไม่ได้ระบุไว้จะถูกแทนที่ด้วยค่าจากการกำหนดค่าเริ่มต้น ฟังก์ชันนี้ใช้ไม่ได้กับ mServiceMode ในการกำหนดค่า DNS ที่ตั้งค่าเป็น OT_DNS_SERVICE_MODE_TXT (กล่าวคือ การค้นหาระเบียน TXT เท่านั้น) และจะแสดงผล OT_ERROR_INVALID_ARGS

มีลักษณะการทำงานเหมือนกับ otDnsClientResolveService() ที่ส่งคำค้นหาสำหรับระเบียน SRV และ TXT อย่างไรก็ตาม หากเซิร์ฟเวอร์/รีโซลเวอร์ไม่ได้ให้ระเบียน AAAA/A สำหรับชื่อโฮสต์ในการตอบสนองต่อคำค้นหา SRV (ในส่วนข้อมูลเพิ่มเติม) เซิร์ฟเวอร์จะทำการแก้ชื่อโฮสต์ (ส่งการค้นหา AAAA) สำหรับชื่อโฮสต์ที่ค้นพบจากระเบียน SRV ระบบจะเรียกใช้ aCallback โค้ดเรียกกลับเมื่อได้รับการตอบกลับสำหรับคำถามทั้งหมด (นั่นคือ แก้ปัญหาทั้งบริการและที่อยู่โฮสต์เสร็จแล้ว)

รายละเอียด
พารามิเตอร์
[in] aInstance
ตัวชี้ไปยังอินสแตนซ์ OpenThread
[in] aInstanceLabel
ป้ายกำกับอินสแตนซ์บริการ
[in] aServiceName
ชื่อบริการ (ร่วมกับชื่อเต็มของแบบฟอร์ม aInstanceLabel)
[in] aCallback
ตัวชี้ฟังก์ชันที่ต้องเรียกใช้เมื่อมีการตอบรับหรือหมดเวลา
[in] aContext
ตัวชี้ไปยังข้อมูลบริบทที่กำหนดเอง
[in] aConfig
ตัวชี้ไปยังการกำหนดค่าที่จะใช้สำหรับการค้นหานี้
แสดงผลค่า
OT_ERROR_NONE
ส่งคำค้นหาเรียบร้อยแล้ว ระบบจะเรียกใช้ aCallback เพื่อรายงานสถานะ
OT_ERROR_NO_BUFS
บัฟเฟอร์ไม่เพียงพอที่จะเตรียมและส่งคำค้นหา
OT_ERROR_INVALID_ARGS
aInstanceLabel เป็นค่าว่างหรือ aConfig ไม่ถูกต้อง

otDnsClientSetDefaultConfig

void otDnsClientSetDefaultConfig(
  otInstance *aInstance,
  const otDnsQueryConfig *aConfig
)

ตั้งการกำหนดค่าการค้นหาเริ่มต้นในไคลเอ็นต์ DNS

aConfig มีค่าเป็น NULL ได้ ในกรณีนี้ ระบบจะตั้งค่าเริ่มต้นจากตัวเลือกการกำหนดค่า OT เป็นค่าเริ่มต้นจาก OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_{} ซึ่งจะเป็นการรีเซ็ตการกำหนดค่าการค้นหาเริ่มต้นกลับไปเป็นการกำหนดค่าเมื่อสแต็ก OpenThread เริ่มทำงาน

ใน aConfig ที่ไม่ใช่ NULL ผู้โทรสามารถเลือกเว้นช่องบางช่องในอินสแตนซ์ otDnsQueryConfig แบบไม่ระบุได้ (ค่าเป็น 0) ช่องที่ไม่ได้ระบุไว้จะถูกแทนที่ด้วยคำจำกัดความของตัวเลือกการกำหนดค่า OT ที่เกี่ยวข้อง OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_{} เพื่อสร้างการกำหนดค่าการค้นหาเริ่มต้น

เมื่อเปิดใช้ OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_SERVER_ADDRESS_AUTO_SET_ENABLE แล้ว ที่อยู่ IPv6 ของเซิร์ฟเวอร์ในการกำหนดค่าเริ่มต้นจะได้รับการตั้งค่าและอัปเดตโดยไคลเอ็นต์ DNS โดยอัตโนมัติ ซึ่งจะทำเฉพาะเมื่อผู้ใช้ไม่ได้ตั้งค่าหรือระบุไว้อย่างชัดแจ้ง ลักษณะการทำงานนี้กำหนดให้ต้องเปิดใช้ไคลเอ็นต์ SRP และฟีเจอร์เริ่มต้นอัตโนมัติ จากนั้นไคลเอ็นต์ SRP จะตรวจสอบข้อมูลเครือข่ายเทรดสำหรับรายการบริการ DNS/SRP เพื่อเลือกเซิร์ฟเวอร์ SRP ที่อยู่เซิร์ฟเวอร์ SRP ที่เลือกจะได้รับการตั้งค่าเป็นที่อยู่เซิร์ฟเวอร์ DNS ในการกำหนดค่าเริ่มต้นด้วย

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

otDnsEncodeTxtData

otError otDnsEncodeTxtData(
  const otDnsTxtEntry *aTxtEntries,
  uint16_t aNumTxtEntries,
  uint8_t *aTxtData,
  uint16_t *aTxtDataLength
)

เข้ารหัสรายการระเบียน TXT (คู่คีย์/ค่า) ที่ระบุเป็นข้อมูล TXT (รูปแบบต่อไปนี้ระบุโดย RFC 6763)

รายละเอียด
พารามิเตอร์
[in] aTxtEntries
ชี้ไปที่อาร์เรย์ของ otDnsTxtEntry
[in] aNumTxtEntries
จำนวนรายการในอาร์เรย์ aTxtEntries
[out] aTxtData
ตัวชี้ไปยังบัฟเฟอร์เพื่อส่งออกข้อมูล TXT ที่เข้ารหัส
[in,out] aTxtDataLength
เมื่อป้อนข้อมูล ขนาดของบัฟเฟอร์ aTxtData ความยาวของข้อมูล TXT ที่เข้ารหัสเมื่อเอาต์พุต
แสดงผลค่า
OT_ERROR_NONE
ข้อมูล TXT ที่เข้ารหัสเรียบร้อยแล้ว มีการอัปเดต aTxtData และ aTxtDataLength
OT_ERROR_INVALID_ARGS
aTxtEntries ไม่ถูกต้อง
OT_ERROR_NO_BUS
ปรับข้อมูลที่เข้ารหัสในบัฟเฟอร์ aTxtData ด้วย aTxtDataLength ไม่ได้

otDnsGetNextTxtEntry

otError otDnsGetNextTxtEntry(
  otDnsTxtEntryIterator *aIterator,
  otDnsTxtEntry *aEntry
)

แยกวิเคราะห์ข้อมูล TXT จากตัววนซ้ำและรับรายการระเบียน TXT ถัดไป (คู่คีย์/ค่า)

aIterator ต้องเริ่มต้นโดยใช้ otDnsInitTxtEntryIterator() ก่อนที่จะเรียกใช้ฟังก์ชันนี้ และบัฟเฟอร์ข้อมูล TXT ที่ใช้ในการเริ่มต้นตัววนซ้ำต้องคงอยู่และไม่มีการเปลี่ยนแปลง มิเช่นนั้นจะไม่สามารถระบุลักษณะการทำงานของฟังก์ชันนี้ได้

หากความยาวของสตริงคีย์ที่แยกวิเคราะห์น้อยกว่าหรือเท่ากับ OT_DNS_TXT_KEY_ITER_MAX_LENGTH ระบบจะแสดงผลสตริงคีย์ใน mKey ใน aEntry แต่หากคีย์มีความยาวมาก ระบบจะตั้งค่า mKey เป็น NULL และจะแสดงผลสตริงรายการ TXT ที่เข้ารหัสทั้งหมดใน mValue และ mValueLength

รายละเอียด
พารามิเตอร์
[in] aIterator
ตัวชี้ไปยังตัวทำซ้ำ (ต้องไม่ใช่ NULL)
[out] aEntry
ตัวชี้ไปยังโครงสร้าง otDnsTxtEntry เพื่อแสดงผลรายการที่แยกวิเคราะห์/อ่านแล้ว (ต้องไม่ใช่ NULL)
แสดงผลค่า
OT_ERROR_NONE
ระบบแยกวิเคราะห์รายการถัดไปสำเร็จ อัปเดต aEntry แล้ว
OT_ERROR_NOT_FOUND
ไม่มีรายการในข้อมูล TXT อีกต่อไป
OT_ERROR_PARSE
ข้อมูล TXT จาก aIterator อยู่ในรูปแบบที่ไม่ถูกต้อง

otDnsInitTxtEntryIterator

void otDnsInitTxtEntryIterator(
  otDnsTxtEntryIterator *aIterator,
  const uint8_t *aTxtData,
  uint16_t aTxtDataLength
)

เริ่มต้นตัววนซ้ำระเบียน TXT

ตัวชี้บัฟเฟอร์ aTxtData และเนื้อหาต้องคงอยู่และไม่มีการเปลี่ยนแปลงขณะใช้วัตถุ aIterator

รายละเอียด
พารามิเตอร์
[in] aIterator
ตัวชี้ไปยังตัวทำซ้ำเพื่อเริ่มต้น (ต้องไม่ใช่ NULL)
[in] aTxtData
ตัวชี้ไปยังบัฟเฟอร์ที่มีข้อมูล TXT ที่เข้ารหัส
[in] aTxtDataLength
ความยาว (จำนวนไบต์) ของ aTxtData

otDnsIsNameCompressionEnabled

bool otDnsIsNameCompressionEnabled(
  void
)

ระบุว่าได้เปิดใช้โหมด "การบีบอัดชื่อ DNS" หรือไม่

ใช้สำหรับการทดสอบเท่านั้นและจะใช้ได้เมื่อเปิดใช้การกำหนดค่า OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE

รายละเอียด
การส่งคืน
TRUE หากมีการเปิดใช้โหมด "การบีบอัดชื่อ DNS" หากไม่เปิดใช้ FALSE

otDnsServiceResponseGetHostAddress

otError otDnsServiceResponseGetHostAddress(
  const otDnsServiceResponse *aResponse,
  const char *aHostName,
  uint16_t aIndex,
  otIp6Address *aAddress,
  uint32_t *aTtl
)

รับที่อยู่ IPv6 ของโฮสต์จากการตอบสนองเพื่อแปลงอินสแตนซ์ของบริการ DNS

ต้องใช้จาก otDnsServiceCallback เท่านั้น

การตอบสนองอาจมีระเบียนที่อยู่ IPv6 ตั้งแต่ 0 ระเบียนขึ้นไป ใช้ aIndex เพื่อทำซ้ำตามรายการที่อยู่ได้ ดัชนี 0 จะได้รับที่อยู่แรก และอื่นๆ และจะแสดง OT_ERROR_NOT_FOUND เมื่อถึงส่วนท้ายของรายการ

รายละเอียด
พารามิเตอร์
[in] aResponse
ตัวชี้ไปยังคำตอบ
[in] aHostName
ชื่อโฮสต์ที่จะใช้เรียกที่อยู่ (ต้องไม่ใช่ NULL)
[in] aIndex
ดัชนีระเบียนที่อยู่ที่จะเรียกข้อมูล
[out] aAddress
ตัวชี้ไปยังที่อยู่ IPv6 เพื่อส่งออกที่อยู่ (ต้องไม่ใช่ NULL)
[out] aTtl
ตัวชี้ไปยัง uint32_t เพื่อเอาต์พุต TTL ของที่อยู่ โดยอาจเป็นค่า NULL หากผู้โทรไม่ต้องการรับ TTL
แสดงผลค่า
OT_ERROR_NONE
อ่านที่อยู่สำเร็จแล้ว
OT_ERROR_NOT_FOUND
ไม่มีบันทึกที่อยู่ของ aHostname ใน aResponse ที่ aIndex
OT_ERROR_PARSE
ไม่สามารถแยกวิเคราะห์ระเบียนใน aResponse

otDnsServiceResponseGetServiceInfo

otError otDnsServiceResponseGetServiceInfo(
  const otDnsServiceResponse *aResponse,
  otDnsServiceInfo *aServiceInfo
)

รับข้อมูลของอินสแตนซ์บริการจากการตอบสนองเพื่อการแก้ปัญหาอินสแตนซ์ของบริการ DNS

ต้องใช้จาก otDnsServiceCallback ที่ทริกเกอร์จาก otDnsClientResolveService() หรือ otDnsClientResolveServiceAndHostAddress() เท่านั้น

เมื่อใช้คำสั่งนี้จากโค้ดเรียกกลับ otDnsClientResolveService() การตอบสนอง DNS จากเซิร์ฟเวอร์/ตัวแก้ปัญหาอาจรวมระเบียน AAAA ในส่วนข้อมูลเพิ่มเติมสำหรับชื่อโฮสต์ที่เชื่อมโยงกับอินสแตนซ์บริการที่แก้ไขแล้ว นี่เป็นข้อกำหนด "ควร" และไม่ใช่ "จำเป็น" ดังนั้นเซิร์ฟเวอร์/ตัวแก้ปัญหาไม่จำเป็นต้องระบุส่วนนี้ ฟังก์ชันนี้จะพยายามแยกวิเคราะห์ระเบียน AAAA หากมีอยู่ในการตอบกลับ หากไม่ได้ระบุ mHostAddress ระบบจะตั้งค่าเป็นเลข 0 ทั้งหมด (อีเมลที่ไม่ระบุ) หากต้องการแก้ปัญหาที่อยู่โฮสต์ด้วย ผู้ใช้สามารถใช้ฟังก์ชัน API ไคลเอ็นต์ DNS otDnsClientResolveServiceAndHostAddress() ซึ่งจะดำเนินการแก้ปัญหาบริการ ตามด้วยการค้นหาการแก้ปัญหาที่อยู่ของชื่อโฮสต์ (เมื่อเซิร์ฟเวอร์/ตัวแก้ปัญหาไม่ได้ระบุระเบียน AAAA ในการตอบกลับการค้นหา SRV)

  • หากพบระเบียน SRV ที่ตรงกันใน aResponse ระบบจะอัปเดต aServiceInfo
  • หากไม่พบระเบียน SRV ที่ตรงกัน ระบบจะแสดงผล OT_ERROR_NOT_FOUND เว้นแต่การกำหนดค่าการค้นหาสำหรับการค้นหานี้ใช้ OT_DNS_SERVICE_MODE_TXT สำหรับ mServiceMode (หมายความว่าคำขอมีไว้สำหรับระเบียน TXT เท่านั้น) ในกรณีนี้ เรายังคงพยายามแยกวิเคราะห์ระเบียน SRV จากส่วนข้อมูลเพิ่มเติมของการตอบกลับ (ในกรณีที่เซิร์ฟเวอร์ให้ข้อมูลไว้)
  • หากไม่พบระเบียน TXT ที่ตรงกันใน aResponse ระบบจะตั้งค่า mTxtDataSize ใน aServiceInfo เป็น 0
  • หากข้อมูล TXT มีความยาวมากกว่า mTxtDataSize ระบบจะอ่านค่าดังกล่าวบางส่วน และตั้งค่า mTxtDataTruncated เป็น "จริง"
  • หากไม่พบระเบียน AAAA ที่ตรงกันใน aResponse mHostAddress is set to all zero or unspecified address.
  • If there are multiple AAAA records for the host name in @p aResponse,mHostAddressis set to the first one. The other addresses can be retrieved usingotDnsServiceResponseGetHostAddress()`

รายละเอียด
พารามิเตอร์
[in] aResponse
ตัวชี้ไปยังคำตอบ
[out] aServiceInfo
ServiceInfo เพื่อแสดงผลข้อมูลอินสแตนซ์บริการ (ต้องไม่ใช่ NULL)
แสดงผลค่า
OT_ERROR_NONE
อ่านข้อมูลอินสแตนซ์บริการแล้ว อัปเดต aServiceInfo แล้ว
OT_ERROR_NOT_FOUND
ไม่พบระเบียนที่จำเป็นใน aResponse
OT_ERROR_NO_BUFS
ชื่อโฮสต์และ/หรือข้อมูล TXT ไม่พอดีกับบัฟเฟอร์ที่ระบุ
OT_ERROR_PARSE
ไม่สามารถแยกวิเคราะห์ระเบียนใน aResponse

otDnsServiceResponseGetServiceName

otError otDnsServiceResponseGetServiceName(
  const otDnsServiceResponse *aResponse,
  char *aLabelBuffer,
  uint8_t aLabelBufferSize,
  char *aNameBuffer,
  uint16_t aNameBufferSize
)

รับชื่ออินสแตนซ์บริการที่เชื่อมโยงกับการตอบสนองการแก้ปัญหาของอินสแตนซ์บริการ DNS

ต้องใช้จาก otDnsServiceCallback เท่านั้น

รายละเอียด
พารามิเตอร์
[in] aResponse
ตัวชี้ไปยังคำตอบ
[out] aLabelBuffer
บัฟเฟอร์สำหรับอาร์เรย์อักขระสำหรับส่งออกป้ายกำกับอินสแตนซ์บริการ (ต้องไม่ใช่ NULL)
[in] aLabelBufferSize
ขนาดของ aLabelBuffer
[out] aNameBuffer
บัฟเฟอร์สำหรับอาร์เรย์อักขระที่จะแสดงชื่อบริการที่เหลือ (สามารถเป็นค่าว่างได้ถ้าผู้ใช้ไม่สนใจรับชื่อ
[in] aNameBufferSize
ขนาดของ aNameBuffer
แสดงผลค่า
OT_ERROR_NONE
อ่านชื่อบริการเรียบร้อยแล้ว
OT_ERROR_NO_BUFS
ป้ายกำกับหรือชื่อไม่พอดีกับบัฟเฟอร์ที่ระบุ

otDnsSetNameCompressionEnabled

void otDnsSetNameCompressionEnabled(
  bool aEnabled
)

เปิด/ปิดใช้โหมด "การบีบอัดชื่อ DNS"

การบีบอัดชื่อ DNS ตามค่าเริ่มต้นจะเปิดใช้ เมื่อปิดใช้ ระบบจะต่อท้ายชื่อ DNS แบบเต็มและจะไม่มีการบีบอัด ซึ่งมีผลกับโมดูลไคลเอ็นต์/เซิร์ฟเวอร์ของ OpenThread และ DNS และ SRP

ใช้สำหรับการทดสอบเท่านั้นและจะใช้ได้เมื่อเปิดใช้การกำหนดค่า OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE

โปรดทราบว่าในกรณีที่มีการใช้ OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE โหมดนี้จะมีผลกับอินสแตนซ์ OpenThread ทั้งหมด (กล่าวคือ การเรียกใช้ฟังก์ชันนี้จะเปิดใช้/ปิดใช้โหมดการบีบอัดในอินสแตนซ์ OpenThread ทั้งหมด)

รายละเอียด
พารามิเตอร์
[in] aEnabled
TRUE เพื่อเปิดใช้โหมด "การบีบอัดชื่อ DNS" และใช้ FALSE เพื่อปิดใช้

มาโคร

OT_DNS_MAX_LABEL_SIZE

 OT_DNS_MAX_LABEL_SIZE 64

ขนาดสตริงป้ายกำกับสูงสุด (ใส่อักขระ Null ในตอนท้ายของสตริง)

OT_DNS_MAX_NAME_SIZE

 OT_DNS_MAX_NAME_SIZE 255

ขนาดสูงสุดของสตริงชื่อ (รวมอักขระ Null ในตอนท้ายของสตริง)

OT_DNS_TXT_KEY_ITER_MAX_LENGTH

 OT_DNS_TXT_KEY_ITER_MAX_LENGTH 64

ความยาวสูงสุดของสตริงคีย์ TXT ที่ otDnsTxtEntryIterator รองรับ

OT_DNS_TXT_KEY_MAX_LENGTH

 OT_DNS_TXT_KEY_MAX_LENGTH 9

ความยาวสูงสุดที่แนะนำของสตริงคีย์ระเบียน TXT (RFC 6763 - ส่วน 6.4)

OT_DNS_TXT_KEY_MIN_LENGTH

 OT_DNS_TXT_KEY_MIN_LENGTH 1

ความยาวขั้นต่ำของสตริงคีย์ระเบียน TXT (RFC 6763 - ส่วน 6.4)

แหล่งข้อมูล

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