.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1993, David Metcalfe .\" Copyright 2015, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH resolver 3 "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم res_ninit, res_nquery, res_nsearch, res_nquerydomain, res_nmkquery, res_nsend, res_nclose, res_init, res_query, res_search, res_querydomain, res_mkquery, res_send, dn_comp, dn_expand \- إجراءات الحل .SH المكتبة مكتبة الحلّال (\fIlibresolv\fP،\ \fI\-lresolv\fP) .SH موجز .nf \fB#include \fP \fB#include \fP \fB#include \fP .P \fBstruct __res_state;\fP \fBtypedef struct __res_state *res_state;\fP .P \fBint res_ninit(res_state \fP\fIstatep\fP\fB);\fP .P \fBvoid res_nclose(res_state \fP\fIstatep\fP\fB);\fP .P \fBint res_nquery(\fPint anslen; \fB res_state \fP\fIstatep\fP\fB,\fP \fB const char *\fP\fIdname\fP\fB,\fP \fB int \fP\fIclass\fP\fB, int \fP\fItype\fP\fB,\fP \fB unsigned char \fP\fIanswer\fP\fB[\fP\fIanslen\fP\fB], int \fP\fIanslen\fP\fB);\fP .P \fBint res_nsearch(\fPint anslen; \fB res_state \fP\fIstatep\fP\fB,\fP \fB const char *\fP\fIdname\fP\fB,\fP \fB int \fP\fIclass\fP\fB, int \fP\fItype\fP\fB,\fP \fB unsigned char \fP\fIanswer\fP\fB[\fP\fIanslen\fP\fB], int \fP\fIanslen\fP\fB);\fP .P \fBint res_nquerydomain(\fPint anslen; \fB res_state \fP\fIstatep\fP\fB,\fP \fB const char *\fP\fIname\fP\fB, const char *\fP\fIdomain\fP\fB,\fP \fB int \fP\fIclass\fP\fB, int \fP\fItype\fP\fB,\fP \fB unsigned char \fP\fIanswer\fP\fB[\fP\fIanslen\fP\fB], int \fP\fIanslen\fP\fB);\fP .P \fBint res_nmkquery(\fPint datalen, int buflen; \fB res_state \fP\fIstatep\fP\fB, int \fP\fIop\fP\fB,\fP \fB const char *\fP\fIdname\fP\fB,\fP \fB int \fP\fIclass\fP\fB, int \fP\fItype\fP\fB,\fP \fB const unsigned char \fP\fIdata\fP\fB[\fP\fIdatalen\fP\fB], int \fP\fIdatalen\fP\fB,\fP \fB const unsigned char *\fP\fInewrr\fP\fB,\fP \fB unsigned char \fP\fIbuf\fP\fB[\fP\fIbuflen\fP\fB], int \fP\fIbuflen\fP\fB);\fP .P \fBint res_nsend(\fPint msglen, int anslen; \fB res_state \fP\fIstatep\fP\fB,\fP \fB const unsigned char \fP\fImsg\fP\fB[\fP\fImsglen\fP\fB], int \fP\fImsglen\fP\fB,\fP \fB unsigned char \fP\fIanswer\fP\fB[\fP\fIanslen\fP\fB], int \fP\fIanslen\fP\fB);\fP .P \fBint dn_comp(\fPint length; \fB const char *\fP\fIexp_dn\fP\fB,\fP \fB unsigned char \fP\fIcomp_dn\fP\fB[\fP\fIlength\fP\fB], int \fP\fIlength\fP\fB,\fP \fB unsigned char **\fP\fIdnptrs\fP\fB,\fP \fB unsigned char **\fP\fIlastdnptr\fP\fB);\fP .P \fBint dn_expand(\fPint length; \fB const unsigned char *\fP\fImsg\fP\fB,\fP \fB const unsigned char *\fP\fIeomorig\fP\fB,\fP \fB const unsigned char *\fP\fIcomp_dn\fP\fB,\fP \fB char \fP\fIexp_dn\fP\fB[\fP\fIlength\fP\fB], int \fP\fIlength\fP\fB);\fP .P \fB[[deprecated]] extern struct __res_state _res;\fP .P \fB[[deprecated]] int res_init(void);\fP .P \fB[[deprecated]]\fP \fBint res_query(\fPint anslen; \fB const char *\fP\fIdname\fP\fB,\fP \fB int \fP\fIclass\fP\fB, int \fP\fItype\fP\fB,\fP \fB unsigned char \fP\fIanswer\fP\fB[\fP\fIanslen\fP\fB], int \fP\fIanslen\fP\fB);\fP .P \fB[[deprecated]]\fP \fBint res_search(\fPint anslen; \fB const char *\fP\fIdname\fP\fB,\fP \fB int \fP\fIclass\fP\fB, int \fP\fItype\fP\fB,\fP \fB unsigned char \fP\fIanswer\fP\fB[\fP\fIanslen\fP\fB], int \fP\fIanslen\fP\fB);\fP .P \fB[[deprecated]]\fP \fBint res_querydomain(\fPint anslen; \fB const char *\fP\fIname\fP\fB, const char *\fP\fIdomain\fP\fB,\fP \fB int \fP\fIclass\fP\fB, int \fP\fItype\fP\fB,\fP \fB unsigned char \fP\fIanswer\fP\fB[\fP\fIanslen\fP\fB], int \fP\fIanslen\fP\fB);\fP .P \fB[[deprecated]]\fP \fBint res_mkquery(\fPint datalen, int buflen; \fB int \fP\fIop\fP\fB,\fP \fB const char *\fP\fIdname\fP\fB,\fP \fB int \fP\fIclass\fP\fB, int \fP\fItype\fP\fB,\fP \fB const unsigned char \fP\fIdata\fP\fB[\fP\fIdatalen\fP\fB], int \fP\fIdatalen\fP\fB,\fP \fB const unsigned char *\fP\fInewrr\fP\fB,\fP \fB unsigned char \fP\fIbuf\fP\fB[\fP\fIbuflen\fP\fB], int \fP\fIbuflen\fP\fB);\fP .P \fB[[deprecated]]\fP \fBint res_send(\fPint msglen, int anslen; \fB const unsigned char \fP\fImsg\fP\fB[\fP\fImsglen\fP\fB], int \fP\fImsglen\fP\fB,\fP \fB unsigned char \fP\fIanswer\fP\fB[\fP\fIanslen\fP\fB], int \fP\fIanslen\fP\fB);\fP .fi .SH الوصف \fBملاحظة:\fP هذه الصفحة غير مكتملة (دوال الحل المتنوعة المقدمة من glibc غير موصوفة) وربما قديمة. .P الدوال الموصوفة أدناه تُجري استعلامات وتُفسر الردود من خوادم أسماء النطاقات على الإنترنت. .P تتكون واجهة البرمجة من مجموعة دوال أكثر حداثة وقابلة لإعادة الدخول ومجموعة أقدم من الدوال غير القابلة لإعادة الدخول والتي تم استبدالها. تستخدم واجهات الحل التقليدية مثل \fBres_init\fP() و \fBres_query\fP() بعض الحالة الثابتة (العامة) المخزنة في بنية \fI_res\fP، مما يجعل هذه الدوال غير آمنة للخيوط. قدم BIND 8.2 مجموعة من الواجهات الجديدة \fBres_ninit\fP() و \fBres_nquery\fP() وهكذا، والتي تأخذ \fIres_state\fP كوسيطها الأول، لذا يمكنك استخدام حالة حل خاصة بكل خيط. .P تقرأ الدالتان \fBres_ninit\fP() و \fBres_init\fP() ملفات الإعداد (انظر \fBresolv.conf\fP(5)) للحصول على اسم النطاق المبدئي وعنوان (عناوين) خادم الأسماء. إذا لم يُعطَ أي خادم، يُحاول المضيف المحلي. إذا لم يُعطَ أي نطاق، يُستخدم النطاق المرتبط بالمضيف المحلي. يمكن تجاوزه باستخدام متغير البيئة \fBLOCALDOMAIN\fP. تُنفذ \fBres_ninit\fP() أو \fBres_init\fP() عادةً بواسطة أول استدعاء لإحدى الدوال الأخرى. كل استدعاء لـ \fBres_ninit\fP() يتطلب استدعاءً مقابلًا لـ \fBres_nclose\fP() لتحرير الذاكرة المخصصة بواسطة \fBres_ninit\fP() والاستدعاءات اللاحقة لـ \fBres_nquery\fP(). .P تستعلم الدالتان \fBres_nquery\fP() و \fBres_query\fP() خادم الأسماء عن اسم النطاق المؤهل بالكامل \fIname\fP من \fItype\fP و \fIclass\fP المحددين. يُترك الرد في المخزن المؤقت \fIanswer\fP بطول \fIanslen\fP المقدم من المستدعي. .P تُجري الدالتان \fBres_nsearch\fP() و \fBres_search\fP() استعلامًا وتنتظران الرد مثل \fBres_nquery\fP() و \fBres_query\fP()، ولكن بالإضافة إلى ذلك تنفذان القواعد المبدئية وقواعد البحث التي يتحكم بها \fBRES_DEFNAMES\fP و \fBRES_DNSRCH\fP (انظر وصف خيارات \fI_res\fP أدناه). .P تُجري الدالتان \fBres_nquerydomain\fP() و \fBres_querydomain\fP() استعلامًا باستخدام \fBres_nquery\fP()/\fBres_query\fP() على تسلسل \fIname\fP و \fIdomain\fP. .P الدوال التالية هي إجراءات منخفضة المستوى تُستخدم بواسطة \fBres_nquery\fP()/\fBres_query\fP(). .P تبني الدالتان \fBres_nmkquery\fP() و \fBres_mkquery\fP() رسالة استعلام في \fIbuf\fP بطول \fIbuflen\fP لاسم النطاق \fIdname\fP. نوع الاستعلام \fIop\fP هو أحد التالي (عادةً \fBQUERY\fP): .TP \fBQUERY\fP استعلام قياسي. .TP \fBIQUERY\fP .\" commit e4e794841e3140875f2aa86b90e2ada3d61e1244 استعلام عكسي. أُزيل هذا الخيار في glibc 2.26، لأنه لم يكن مدعومًا من خوادم DNS لفترة طويلة جدًا. .TP \fBNS_NOTIFY_OP\fP إخطار الثانوي بتغيير SOA (بداية السلطة). .P \fInewrr\fP غير مستخدم حاليًا. .P ترسل الدالتان \fBres_nsend\fP() و \fBres_send\fP() استعلامًا منسقًا مسبقًا مُعطى في \fImsg\fP بطول \fImsglen\fP وتعيدان الرد في \fIanswer\fP الذي طوله \fIanslen\fP. ستستدعيان \fBres_ninit\fP()/\fBres_init\fP() إذا لم تكن قد استُدعيت بالفعل. .P تضغط الدالة \fBdn_comp\fP() اسم النطاق \fIexp_dn\fP وتخزنه في المخزن المؤقت \fIcomp_dn\fP بطول \fIlength\fP. يستخدم الضغط مصفوفة من المؤشرات \fIdnptrs\fP إلى الأسماء المضغوطة سابقًا في الرسالة الحالية. يشير المؤشر الأول إلى بداية الرسالة وتنتهي القائمة بـ NULL. يُحدد حد المصفوفة بواسطة \fIlastdnptr\fP. إذا كان \fIdnptr\fP هو NULL، لا تُضغط أسماء النطاقات. إذا كان \fIlastdnptr\fP هو NULL، لا تُحدث قائمة التسميات. .P توسع الدالة \fBdn_expand\fP() اسم النطاق المضغوط \fIcomp_dn\fP إلى اسم نطاق كامل، يُوضع في المخزن المؤقت \fIexp_dn\fP بحجم \fIlength\fP. الاسم المضغوط موجود في رسالة استعلام أو رد، ويشير \fImsg\fP إلى بداية الرسالة. .P تستخدم إجراءات الحل معلومات الإعداد والحالة الموجودة في بنية \fI__res_state\fP (إما مُمررة كوسيط \fIstatep\fP، أو في المتغير العام \fI_res\fP، في حالة الدوال الأقدم غير القابلة لإعادة الدخول). الحقل الوحيد من هذه البنية الذي يُتعامل معه عادةً من قبل المستخدم هو حقل \fIoptions\fP. يمكن أن يحتوي هذا الحقل على "أو" أحادي البت للخيارات التالية: .TP \fBRES_INIT\fP صحيح إذا استُدعيت \fBres_ninit\fP() أو \fBres_init\fP(). .TP \fBRES_DEBUG\fP .\" See resolv/README. .\" Support for RES_DEBUG was made conditional in glibc 2.2. اطبع رسائل التصحيح. هذا الخيار متاح فقط إذا بُني glibc مع تمكين التصحيح، وهو ليس المبدئي. .TP \fBRES_AAONLY\fP (غير مطبق؛ مهمَل في glibc 2.25) اقبل الإجابات الموثوقة فقط. تواصل \fBres_send\fP() حتى تجد إجابة موثوقة أو تُرجع خطأ. كان هذا الخيار موجودًا لكنه غير مطبق حتى glibc 2.24؛ منذ glibc 2.25، هو مهمَل، واستخدامه يُنتج تحذيرًا. .TP \fBRES_USEVC\fP استخدم اتصالات TCP للاستعلامات بدلاً من رزم بيانات UDP. .TP \fBRES_PRIMARY\fP (غير مطبق؛ مهمَل في glibc 2.25) استعلم من خادم اسم النطاق الرئيسي فقط. كان هذا الخيار موجودًا لكنه غير مطبق حتى glibc 2.24؛ منذ glibc 2.25، هو مهمَل، واستخدامه يُنتج تحذيرًا. .TP \fBRES_IGNTC\fP تجاهل أخطاء الاقتطاع. لا تُعد المحاولة باستخدام TCP. .TP \fBRES_RECURSE\fP اضبط بت الاستدعاء الذاتي المطلوب في الاستعلامات. يُنفذ الاستدعاء الذاتي بواسطة خادم اسم النطاق، وليس بواسطة \fBres_send\fP(). [مُفعّل مبدئيًا]. .TP \fBRES_DEFNAMES\fP إذا ضُبط، ستُلحق \fBres_search\fP() اسم النطاق المبدئي بأسماء المكونات المفردة\[em]أي تلك التي لا تحتوي على نقطة. [مُفعّل مبدئيًا]. .TP \fBRES_STAYOPEN\fP يُستخدم مع \fBRES_USEVC\fP لإبقاء اتصال TCP مفتوحًا بين الاستعلامات. .TP \fBRES_DNSRCH\fP إذا ضُبط، ستبحث \fBres_search\fP() عن أسماء المضيفين في النطاق الحالي وفي النطاقات الأم. يُستخدم هذا الخيار بواسطة \fBgethostbyname\fP(3). [مُفعّل مبدئيًا]. .TP \fBRES_INSECURE1\fP قبول استجابة من خادم خاطئ. يمكن استخدام هذا لكشف المخاطر الأمنية المحتملة، لكن تحتاج إلى ترجمة glibc مع تفعيل التصحيح واستخدام خيار \fBRES_DEBUG\fP (لأغراض التصحيح فقط). .TP \fBRES_INSECURE2\fP قبول استجابة تحتوي على استعلام خاطئ. يمكن استخدام هذا لكشف المخاطر الأمنية المحتملة، لكن تحتاج إلى ترجمة glibc مع تفعيل التصحيح واستخدام خيار \fBRES_DEBUG\fP (لأغراض التصحيح فقط). .TP \fBRES_NOALIASES\fP تعطيل استخدام متغير البيئة \fBHOSTALIASES\fP. .TP \fBRES_USE_INET6\fP محاولة استعلام AAAA قبل استعلام A داخل دالة \fBgethostbyname\fP(3)، ورسم استجابات IPv4 في "شكل نفق" IPv6 إذا لم تُعثر على سجلات AAAA لكن مجموعة سجلات A موجودة. منذ glibc 2.25، هذا الخيار مهمل، واستخدامه يولّد تحذيرًا؛ يجب على التطبيقات استخدام \fBgetaddrinfo\fP(3) بدلاً من \fBgethostbyname\fP(3). .TP \fBRES_ROTATE\fP يسبب اختيارًا دائريًا لخوادم الأسماء من بين تلك المدرجة. هذا له تأثير توزيع حمل الاستعلام بين جميع الخوادم المدرجة، بدلاً من أن يحاول جميع العملاء الخادم الأول المدرج أولاً في كل مرة. .TP \fBRES_NOCHECKNAME\fP (غير مطبق؛ مهمل في glibc 2.25) تعطيل الفحص الحديث لـ BIND لأسماء المضيفات الواردة وأسماء البريد من الأحرف غير الصالحة مثل الشرطة السفلية (_)، أو غير ASCII، أو أحرف التحكم. هذا الخيار كان موجودًا حتى glibc 2.24؛ منذ glibc 2.25، هو مهمل، واستخدامه يولّد تحذيرًا. .TP \fBRES_KEEPTSIG\fP (غير مطبق؛ مهمل في glibc 2.25) لا تُزل سجلات TSIG. هذا الخيار كان موجودًا لكن غير مطبق حتى glibc 2.24؛ منذ glibc 2.25، هو مهمل، واستخدامه يولّد تحذيرًا. .TP \fBRES_BLAST\fP (غير مطبق؛ مهمل في glibc 2.25) إرسال كل استعلام بشكل متزامن ومتكرر إلى جميع الخوادم. هذا الخيار كان موجودًا لكن غير مطبق حتى glibc 2.24؛ منذ glibc 2.25، هو مهمل، واستخدامه يولّد تحذيرًا. .TP \fBRES_USEBSTRING\fP (glibc 2.3.4 إلى glibc 2.24) إجراء عمليات بحث عكسية لـ IPv6 باستخدام تنسيق التسمية الثنائية الموصوف في RFC 2673؛ إذا لم يُضبط هذا الخيار (وهو المبدئي)، يُستخدم تنسيق nibble. أُزيل هذا الخيار في glibc 2.25، لأنه اعتمد على امتداد DNS غير متوافق مع الإصدارات السابقة ولم يُنشر أبدًا على الإنترنت. .TP \fBRES_NOIP6DOTINT\fP (glibc 2.24 وما قبله) استخدام منطقة \fIip6.arpa\fP في البحث العكسي لـ IPv6 بدلاً من \fIip6.int\fP، الذي هو مهمل منذ glibc 2.3.4. هذا الخيار موجود حتى glibc 2.24 بما في ذلك، حيث هو مفعّل مبدئيًا. في glibc 2.25، أُزيل هذا الخيار. .TP \fBRES_USE_EDNS0\fP (منذ glibc 2.6) يفعّل دعم امتدادات DNS (EDNS0) الموصوفة في RFC 2671. .TP \fBRES_SNGLKUP\fP (منذ glibc 2.10) مبدئيًا، يُجري glibc عمليات بحث IPv4 و IPv6 بالتوازي منذ glibc 2.9. بعض خوادم DNS للأجهزة لا تستطيع معالجة هذه الاستعلامات بشكل صحيح وتُسبب انتهاء مهلة الطلبات. هذا الخيار يُعطّل السلوك ويجعل glibc يُنفّذ طلبات IPv6 و IPv4 بالتسلسل (على حساب بعض التباطؤ في عملية الحل). .TP \fBRES_SNGLKUPREOP\fP عند تفعيل خيار \fBRES_SNGLKUP\fP، يُفتح مقبس جديد لكل طلب. .TP \fBRES_USE_DNSSEC\fP استخدم DNSSEC مع بت OK في سجل OPT. هذا الخيار يستلزم \fBRES_USE_EDNS0\fP. .TP \fBRES_NOTLDQUERY\fP لا تبحث عن اسم غير مؤهل كنطاق أعلى مستوى (TLD). .TP \fBRES_DEFAULT\fP .\" خيار مبدئي يستلزم: \fBRES_RECURSE\fP و \fBRES_DEFNAMES\fP و \fBRES_DNSRCH\fP و \fBRES_NOIP6DOTINT\fP. .SH "قيمة الإرجاع" الدالتان \fBres_ninit\fP() و \fBres_init\fP() تُرجعان 0 عند النجاح، أو \-1 إذا حدث خطأ. .P الدوال \fBres_nquery\fP() و \fBres_query\fP() و \fBres_nsearch\fP() و \fBres_search\fP() و \fBres_nquerydomain\fP() و \fBres_querydomain\fP() و \fBres_nmkquery\fP() و \fBres_mkquery\fP() و \fBres_nsend\fP() و \fBres_send\fP() تُرجع طول الاستجابة، أو \-1 إذا حدث خطأ. .P الدالتان \fBdn_comp\fP() و \fBdn_expand\fP() تُرجعان طول الاسم المضغوط، أو \-1 إذا حدث خطأ. .P في حالة إرجاع خطأ من \fBres_nquery\fP() أو \fBres_query\fP() أو \fBres_nsearch\fP() أو \fBres_search\fP() أو \fBres_nquerydomain\fP() أو \fBres_querydomain\fP()، يمكن الرجوع إلى المتغير العام \fIh_errno\fP (انظر \fBgethostbyname\fP(3)) لتحديد الخطأ. .SH الملفات .TP \fI/etc/resolv.conf\fP ملف تضبيط الحلّال (resolver) .TP \fI/etc/host.conf\fP ملف تضبيط الحلّال (resolver) .SH السمات للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. الواجهة السمة القيمة T{ .na .nh \fBres_ninit\fP(), \fBres_nclose\fP(), \fBres_nquery\fP(), \fBres_nsearch\fP(), \fBres_nquerydomain\fP(), \fBres_nsend\fP() T} سلامة الخيوط المنطقة (locale) آمنة لتعدد المسالك (MT\-Safe) T{ .na .nh \fBres_nmkquery\fP(), \fBdn_comp\fP(), \fBdn_expand\fP() T} سلامة الخيوط MT\-Safe .TE .SH المعايير لا شيء. .SH التاريخ 4.3BSD. .SH "انظر أيضًا" \fBgethostbyname\fP(3) و \fBresolv.conf\fP(5) و \fBresolver\fP(5) و \fBhostname\fP(7) و \fBnamed\fP(8) .P ملف المصدر لمكتبة C لجنو هو \fIresolv/README\fP. .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .