DNS
این ماژول شامل توابعی است که ارتباطات DNS را کنترل می کند.
خلاصه
عملکردهای این ماژول فقط در صورتی در دسترس هستند که ویژگی OPENTHREAD_CONFIG_DNS_CLIENT_ENABLE
فعال باشد.
شمارش ها | |
---|---|
otDnsNat64Mode { | enum Type نشان دهنده حالت NAT64 در یک otDnsQueryConfig است. |
otDnsRecursionFlag { | enum Type نشان دهنده پرچم "Recursion Desired" (RD) در یک otDnsQueryConfig است. |
otDnsServiceMode { | enum Type حالت وضوح سرویس را در یک otDnsQueryConfig نشان می دهد. |
otDnsTransportProto { | enum Type نشان دهنده پروتکل انتقال DNS در یک otDnsQueryConfig است. |
Typedefs | |
---|---|
otDnsAddressCallback )(otError aError, const otDnsAddressResponse *aResponse, void *aContext) | typedefvoid(* زمانی که یک پاسخ DNS برای پرس و جوی وضوح آدرس دریافت می شود، اشاره گر فراخوانی می شود. |
otDnsAddressResponse | typedefstruct otDnsAddressResponse نمایشی مبهم از پاسخ به یک جستار DNS با وضوح آدرس. |
otDnsBrowseCallback )(otError aError, const otDnsBrowseResponse *aResponse, void *aContext) | typedefvoid(* اشاره گر زمانی فراخوانی می شود که یک پاسخ DNS برای جستجوی مرور (شمارش نمونه سرویس) دریافت شود. |
otDnsBrowseResponse | typedefstruct otDnsBrowseResponse نمایشی مبهم از پاسخ به جستجوی DNS مرور (شمارش نمونه سرویس). |
otDnsQueryConfig | typedefstruct otDnsQueryConfig یک پیکربندی پرس و جو DNS را نشان می دهد. |
otDnsServiceCallback )(otError aError, const otDnsServiceResponse *aResponse, void *aContext) | typedefvoid(* هنگامی که یک پاسخ DNS برای یک پرس و جو رزولوشن نمونه سرویس دریافت می شود، اشاره گر فراخوانی می شود. |
otDnsServiceInfo | typedefstruct otDnsServiceInfo اطلاعاتی را برای یک نمونه سرویس DNS ارائه می دهد. |
otDnsServiceResponse | typedefstruct otDnsServiceResponse نمایشی مبهم از پاسخ به پرس و جوی DNS وضوح نمونه سرویس. |
otDnsTxtEntry | typedefstruct otDnsTxtEntry یک ورودی رکورد TXT را نشان می دهد که یک جفت کلید/مقدار را نشان می دهد (RFC 6763 - بخش 6.3). |
otDnsTxtEntryIterator | typedefstruct otDnsTxtEntryIterator یک تکرار کننده برای ورودی های رکورد 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) | const otDnsQueryConfig * پیکربندی پرس و جو پیش فرض فعلی مورد استفاده توسط سرویس گیرنده 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
فعال باشد.
otDnsRecursionFlag
otDnsRecursionFlag
Type نشان دهنده پرچم "Recursion Desired" (RD) در یک otDnsQueryConfig
است.
otDnsServiceMode
otDnsServiceMode
Type حالت وضوح سرویس را در یک otDnsQueryConfig
نشان می دهد.
این فقط در هنگام وضوح سرویس سرویس گیرنده DNS otDnsClientResolveService()
استفاده می شود. تعیین می کند که کدام نوع رکورد باید پرس و جو شود.
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
می تواند موارد زیر را داشته باشد:
جزئیات | |||||||
---|---|---|---|---|---|---|---|
مولفه های |
|
- 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()
را ببینید.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
مولفه های |
|
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()
را ببینید.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
مولفه های |
|
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
برگردانده می شود.
جزئیات | |||||||||
---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||
ارزش های بازگشتی |
|
otDnsAddressResponseGetHostName
otError otDnsAddressResponseGetHostName( const otDnsAddressResponse *aResponse, char *aNameBuffer, uint16_t aNameBufferSize )
نام کامل میزبان مرتبط با پاسخ DNS با وضوح آدرس را دریافت می کند.
فقط باید از otDnsAddressCallback
استفاده شود.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
مولفه های |
| ||||||
ارزش های بازگشتی |
|
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
برگردانده می شود.
جزئیات | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||
ارزش های بازگشتی |
|
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,
mHostAddressis set to the first one. The other addresses can be retrieved using
otDnsBrowseResponseGetHostAddress() بازیابی کرد.
جزئیات | |||||||||
---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||
ارزش های بازگشتی |
|
otDnsBrowseResponseGetServiceInstance
otError otDnsBrowseResponseGetServiceInstance( const otDnsBrowseResponse *aResponse, uint16_t aIndex, char *aLabelBuffer, uint8_t aLabelBufferSize )
یک نمونه سرویس مرتبط با پاسخ مرور DNS (شمارش نمونه سرویس) دریافت می کند.
فقط باید از otDnsBrowseCallback
استفاده شود.
پاسخ ممکن است شامل چندین سابقه نمونه خدمات باشد. aIndex
می توان برای تکرار در لیست استفاده کرد. شاخص صفر اولین رکورد را می دهد. وقتی به انتهای لیست رسیدیم، OT_ERROR_NOT_FOUND
برگردانده می شود.
توجه داشته باشید که این تابع برچسب نمونه سرویس را دریافت می کند و نه نام نمونه کامل سرویس را که همان شکل است. .
. .
جزئیات | |||||||||
---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||
ارزش های بازگشتی |
|
otDnsBrowseResponseGetServiceName
otError otDnsBrowseResponseGetServiceName( const otDnsBrowseResponse *aResponse, char *aNameBuffer, uint16_t aNameBufferSize )
نام سرویس مرتبط با پاسخ مرور DNS (شمارش نمونه سرویس) را دریافت می کند.
فقط باید از otDnsBrowseCallback
استفاده شود.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
مولفه های |
| ||||||
ارزش های بازگشتی |
|
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، برخی از فیلدها را می توان نامشخص رها کرد (مقدار صفر). سپس فیلدهای نامشخص با مقادیر پیکربندی پیش فرض جایگزین می شوند.
جزئیات | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||
ارزش های بازگشتی |
|
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
.
جزئیات | |||
---|---|---|---|
مولفه های |
| ||
برمی گرداند | اشاره گر به پیکربندی پیش فرض فعلی که توسط سرویس گیرنده DNS استفاده می شود. |
otDnsClientResolveAddress
otError otDnsClientResolveAddress( otInstance *aInstance, const char *aHostName, otDnsAddressCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig )
یک جستار DNS با وضوح آدرس برای رکورد(های) AAAA (IPv6) برای نام میزبان معین ارسال می کند.
aConfig
می تواند NULL باشد. در این مورد پیکربندی پیش فرض (از otDnsClientGetDefaultConfig()
) به عنوان پیکربندی برای این پرس و جو استفاده خواهد شد. در یک aConfig
غیر NULL، برخی از فیلدها را می توان نامشخص رها کرد (مقدار صفر). سپس فیلدهای نامشخص با مقادیر پیکربندی پیش فرض جایگزین می شوند.
جزئیات | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||
ارزش های بازگشتی |
|
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، برخی از فیلدها را می توان نامشخص رها کرد (مقدار صفر). سپس فیلدهای نامشخص با مقادیر پیکربندی پیش فرض جایگزین می شوند.
جزئیات | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||
ارزش های بازگشتی |
|
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()
در دسترس خواهد بود.
جزئیات | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||||
ارزش های بازگشتی |
|
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
مجدد فراخوانی میشود.
جزئیات | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||||
ارزش های بازگشتی |
|
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 در پیکربندی پیش فرض تنظیم می شود.
جزئیات | |||||
---|---|---|---|---|---|
مولفه های |
|
otDnsEncodeTxtData
otError otDnsEncodeTxtData( const otDnsTxtEntry *aTxtEntries, uint16_t aNumTxtEntries, uint8_t *aTxtData, uint16_t *aTxtDataLength )
فهرست معینی از ورودیهای رکورد TXT (جفت کلید/مقدار) را در دادههای TXT کد میکند (فرمت زیر که توسط RFC 6763 مشخص شده است).
جزئیات | |||||||||
---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||
ارزش های بازگشتی |
|
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
برگردانده میشود.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
مولفه های |
| ||||||
ارزش های بازگشتی |
|
otDnsInitTxtEntryIterator
void otDnsInitTxtEntryIterator( otDnsTxtEntryIterator *aIterator, const uint8_t *aTxtData, uint16_t aTxtDataLength )
یک تکرار کننده رکورد TXT را راه اندازی می کند.
نشانگر بافر aTxtData
و محتوای آن باید در حین استفاده از شی aIterator
باقی بمانند و بدون تغییر باقی بمانند.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
مولفه های |
|
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
برگردانده می شود.
جزئیات | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||
ارزش های بازگشتی |
|
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,
mHostAddressis set to the first one. The other addresses can be retrieved using
otDnsServiceResponseGetHostAddress() بازیابی کرد.
جزئیات | |||||||||
---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||
ارزش های بازگشتی |
|
otDnsServiceResponseGetServiceName
otError otDnsServiceResponseGetServiceName( const otDnsServiceResponse *aResponse, char *aLabelBuffer, uint8_t aLabelBufferSize, char *aNameBuffer, uint16_t aNameBufferSize )
نام نمونه سرویس مرتبط با پاسخ وضوح نمونه سرویس DNS را دریافت می کند.
فقط باید از otDnsServiceCallback
استفاده شود.
جزئیات | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||
ارزش های بازگشتی |
|
otDnsSetNameCompressionEnabled
void otDnsSetNameCompressionEnabled( bool aEnabled )
حالت "فشرده سازی نام DNS" را فعال/غیرفعال می کند.
به طور پیش فرض فشرده سازی نام DNS فعال است. هنگامی که غیرفعال است، نام های DNS به صورت کامل اضافه می شوند و هرگز فشرده نمی شوند. این برای ماژول های سرویس گیرنده/سرور DNS و SRP OpenThread قابل اجرا است.
این فقط برای آزمایش در نظر گرفته شده است و زمانی در دسترس است که پیکربندی OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE
فعال باشد.
توجه داشته باشید که در موردی که OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE
استفاده می شود، این حالت برای همه نمونه های OpenThread اعمال می شود (یعنی فراخوانی این تابع حالت فشرده سازی را در تمام نمونه های OpenThread فعال/غیرفعال می کند).
جزئیات | |||
---|---|---|---|
مولفه های |
|
ماکروها
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 سرچشمه می گیرند. برای اطلاعات بیشتر، یا مشارکت در اسناد ما، به منابع مراجعه کنید.