نظام أسماء النطاقات

تشمل هذه الوحدة وظائف تتحكم في اتصال نظام أسماء النطاقات.

الملخّص

لا تتوفر الوظائف في هذه الوحدة إلا في حال تفعيل الميزة OPENTHREAD_CONFIG_DNS_CLIENT_ENABLE.

التعدادات

otDnsNat64Mode{
  OT_DNS_NAT64_UNSPECIFIED = 0,
  OT_DNS_NAT64_ALLOW = 1,
  OT_DNS_NAT64_DISALLOW = 2
}
تعداد
يمثل نوع التعداد هذا وضع NAT64 في otDnsQueryConfig.
otDnsRecursionFlag{
  OT_DNS_FLAG_UNSPECIFIED = 0,
  OT_DNS_FLAG_RECURSION_DESIRED = 1,
  OT_DNS_FLAG_NO_RECURSION = 2
}
تعداد
يُمثّل نوع التعداد هذا علامة "الرغبة المتكررة" (RD) في otDnsQueryConfig.

مواقد الخط

otDnsAddressCallback)(otError aError, const otDnsAddressResponse *aResponse, void *aContext) مَعلمة typetype
void(*
يتم استدعاء مؤشر الدالة هذا عند تلقّي استجابة نظام أسماء النطاقات لطلب تحليل العنوان.
otDnsAddressResponse مَعلمة typetype
يُعد هذا النوع تمثيلاً مبهمًا لاستجابة إلى طلب بحث نظام أسماء النطاقات بدقة العنوان.
otDnsBrowseCallback)(otError aError, const otDnsBrowseResponse *aResponse, void *aContext) مَعلمة typetype
void(*
يتم استدعاء مؤشر الدالة هذا عند تلقّي استجابة نظام أسماء النطاقات لطلب بحث (تعداد خدمة النسخة الافتراضية).
otDnsBrowseResponse مَعلمة typetype
يُعد هذا النوع تمثيلاً مبهمًا لاستجابة إلى طلب بحث في نظام أسماء النطاقات للتصفح (تعداد الخدمة).
otDnsQueryConfig مَعلمة typetype
تمثل هذه البنية تهيئة طلب بحث نظام أسماء النطاقات.
otDnsServiceCallback)(otError aError, const otDnsServiceResponse *aResponse, void *aContext) مَعلمة typetype
void(*
يتم استدعاء مؤشر الدالة هذا عند تلقّي استجابة نظام أسماء النطاقات لطلب بحث عن مثيل خدمة.
otDnsServiceInfo مَعلمة typetype
توفّر هذه البنية معلومات عن مثيل خدمة نظام أسماء النطاقات.
otDnsServiceResponse مَعلمة typetype
يُعد هذا النوع تمثيلاً مبهمًا لاستجابة إلى طلب بحث نظام أسماء النطاقات لحل المشكلة على مستوى الخدمة.
otDnsTxtEntry مَعلمة typetype
struct otDnsTxtEntry
تمثّل هذه البنية إدخال سجلّ TXT الذي يمثّل زوجًا من المفاتيح/القيمة (RFC 6763 - القسم 6.3).
otDnsTxtEntryIterator مَعلمة typetype
تمثّل هذه البنية تكرارًا لسجلات سجل TXT (أزواج المفتاح/القيمة).

الدوال

otDnsAddressResponseGetAddress(const otDnsAddressResponse *aResponse, uint16_t aIndex, otIp6Address *aAddress, uint32_t *aTtl)
تحصل هذه الدالة على عنوان IPv6 المرتبط باستجابة نظام أسماء النطاقات لدقة العنوان.
otDnsAddressResponseGetHostName(const otDnsAddressResponse *aResponse, char *aNameBuffer, uint16_t aNameBufferSize)
تحصل هذه الدالة على اسم المضيف الكامل المرتبط بالرد على نظام أسماء النطاقات لدقة العنوان.
otDnsBrowseResponseGetHostAddress(const otDnsBrowseResponse *aResponse, const char *aHostName, uint16_t aIndex, otIp6Address *aAddress, uint32_t *aTtl)
تحصل هذه الدالة على عنوان IPv6 المضيف من استجابة تصفُّح نظام أسماء النطاقات (تعداد الخدمة).
otDnsBrowseResponseGetServiceInfo(const otDnsBrowseResponse *aResponse, const char *aInstanceLabel, otDnsServiceInfo *aServiceInfo)
تحصل هذه الدالة على معلومات عن مثيل خدمة من استجابة تصفّح نظام أسماء النطاقات (تعداد الخدمة).
otDnsBrowseResponseGetServiceInstance(const otDnsBrowseResponse *aResponse, uint16_t aIndex, char *aLabelBuffer, uint8_t aLabelBufferSize)
تحصل هذه الدالة على مثيل خدمة مرتبط باستجابة تصفح نظام أسماء النطاقات (تعداد الخدمة).
otDnsBrowseResponseGetServiceName(const otDnsBrowseResponse *aResponse, char *aNameBuffer, uint16_t aNameBufferSize)
تحصل هذه الدالة على اسم الخدمة المرتبط برد تصفُّح نظام أسماء النطاقات (تعداد الخدمة).
otDnsClientBrowse(otInstance *aInstance, const char *aServiceName, otDnsBrowseCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
ترسل هذه الدالة طلب بحث في التصفّح لنظام أسماء النطاقات (تعداد الخدمة) لاسم خدمة معيّن.
otDnsClientGetDefaultConfig(otInstance *aInstance)
تحصل هذه الدالة على إعداد الطلب التلقائي الحالي الذي يستخدمه عميل نظام أسماء النطاقات.
otDnsClientResolveAddress(otInstance *aInstance, const char *aHostName, otDnsAddressCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
ترسل هذه الدالة طلب بحث لنظام أسماء النطاقات بدرجة دقة العنوان لسجلّات AAAA (IPv6) لاسم المضيف المحدّد.
otDnsClientResolveIp4Address(otInstance *aInstance, const char *aHostName, otDnsAddressCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
ترسل هذه الدالة طلب بحث لنظام أسماء النطاقات بدرجة دقة العنوان لسجلّات A (IPv4) لاسم المضيف المحدّد.
otDnsClientResolveService(otInstance *aInstance, const char *aInstanceLabel, const char *aServiceName, otDnsServiceCallback aCallback, void *aContext, const otDnsQueryConfig *aConfig)
ترسل هذه الدالة طلب بحث عن مثيل خدمة نظام أسماء نطاقات لمثيل خدمة معيّن.
otDnsClientSetDefaultConfig(otInstance *aInstance, const otDnsQueryConfig *aConfig)
void
تضبط هذه الدالة إعداد طلب البحث التلقائي في برنامج نظام أسماء النطاقات.
otDnsGetNextTxtEntry(otDnsTxtEntryIterator *aIterator, otDnsTxtEntry *aEntry)
تحلّل هذه الدالة بيانات TXT من المكرر، وتتلقّى إدخال سجلّ TXT التالي (زوج مفتاح/قيمة).
otDnsInitTxtEntryIterator(otDnsTxtEntryIterator *aIterator, const uint8_t *aTxtData, uint16_t aTxtDataLength)
void
تعمل هذه الدالة على إعداد تكرار سجل TXT.
otDnsIsNameCompressionEnabled(void)
bool
تشير هذه الدالة إلى ما إذا كان وضع "ضغط اسم نظام أسماء النطاقات" مفعّلاً أم لا.
otDnsServiceResponseGetHostAddress(const otDnsServiceResponse *aResponse, const char *aHostName, uint16_t aIndex, otIp6Address *aAddress, uint32_t *aTtl)
تحصل هذه الدالة على عنوان IPv6 المضيف من استجابة دقة مثيل خدمة نظام أسماء النطاقات.
otDnsServiceResponseGetServiceInfo(const otDnsServiceResponse *aResponse, otDnsServiceInfo *aServiceInfo)
تحصل هذه الدالة على معلومات عن مثيل الخدمة من استجابة حل مثيل خدمة نظام أسماء النطاقات.
otDnsServiceResponseGetServiceName(const otDnsServiceResponse *aResponse, char *aLabelBuffer, uint8_t aLabelBufferSize, char *aNameBuffer, uint16_t aNameBufferSize)
تحصل هذه الدالة على اسم مثيل الخدمة المرتبط باستجابة مثيل خدمة نظام أسماء النطاقات.
otDnsSetNameCompressionEnabled(bool aEnabled)
void
وتعمل هذه الدالة على تفعيل/إيقاف وضع "ضغط اسم نظام أسماء النطاقات".

التشريعات

otDnsQueryConfig

تمثل هذه البنية تهيئة طلب بحث نظام أسماء النطاقات.

otDnsServiceInfo

توفّر هذه البنية معلومات عن مثيل خدمة نظام أسماء النطاقات.

otDnsTxtEntry

تمثّل هذه البنية إدخال سجلّ TXT الذي يمثّل زوجًا من المفاتيح/القيمة (RFC 6763 - القسم 6.3).

otDnsTxtEntryIterator

تمثّل هذه البنية تكرارًا لسجلات سجل TXT (أزواج المفتاح/القيمة).

التعدادات

otDnsNat64Mode

 otDnsNat64Mode

يمثل نوع التعداد هذا وضع NAT64 في otDnsQueryConfig.

يشير وضع NAT64 إلى ما إذا كان سيتم السماح بترجمة عنوان NAT64 أو عدم السماح به أثناء دقة عنوان عميل نظام أسماء النطاقات. لا يتم استخدام هذا الوضع إلا عند تفعيل 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

يشير إلى أن خادم أسماء نظام أسماء النطاقات لا يمكنه حل طلب البحث بشكل متكرر.

OT_DNS_FLAG_RECURSION_DESIRED

يشير إلى أن خادم أسماء نظام أسماء النطاقات يمكنه حل طلب البحث بشكل متكرر.

OT_DNS_FLAG_UNSPECIFIED

يشير إلى أنه لم يتم تحديد العلامة.

مواقد الخط

otDnsAddressCallback

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

يتم استدعاء مؤشر الدالة هذا عند تلقّي استجابة نظام أسماء النطاقات لطلب تحليل العنوان.

داخل معاودة الاتصال هذه، يمكن للمستخدم استخدام وظائف otDnsAddressResponseGet{Item}() مع مؤشر aResponse للحصول على مزيد من المعلومات عن الرد.

يمكن استخدام المؤشر aResponse فقط في استدعاء الاتصال هذا وبعد الرجوع من هذه الدالة، لن يظل صالحًا، وبالتالي يجب ألا يحتفظ المستخدم بمؤشر aResponse للاستخدام لاحقًا.

يمكن أن يتضمن aError ما يلي:

التفاصيل
المعلَمات
[in] aError
نتيجة معاملة نظام أسماء النطاقات
[in] aResponse
مؤشر الاستجابة (يكون دائمًا غير فارغ).
[in] aContext
مؤشر للسياق الخاص بالتطبيق.

  • OT_ERROR_NONE تم استلام رد بنجاح.
  • OT_ERROR_ABORT تم إلغاء معاملة نظام أسماء النطاقات بواسطة الحزم.
  • 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 Bad اقتطاع -> OT_ERROR_PARSE
  • رموز الاستجابة الأخرى -> OT_ERROR_FAILED

otDnsAddressResponse

struct otDnsAddressResponse otDnsAddressResponse

يُعد هذا النوع تمثيلاً مبهمًا لاستجابة إلى طلب بحث نظام أسماء النطاقات بدقة العنوان.

يتم تقديم مؤشرات من هذا النوع من معاودة الاتصال otDnsAddressCallback.

otDnsBrowsingCallback

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

يتم استدعاء مؤشر الدالة هذا عند تلقّي استجابة نظام أسماء النطاقات لطلب بحث (تعداد خدمة النسخة الافتراضية).

داخل معاودة الاتصال هذه، يمكن للمستخدم استخدام وظائف otDnsBrowseResponseGet{Item}() مع مؤشر aResponse للحصول على مزيد من المعلومات عن الرد.

يمكن استخدام المؤشر aResponse فقط في استدعاء الاتصال هذا وبعد الرجوع من هذه الدالة، لن يظل صالحًا، وبالتالي يجب ألا يحتفظ المستخدم بمؤشر aResponse للاستخدام لاحقًا.

للحصول على القائمة الكاملة للقيم المحتملة لـ aError، يُرجى الاطلاع على otDnsAddressCallback().

التفاصيل
المعلَمات
[in] aError
نتيجة معاملة نظام أسماء النطاقات
[in] aResponse
مؤشر الاستجابة (يكون دائمًا غير فارغ).
[in] aContext
مؤشر للسياق الخاص بالتطبيق.

otDnsBrowsingResponse

struct otDnsBrowseResponse otDnsBrowseResponse

يُعد هذا النوع تمثيلاً مبهمًا لاستجابة إلى طلب بحث في نظام أسماء النطاقات للتصفح (تعداد الخدمة).

يتم تقديم مؤشرات من هذا النوع من معاودة الاتصال otDnsBrowseCallback.

otDnsQueryConfig

struct otDnsQueryConfig otDnsQueryConfig

تمثل هذه البنية تهيئة طلب بحث نظام أسماء النطاقات.

يمكن ضبط أي من الحقول في هذه البنية على صفر للإشارة إلى أنه غير محدد. ويتم تحديد طريقة التعامل مع الحقول غير المحدَّدة من خلال الدالة التي تستخدم مثيل otDnsQueryConfig.

otDnsServiceCallback

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

يتم استدعاء مؤشر الدالة هذا عند تلقّي استجابة نظام أسماء النطاقات لطلب بحث عن مثيل خدمة.

داخل معاودة الاتصال هذه، يمكن للمستخدم استخدام وظائف otDnsServiceResponseGet{Item}() مع مؤشر aResponse للحصول على مزيد من المعلومات عن الرد.

يمكن استخدام المؤشر aResponse فقط في استدعاء الاتصال هذا وبعد الرجوع من هذه الدالة، لن يظل صالحًا، وبالتالي يجب ألا يحتفظ المستخدم بمؤشر aResponse للاستخدام لاحقًا.

للحصول على القائمة الكاملة للقيم المحتملة لـ aError، يُرجى الاطلاع على otDnsAddressCallback().

التفاصيل
المعلَمات
[in] aError
نتيجة معاملة نظام أسماء النطاقات
[in] aResponse
مؤشر الاستجابة (يكون دائمًا غير فارغ).
[in] aContext
مؤشر للسياق الخاص بالتطبيق.

otDnsServiceInfo

struct otDnsServiceInfo otDnsServiceInfo

توفّر هذه البنية معلومات عن مثيل خدمة نظام أسماء النطاقات.

otDnsServiceResponse

struct otDnsServiceResponse otDnsServiceResponse

يُعد هذا النوع تمثيلاً مبهمًا لاستجابة إلى طلب بحث نظام أسماء النطاقات لحل المشكلة على مستوى الخدمة.

يتم تقديم مؤشرات من هذا النوع من معاودة الاتصال otDnsAddressCallback.

otDnsTxtEntry

struct otDnsTxtEntry otDnsTxtEntry

تمثّل هذه البنية إدخال سجلّ TXT الذي يمثّل زوجًا من المفاتيح/القيمة (RFC 6763 - القسم 6.3).

يجب أن تستمر المخزنات المؤقتة المُشار إليها من خلال mKey وmValue كما هي بدون تغيير، بعد تمرير مثيل هذه البنية إلى Openthread (كجزء من مثيل otSrpClientService).

يتم استخدام مصفوفة من إدخالات otDnsTxtEntry في otSrpClientService لتحديد سجل TXT بالكامل (قائمة بالإدخالات).

otDnsTxtEntryIterator

struct otDnsTxtEntryIterator otDnsTxtEntryIterator

تمثّل هذه البنية تكرارًا لسجلات سجل TXT (أزواج المفتاح/القيمة).

حقول البيانات في هذه البنية مُخصصة للاستخدام من قِبل Openسلسلة أساسية ويجب ألا يقرأها المتصل أو يغيّرها.

الدوال

otDnsAddressResponseGetAddress

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

تحصل هذه الدالة على عنوان IPv6 المرتبط باستجابة نظام أسماء النطاقات لدقة العنوان.

يجب استخدام هذه الدالة من otDnsAddressCallback فقط.

وقد يتضمن الرد سجلات متعددة لبروتوكول IPv6. يمكن استخدام aIndex وتكرار البحث في قائمة العناوين. يحصل الفهرس صفر على العنوان الأول وما إلى ذلك. عند الوصول إلى نهاية القائمة، يتم عرض OT_ERROR_NOT_FOUND.

التفاصيل
المعلَمات
[in] aResponse
مؤشر الاستجابة.
[in] aIndex
فهرس سجل العناوين المراد استرداده.
[out] aAddress
إشارة إلى عنوان IPv6 لإخراج العنوان (يجب ألا يكون فارغًا).
[out] aTtl
إشارة إلى uint32_t لإخراج TTL للعنوان. وقد يكون فارغًا إذا لم يرغب المتصل في الحصول على مدة البقاء (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
)

تحصل هذه الدالة على اسم المضيف الكامل المرتبط بالرد على نظام أسماء النطاقات لدقة العنوان.

يجب استخدام هذه الدالة من otDnsAddressCallback فقط.

التفاصيل
المعلَمات
[in] aResponse
مؤشر الاستجابة.
[out] aNameBuffer
مخزن مؤقت لمصفوفة حروف لإخراج اسم المضيف بالكامل (يجب ألا يكون فارغًا).
[in] aNameBufferSize
حجم aNameBuffer.
قيم الإرجاع
OT_ERROR_NONE
تمت قراءة اسم المضيف بالكامل بنجاح.
OT_ERROR_NO_BUFS
لا يتناسب الاسم مع aNameBuffer.

otDnsBrowsingResponseGetHostAddress

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

تحصل هذه الدالة على عنوان IPv6 المضيف من استجابة تصفُّح نظام أسماء النطاقات (تعداد الخدمة).

يجب استخدام هذه الدالة من otDnsBrowseCallback فقط.

يمكن أن يتضمن الرد صفرًا أو أكثر من سجلات عنوان IPv6. يمكن استخدام aIndex وتكرار البحث في قائمة العناوين. يحصل الفهرس صفر على العنوان الأول وما إلى ذلك. عند الوصول إلى نهاية القائمة، يتم عرض OT_ERROR_NOT_FOUND.

التفاصيل
المعلَمات
[in] aResponse
مؤشر الاستجابة.
[in] aHostName
اسم المضيف للحصول على العنوان (يجب ألا يكون فارغًا).
[in] aIndex
فهرس سجل العناوين المراد استرداده.
[out] aAddress
إشارة إلى عنوان IPv6 لإخراج العنوان (يجب ألا يكون فارغًا).
[out] aTtl
إشارة إلى uint32_t لإخراج TTL للعنوان. وقد يكون فارغًا إذا لم يرغب المتصل في الحصول على مدة البقاء (TTL).
قيم الإرجاع
OT_ERROR_NONE
تمت قراءة العنوان بنجاح.
OT_ERROR_NOT_FOUND
لا يوجد سجلّ عنوان لـ aHostname في aResponse في aIndex.
OT_ERROR_PARSE
تعذَّر تحليل السجلات في aResponse.

otDnsBrowsingResponseGetServiceInfo

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

تحصل هذه الدالة على معلومات عن مثيل خدمة من استجابة تصفّح نظام أسماء النطاقات (تعداد الخدمة).

يجب استخدام هذه الدالة من otDnsBrowseCallback فقط.

ويجب أن يتضمن الردّ على نظام أسماء النطاقات للتصفُّح سجلّات الخدمة (SRV) وTXT وAAAA لمثيلات الخدمة العددية (يُرجى العلم بأنّها يجب أن تكون غير مؤهّلة). تحاول هذه الدالة استرداد هذه المعلومات لمثيل خدمة معين عند توفرها.

  • إذا لم يتم العثور على سجل SRV مطابق في aResponse، يتم عرض OT_ERROR_NOT_FOUND.
  • إذا تم العثور على سجلّ SRV مطابق في aResponse، يتم تحديث aServiceInfo وإرجاع OT_ERROR_NONE.
  • إذا لم يتم العثور على سجل TXT مطابق في aResponse، تم ضبط mTxtDataSize في aServiceInfo على صفر.
  • في حال عدم العثور على سجلّ 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 usingotDnsBrowsingResponseGetHostAddress()`.

التفاصيل
المعلَمات
[in] aResponse
مؤشر الاستجابة.
[in] aInstanceLabel
تصنيف مثيل الخدمة (يجب ألا يكون فارغًا).
[out] aServiceInfo
ServiceInfo لإخراج معلومات مثيل الخدمة (يجب ألا يكون فارغًا).
قيم الإرجاع
OT_ERROR_NONE
تمت قراءة معلومات مثيل الخدمة. تم تحديث aServiceInfo.
OT_ERROR_NOT_FOUND
تعذر العثور على سجل SRV مطابق لـ aInstanceLabel.
OT_ERROR_NO_BUFS
تعذر احتواء اسم المضيف و/أو بيانات TXT في المخازن المؤقتة المحددة.
OT_ERROR_PARSE
تعذَّر تحليل السجلات في aResponse.

otDnsBrowsingResponseGetServiceInstance

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

تحصل هذه الدالة على مثيل خدمة مرتبط باستجابة تصفح نظام أسماء النطاقات (تعداد الخدمة).

يجب استخدام هذه الدالة من otDnsBrowseCallback فقط.

قد يتضمن الرد سجلات متعددة من نُسخ الخدمة. يمكن استخدام aIndex وتكرار التكرار من خلال القائمة. يقدّم الفهرس صفر السجل الأول. عند الوصول إلى نهاية القائمة، يتم عرض OT_ERROR_NOT_FOUND.

تجدر الإشارة إلى أن هذه الدالة تحصل على تصنيف مثيل الخدمة وليس اسم مثيل الخدمة الكامل وهو من النموذج ...

التفاصيل
المعلَمات
[in] aResponse
مؤشر الاستجابة.
[in] aIndex
فهرس سجل مثيل الخدمة.
[out] aLabelBuffer
مخزن مؤقت لمصفوفة حروف لإخراج تصنيف مثيل الخدمة (يجب ألا يكون فارغًا).
[in] aLabelBufferSize
حجم aLabelBuffer.
قيم الإرجاع
OT_ERROR_NONE
تمت قراءة مثيل الخدمة بنجاح.
OT_ERROR_NO_BUFS
لا يتناسب الاسم مع aNameBuffer.
OT_ERROR_NOT_FOUND
لا يوجد سجلّ مثيل خدمة في aResponse في aIndex.
OT_ERROR_PARSE
تعذَّر تحليل السجلات في aResponse.

otDnsBrowsingResponseGetServiceName

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

تحصل هذه الدالة على اسم الخدمة المرتبط برد تصفُّح نظام أسماء النطاقات (تعداد الخدمة).

يجب استخدام هذه الدالة من otDnsBrowseCallback فقط.

التفاصيل
المعلَمات
[in] aResponse
مؤشر الاستجابة.
[out] aNameBuffer
مخزن مؤقت لمصفوفة حروف لإخراج اسم الخدمة (يجب ألا يكون فارغًا).
[in] aNameBufferSize
حجم aNameBuffer.
قيم الإرجاع
OT_ERROR_NONE
تمت قراءة اسم الخدمة بنجاح.
OT_ERROR_NO_BUFS
لا يتناسب الاسم مع aNameBuffer.

otDnsClientBrowsing

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

ترسل هذه الدالة طلب بحث في التصفّح لنظام أسماء النطاقات (تعداد الخدمة) لاسم خدمة معيّن.

هذه الدالة متاحة عند تفعيل OPENTHREAD_CONFIG_DNS_CLIENT_SERVICE_DISCOVERY_ENABLE.

يمكن أن يكون aConfig فارغًا. في هذه الحالة، سيتم استخدام الإعداد التلقائي (من otDnsClientGetDefaultConfig()) كإعداد لهذا الطلب. في aConfig غير فارغ، يمكن ترك بعض الحقول غير محدَّدة (القيمة صفر). يتم بعد ذلك استبدال الحقول غير المحدّدة بالقيم من الإعداد التلقائي.

التفاصيل
المعلَمات
[in] aInstance
مؤشر إلى مثيل OpenThread.
[in] aServiceName
اسم الخدمة المطلوب الاستعلام عنها (يجب ألا يكون فارغًا).
[in] aCallback
مؤشر دالة يتم استدعاؤه عند استقبال الردود أو انتهاء المهلة.
[in] aContext
مؤشر لمعلومات السياق العشوائية.
[in] aConfig
مؤشر إلى الإعداد المطلوب استخدامه لطلب البحث هذا.
قيم الإرجاع
OT_ERROR_NONE
تم إرسال طلب البحث بنجاح. سيتم استدعاء aCallback للإبلاغ عن الحالة.
OT_ERROR_NO_BUFS
المخزن المؤقت غير كافٍ لإعداد طلب البحث وإرساله.

otDnsClientGetDefaultConfig

const otDnsQueryConfig * otDnsClientGetDefaultConfig(
  otInstance *aInstance
)

تحصل هذه الدالة على إعداد الطلب التلقائي الحالي الذي يستخدمه عميل نظام أسماء النطاقات.

عند بدء تسلسل استدعاء الدوال البرمجية في Openسلسلة، يتم تحديد إعداد طلب بحث نظام أسماء النطاقات التلقائي من مجموعة من خيارات إعداد OT، مثل OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_SERVER_IP6_ADDRESS و_DEFAULT_SERVER_PORT و_DEFAULT_RESPONSE_TIMEOUT وما إلى ذلك (راجِع config/dns_client.h لمعرفة جميع خيارات الإعداد ذات الصلة). .

التفاصيل
المعلَمات
[in] aInstance
مؤشر إلى مثيل OpenThread.
طلبات الإرجاع
مؤشر إلى الإعداد التلقائي الحالي الذي يستخدمه عميل نظام أسماء النطاقات.

otDnsClientResolveAddress

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

ترسل هذه الدالة طلب بحث لنظام أسماء النطاقات بدرجة دقة العنوان لسجلّات AAAA (IPv6) لاسم المضيف المحدّد.

يمكن أن يكون aConfig فارغًا. في هذه الحالة، سيتم استخدام الإعداد التلقائي (من otDnsClientGetDefaultConfig()) كإعداد لهذا الطلب. في aConfig غير فارغ، يمكن ترك بعض الحقول غير محدَّدة (القيمة صفر). يتم بعد ذلك استبدال الحقول غير المحدّدة بالقيم من الإعداد التلقائي.

التفاصيل
المعلَمات
[in] aInstance
مؤشر إلى مثيل OpenThread.
[in] aHostName
اسم المضيف المطلوب إجراء البحث عنه في العنوان (يجب ألا يكون فارغًا).
[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
)

ترسل هذه الدالة طلب بحث لنظام أسماء النطاقات بدرجة دقة العنوان لسجلّات A (IPv4) لاسم المضيف المحدّد.

هذه الدالة تتطلب وتتوفر عند تفعيل OPENTHREAD_CONFIG_DNS_CLIENT_NAT64_ENABLE.

وعند تلقّي استجابة ناجحة، يتم عرض العناوين من aCallback كإصدارات IPv6 مترجَمة من عناوين IPv4 من استجابة طلب البحث.

يمكن أن يكون aConfig فارغًا. في هذه الحالة، سيتم استخدام الإعداد التلقائي (من otDnsClientGetDefaultConfig()) كإعداد لهذا الطلب. في aConfig غير فارغ، يمكن ترك بعض الحقول غير محدَّدة (القيمة صفر). يتم بعد ذلك استبدال الحقول غير المحدّدة بالقيم من الإعداد التلقائي.

التفاصيل
المعلَمات
[in] aInstance
مؤشر إلى مثيل OpenThread.
[in] aHostName
اسم المضيف المطلوب إجراء البحث عنه في العنوان (يجب ألا يكون فارغًا).
[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
)

ترسل هذه الدالة طلب بحث عن مثيل خدمة نظام أسماء نطاقات لمثيل خدمة معيّن.

هذه الدالة متاحة عند تفعيل OPENTHREAD_CONFIG_DNS_CLIENT_SERVICE_DISCOVERY_ENABLE.

يمكن أن يكون aConfig فارغًا. في هذه الحالة، سيتم استخدام الإعداد التلقائي (من otDnsClientGetDefaultConfig()) كإعداد لهذا الطلب. في aConfig غير فارغ، يمكن ترك بعض الحقول غير محدَّدة (القيمة صفر). يتم بعد ذلك استبدال الحقول غير المحدّدة بالقيم من الإعداد التلقائي.

التفاصيل
المعلَمات
[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 فارغ.

otDnsClientSetDefaultConfig

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

تضبط هذه الدالة إعداد طلب البحث التلقائي في برنامج نظام أسماء النطاقات.

ملاحظة:سيواصل أي طلب بحث جارٍ استخدام الإعداد من وقت تشغيله. سيتم استخدام الإعداد التلقائي الجديد لأي طلبات بحث نظام أسماء النطاقات المستقبلية. يمكن أن يكون aConfig فارغًا. في هذه الحالة، سيتم ضبط الإعدادات التلقائية على الإعدادات التلقائية من خيارات ضبط إعدادات الشحن OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_{}. يؤدّي ذلك إلى إعادة ضبط الضبط التلقائي لطلب البحث على الضبط عند بدء تسلسل استدعاء الدوال المفتوحة.

في aConfig غير فارغ، يمكن للمتصل اختيار ترك بعض الحقول في مثيل otDnsQueryConfig غير محددة (القيمة صفر). يتم استبدال الحقول غير المُحدَّدة بتعريفات خيارات ضبط الوقت الإضافي المقابلة OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_{} لتشكيل إعداد الطلب التلقائي.

عند تفعيل OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_SERVER_ADDRESS_AUTO_SET_ENABLE، يتم تلقائيًا ضبط عنوان IPv6 للخادم في الإعداد التلقائي وتحديثه من خلال عميل نظام أسماء النطاقات. ولا يتم إجراء ذلك إلا في حال عدم ضبط المستخدم أو تحديده صراحةً. يتطلب هذا السلوك تفعيل برنامج SRP ميزة التشغيل التلقائي. بعد ذلك، سيعمل عميل SRP على مراقبة بيانات شبكة سلاسل المحادثات لإدخالات نظام أسماء النطاقات/خدمة SRP لتحديد خادم SRP. يتم أيضًا تعيين عنوان خادم SRP المحدد كعنوان خادم نظام أسماء النطاقات في الإعداد الافتراضي.

التفاصيل
المعلَمات
[in] aInstance
مؤشر إلى مثيل OpenThread.
[in] aConfig
مؤشرًا إلى تهيئة طلب البحث الجديد لاستخدامها كوضع تلقائي.

otDnsGetNextTxtEntry

otError otDnsGetNextTxtEntry(
  otDnsTxtEntryIterator *aIterator,
  otDnsTxtEntry *aEntry
)

تحلّل هذه الدالة بيانات TXT من المكرر، وتتلقّى إدخال سجلّ TXT التالي (زوج مفتاح/قيمة).

يجب إعداد aIterator باستخدام otDnsInitTxtEntryIterator() قبل استدعاء هذه الدالة، كما يجب أن يظل المخزن المؤقت لبيانات TXT المستخدم لإعداد المكرر كما هو بدون تغيير. ويكون سلوك هذه الدالة غير محدد.

وإذا كان طول السلسلة الرئيسية التي تم تحليلها أصغر من أو يساوي OT_DNS_TXT_KEY_MAX_LENGTH (الحد الأقصى المُوصى به لطول المفتاح)، يتم عرض سلسلة المفاتيح في mKey في aEntry. ولكن إذا كان المفتاح أطول من ذلك، فسيتم ضبط mKey على "فارغ" وسيتم عرض سلسلة إدخال TXT المشفرة بالكامل في mValue وmValueLength.

التفاصيل
المعلَمات
[in] aIterator
مؤشر للتكرار (يجب ألا يكون فارغًا).
[out] aEntry
مؤشر إلى بنية otDnsTxtEntry لإخراج الإدخال الذي تم تحليله/قراءةه (يجب ألا يكون فارغًا).
قيم الإرجاع
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
مؤشر للمكرر للتهيئة (يجب ألا يكون فارغًا).
[in] aTxtData
مؤشر إلى التخزين المؤقت يحتوي على بيانات TXT المشفّرة.
[in] aTxtDataLength
طول aTxtData (عدد وحدات البايت)

otDnsIsNameCompactionEnabled

bool otDnsIsNameCompressionEnabled(
  void
)

تشير هذه الدالة إلى ما إذا كان وضع "ضغط اسم نظام أسماء النطاقات" مفعّلاً أم لا.

هذا الإعداد مخصّص للاختبار فقط وهو متاح عند تفعيل إعدادات OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE.

التفاصيل
طلبات الإرجاع
True إذا كان وضع "ضغط اسم نظام أسماء النطاقات" مفعّلاً، على FALSE.

otDnsServiceResponseGetHostAddress

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

تحصل هذه الدالة على عنوان IPv6 المضيف من استجابة دقة مثيل خدمة نظام أسماء النطاقات.

يجب استخدام هذه الدالة من otDnsServiceCallback فقط.

يمكن أن يتضمن الرد صفرًا أو أكثر من سجلات عنوان IPv6. يمكن استخدام aIndex وتكرار البحث في قائمة العناوين. يحصل الفهرس صفر على العنوان الأول وما إلى ذلك. عند الوصول إلى نهاية القائمة، يتم عرض OT_ERROR_NOT_FOUND.

التفاصيل
المعلَمات
[in] aResponse
مؤشر الاستجابة.
[in] aHostName
اسم المضيف للحصول على العنوان (يجب ألا يكون فارغًا).
[in] aIndex
فهرس سجل العناوين المراد استرداده.
[out] aAddress
إشارة إلى عنوان IPv6 لإخراج العنوان (يجب ألا يكون فارغًا).
[out] aTtl
إشارة إلى uint32_t لإخراج TTL للعنوان. وقد يكون فارغًا إذا لم يرغب المتصل في الحصول على مدة البقاء (TTL).
قيم الإرجاع
OT_ERROR_NONE
تمت قراءة العنوان بنجاح.
OT_ERROR_NOT_FOUND
لا يوجد سجلّ عنوان لـ aHostname في aResponse في aIndex.
OT_ERROR_PARSE
تعذَّر تحليل السجلات في aResponse.

otDnsServiceResponseGetServiceInfo

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

تحصل هذه الدالة على معلومات عن مثيل الخدمة من استجابة حل مثيل خدمة نظام أسماء النطاقات.

يجب استخدام هذه الدالة من otDnsServiceCallback فقط.

  • إذا لم يتم العثور على سجل SRV مطابق في aResponse، يتم عرض OT_ERROR_NOT_FOUND.
  • إذا تم العثور على سجلّ SRV مطابق في aResponse، يتم تحديث aServiceInfo وإرجاع OT_ERROR_NONE.
  • إذا لم يتم العثور على سجل TXT مطابق في aResponse، تم ضبط mTxtDataSize في aServiceInfo على صفر.
  • في حال عدم العثور على سجلّ 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 لإخراج معلومات مثيل الخدمة (يجب ألا يكون فارغًا).
قيم الإرجاع
OT_ERROR_NONE
تمت قراءة معلومات مثيل الخدمة. تم تحديث aServiceInfo.
OT_ERROR_NOT_FOUND
تعذر العثور على سجل SRV مطابق في 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
)

تحصل هذه الدالة على اسم مثيل الخدمة المرتبط باستجابة مثيل خدمة نظام أسماء النطاقات.

يجب استخدام هذه الدالة من otDnsServiceCallback فقط.

التفاصيل
المعلَمات
[in] aResponse
مؤشر الاستجابة.
[out] aLabelBuffer
مخزن مؤقت لمصفوفة حروف لإخراج تصنيف مثيل الخدمة (يجب ألا يكون فارغًا).
[in] aLabelBufferSize
حجم aLabelBuffer.
[out] aNameBuffer
مخزن مؤقت لمصفوفة حروف الإخراج لإخراج باقي اسم الخدمة (يمكن أن يكون فارغًا إذا لم يكن المستخدم مهتمًا بالحصول على الاسم.)
[in] aNameBufferSize
حجم aNameBuffer.
قيم الإرجاع
OT_ERROR_NONE
تمت قراءة اسم الخدمة بنجاح.
OT_ERROR_NO_BUFS
إما أن لا يتناسب التصنيف أو الاسم مع المخازن المؤقتة المحددة.

otDnsSetNameCompactionEnabled

void otDnsSetNameCompressionEnabled(
  bool aEnabled
)

وتعمل هذه الدالة على تفعيل/إيقاف وضع "ضغط اسم نظام أسماء النطاقات".

يتم تفعيل ضغط اسم نظام أسماء النطاقات بشكل تلقائي. وعند الإيقاف، يتم إلحاق أسماء نظام أسماء النطاقات (DNS) ككاملة ولا يتم ضغطها مطلقًا. ينطبق هذا على وحدات خوادم نظام أسماء النطاقات وعميل SRP في OpenThread.

هذا الإعداد مخصّص للاختبار فقط وهو متاح عند تفعيل إعدادات OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE.

تجدر الإشارة إلى أنه في حالة استخدام OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE، ينطبق هذا الوضع على جميع مثيلات OpenThread (أي أن استدعاء هذه الدالة يؤدي إلى تفعيل/إيقاف وضع الضغط في جميع مثيلات OpenThread).

التفاصيل
المعلَمات
[in] aEnabled
TRUE لتفعيل وضع "ضغط اسم نظام أسماء النطاقات"، FALSE لإيقافه.

وحدات ماكرو

OT_DNS_MAX_LABEL_SIZE

 OT_DNS_MAX_LABEL_SIZE 64

الحد الأقصى لحجم سلسلة التصنيف (مع تضمين حرف فارغ في نهاية السلسلة).

OT_DNS_MAX_NAME_SIZE

 OT_DNS_MAX_NAME_SIZE 255

الحد الأقصى لحجم سلسلة الاسم (بما في ذلك حرف فارغ في نهاية السلسلة).

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 من رمز المصدر، المتوفر على GitHub. للاطّلاع على مزيد من المعلومات أو للمساهمة في مستنداتنا، يُرجى الرجوع إلى المراجع.