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
Type نشان دهنده پرچم "Recursion Desired" (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
Type حالت وضوح سرویس را در یک otDnsQueryConfig نشان می دهد.
otDnsTransportProto {
OT_DNS_TRANSPORT_UDP = 1,
OT_DNS_TRANSPORT_TCP = 2
}
enum
Type نشان دهنده پروتکل انتقال DNS در یک otDnsQueryConfig است.

Typedefs

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
یک ورودی رکورد 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 با وضوح آدرس برای رکورد(های) یک (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 (جفت کلید/مقدار) را نشان می دهد.

شمارش ها

حالت otDnsNat64

 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

Type نشان دهنده پرچم "Recursion Desired" (RD) در یک otDnsQueryConfig است.

خواص
OT_DNS_FLAG_NO_RECURSION

نشان می دهد که سرور نام DNS نمی تواند پرس و جو را به صورت بازگشتی حل کند.

OT_DNS_FLAG_RECURSION_DESIRED

نشان می دهد که سرور نام DNS می تواند پرس و جو را به صورت بازگشتی حل کند.

OT_DNS_FLAG_UNSPECIFIED

نشان می دهد که پرچم مشخص نشده است.

otDnsServiceMode

 otDnsServiceMode

Type حالت وضوح سرویس را در یک 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 در یک otDnsQueryConfig است.

این OT_DNS_TRANSPORT_TCP تنها زمانی پشتیبانی می‌شود که OPENTHREAD_CONFIG_DNS_CLIENT_OVER_TCP_ENABLE فعال باشد.

خواص
OT_DNS_TRANSPORT_TCP

درخواست DNS باید از طریق UDP ارسال شود.

OT_DNS_TRANSPORT_UDP

انتقال DNS نامشخص است.

Typedefs

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 برخی از مجموعه‌های RR که نباید وجود داشته باشند، وجود دارند -> OT_ERROR_DUPLICATED
  • (8) NXRRSET مقداری از RRset که باید وجود داشته باشد، وجود ندارد -> OT_ERROR_NOT_FOUND
  • (9) سرویس NOTAUTH برای منطقه معتبر نیست -> OT_ERROR_SECURITY
  • (10) NOTZONE نامی در منطقه -> 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 با وضوح آدرس.

اشاره‌گرها به نمونه‌هایی از این نوع از callback 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 مرور (شمارش نمونه سرویس).

اشاره‌گرهایی به نمونه‌هایی از این نوع از callback otDnsBrowseCallback ارائه می‌شوند.

otDnsQueryConfig

struct otDnsQueryConfig otDnsQueryConfig

یک پیکربندی پرس و جو DNS را نشان می دهد.

هر یک از فیلدهای این ساختار را می توان روی صفر قرار داد تا نشان دهد که مشخص نشده است. نحوه برخورد با فیلدهای نامشخص توسط تابعی تعیین می شود که از نمونه 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 وضوح نمونه سرویس.

اشاره‌گرها به نمونه‌هایی از این نوع از callback 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 می توان برای تکرار در لیست آدرس ها استفاده کرد. شاخص صفر اولین آدرس و غیره را دریافت می کند. وقتی به انتهای لیست رسیدیم، OT_ERROR_NOT_FOUND برگردانده می شود.

جزئیات
مولفه های
[in] aResponse
اشاره ای به پاسخ.
[in] aIndex
فهرست رکورد آدرس برای بازیابی.
[out] aAddress
یک اشاره گر به یک آدرس IPv6 برای خروجی آدرس (نباید NULL باشد).
[out] aTtl
یک اشاره گر به uint32_t برای خروجی TTL برای آدرس. اگر تماس گیرنده نمی خواهد TTL را دریافت کند، می تواند NULL باشد.
ارزش های بازگشتی
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
یک بافر به آرایه char برای خروجی نام کامل میزبان (نباید 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 باشد. aIndex می توان برای تکرار در لیست آدرس ها استفاده کرد. شاخص صفر اولین آدرس و غیره را دریافت می کند. وقتی به انتهای لیست رسیدیم، OT_ERROR_NOT_FOUND برگردانده می شود.

جزئیات
مولفه های
[in] aResponse
اشاره ای به پاسخ.
[in] aHostName
نام میزبان برای دریافت آدرس (نباید NULL باشد).
[in] aIndex
فهرست رکورد آدرس برای بازیابی.
[out] aAddress
یک اشاره گر به یک آدرس IPv6 برای خروجی آدرس (نباید NULL باشد).
[out] aTtl
یک اشاره گر به uint32_t برای خروجی TTL برای آدرس. اگر تماس گیرنده نمی خواهد TTL را دریافت کند، می تواند NULL باشد.
ارزش های بازگشتی
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 روی صفر تنظیم می شود.
  • اگر طول داده TXT بیشتر از mTxtDataSize باشد، به طور جزئی خوانده می شود و mTxtDataTruncated روی true تنظیم می شود.
  • اگر هیچ رکورد AAAA منطبقی در aResponse یافت نشد، mHostAddress is set to all zero or unspecified address.
  • If there are multiple AAAA records for the host name in @p aResponse, mHostAddress is set to the first one. The other addresses can be retrieved using otDnsBrowseResponseGetHostAddress() بازیابی کرد.

جزئیات
مولفه های
[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
یک بافر به آرایه char برای خروجی برچسب نمونه سرویس (نباید 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
یک آرایه بافر به char برای خروجی نام سرویس (نباید 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، برخی از فیلدها را می توان نامشخص رها کرد (مقدار صفر). سپس فیلدهای نامشخص با مقادیر پیکربندی پیش فرض جایگزین می شوند.

جزئیات
مولفه های
[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، برخی از فیلدها را می توان نامشخص رها کرد (مقدار صفر). سپس فیلدهای نامشخص با مقادیر پیکربندی پیش فرض جایگزین می شوند.

جزئیات
مولفه های
[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
نمی توان پرس و جو ارسال کرد زیرا رابط Thread بالا نیست.

otDnsClientResolveIp4Address

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

یک جستار DNS با وضوح آدرس برای رکورد(های) یک (IPv4) برای نام میزبان معین ارسال می کند.

زمانی که OPENTHREAD_CONFIG_DNS_CLIENT_NAT64_ENABLE فعال باشد نیاز دارد و در دسترس است.

هنگامی که یک پاسخ موفقیت آمیز دریافت شد، آدرس ها از aCallback به عنوان نسخه های ترجمه شده NAT64 IPv6 از آدرس های IPv4 از پاسخ پرس و جو، بازگردانده می شوند.

aConfig می تواند NULL باشد. در این مورد پیکربندی پیش فرض (از otDnsClientGetDefaultConfig() ) به عنوان پیکربندی برای این پرس و جو استفاده خواهد شد. در یک aConfig غیر NULL، برخی از فیلدها را می توان نامشخص رها کرد (مقدار صفر). سپس فیلدهای نامشخص با مقادیر پیکربندی پیش فرض جایگزین می شوند.

جزئیات
مولفه های
[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
نمی توان پرس و جو ارسال کرد زیرا رابط Thread بالا نیست.

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، برخی از فیلدها را می توان نامشخص رها کرد (مقدار صفر). سپس فیلدهای نامشخص با مقادیر پیکربندی پیش فرض جایگزین می شوند.

این تابع پرس و جوهایی را برای سوابق 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 NULL است.

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، برخی از فیلدها را می توان نامشخص رها کرد (مقدار صفر). سپس فیلدهای نامشخص با مقادیر پیکربندی پیش فرض جایگزین می شوند. این تابع را نمی توان با 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 NULL است یا aConfig نامعتبر است.

otDnsClientSetDefaultConfig

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

پیکربندی پرس و جو پیش فرض را در سرویس گیرنده DNS تنظیم می کند.

aConfig می تواند NULL باشد. در این حالت پیکربندی پیش‌فرض روی تنظیمات پیش‌فرض از گزینه‌های پیکربندی OT OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_{} تنظیم می‌شود. هنگامی که پشته OpenThread شروع می شود، پیکربندی پرس و جوی پیش فرض را به پیکربندی بازنشانی می کند.

در یک aConfig غیر NULL، تماس‌گیرنده می‌تواند برخی از فیلدها را در نمونه otDnsQueryConfig نامشخص بگذارد (مقدار صفر). فیلدهای نامشخص با تعاریف گزینه پیکربندی 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 فعال باشد.

جزئیات
برمی گرداند
اگر حالت "فشرده سازی نام DNS" فعال باشد، درست است، در غیر این صورت نادرست است.

otDnsServiceResponseGetHostAddress

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

آدرس IPv6 میزبان را از پاسخ وضوح نمونه سرویس DNS دریافت می کند.

فقط باید از otDnsServiceCallback استفاده شود.

پاسخ می تواند شامل صفر یا چند رکورد آدرس IPv6 باشد. aIndex می توان برای تکرار در لیست آدرس ها استفاده کرد. شاخص صفر اولین آدرس و غیره را دریافت می کند. وقتی به انتهای لیست رسیدیم، OT_ERROR_NOT_FOUND برگردانده می شود.

جزئیات
مولفه های
[in] aResponse
اشاره ای به پاسخ.
[in] aHostName
نام میزبان برای دریافت آدرس (نباید NULL باشد).
[in] aIndex
فهرست رکورد آدرس برای بازیابی.
[out] aAddress
یک اشاره گر به یک آدرس IPv6 برای خروجی آدرس (نباید NULL باشد).
[out] aTtl
یک اشاره گر به uint32_t برای خروجی TTL برای آدرس. اگر تماس گیرنده نمی خواهد TTL را دریافت کند، می تواند NULL باشد.
ارزش های بازگشتی
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 روی تمام صفرها تنظیم می شود (آدرس نامشخص). همچنین برای حل آدرس میزبان، کاربر می‌تواند از تابع 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 روی صفر تنظیم می شود.
  • اگر طول داده TXT بیشتر از mTxtDataSize باشد، به طور جزئی خوانده می شود و mTxtDataTruncated روی true تنظیم می شود.
  • اگر هیچ رکورد AAAA منطبقی در aResponse یافت نشد، mHostAddress is set to all zero or unspecified address.
  • If there are multiple AAAA records for the host name in @p aResponse, mHostAddress is set to the first one. The other addresses can be retrieved using otDnsServiceResponseGetHostAddress() بازیابی کرد.

جزئیات
مولفه های
[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
یک بافر به آرایه char برای خروجی برچسب نمونه سرویس (نباید NULL باشد).
[in] aLabelBufferSize
اندازه aLabelBuffer .
[out] aNameBuffer
یک آرایه بافر به char برای خروجی بقیه نام سرویس (اگر کاربر علاقه ای به دریافت نام ندارد می تواند NULL باشد.
[in] aNameBufferSize
اندازه aNameBuffer .
ارزش های بازگشتی
OT_ERROR_NONE
نام سرویس با موفقیت خوانده شد.
OT_ERROR_NO_BUFS
یا برچسب یا نام در بافرهای داده شده جای نمی گیرد.

otDnsSetNameCompressionEnabled

void otDnsSetNameCompressionEnabled(
  bool aEnabled
)

حالت "فشرده سازی نام DNS" را فعال/غیرفعال می کند.

به طور پیش فرض فشرده سازی نام DNS فعال است. هنگامی که غیرفعال است، نام های DNS به صورت کامل اضافه می شوند و هرگز فشرده نمی شوند. این برای ماژول های سرویس گیرنده/سرور DNS و SRP OpenThread قابل اجرا است.

این فقط برای آزمایش در نظر گرفته شده است و زمانی در دسترس است که پیکربندی 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

حداکثر اندازه رشته برچسب (شامل char null در انتهای رشته).

OT_DNS_MAX_NAME_SIZE

 OT_DNS_MAX_NAME_SIZE 255

حداکثر اندازه رشته نام (شامل علامت تهی در انتهای رشته).

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).

منابع

موضوعات مرجع OpenThread API از کد منبع موجود در GitHub سرچشمه می گیرند. برای اطلاعات بیشتر، یا مشارکت در اسناد ما، به منابع مراجعه کنید.