وdns.c هو عودة الدخول، عودي وغير مؤمن مكتبة محلل DNS التي تتواجد في ملف sincle .C. كما يعمل كبيرة كما محلل كعب.
API الأساسية تتمحور حول حزمة DNS الفعلية؛ كما عام كما DNS نفسه. وهذا يجعل الاستعلام والتلاعب سجلات أخرى من A، AAAA، وPTR أسهل بكثير.
iterators سجل القابل لإعادة التشغيل مع الفرز المحددة من قبل المستخدم. بالتكرار عبر MX أو سجلات SRV من أجل الدلالي (أي تفضيل والأولوية) بسيطة مثل:
dns_rr_foreach (& RR، الحزمة،. نوع = DNS_T_SRV، .sort = & dns_rr_i_order) {
على & nbsp؛ ...
}
أو بطريقة القابل لإعادة التشغيل:
التبديل (my-> دولة) {
حالة 0:
على & nbsp؛ dns_rr_i_init (& my-> rr_i)؛
على & nbsp؛ my-> rr_i.type = DNS_T_SRV.
على & nbsp؛ my-> rr_i.sort = & dns_rr_i_order.
على & nbsp؛ my-> دولة ++؛
حالة 1:
على & nbsp؛ بينما (dns_rr_grep (& ص ص، 1، وmy-> rr_i، my-> الحزمة، والخطأ)) {
على & nbsp؛ على & nbsp؛ على & nbsp؛ ...
على & nbsp؛ على & nbsp؛ على & nbsp؛ / * عودة إلى حلقة الحدث * /
على & nbsp؛ }
}
يدعم استفسارات "الذكية". عندما تمكين في محلل الأساسية، سوف الاستعلامات للNS، MX، والسجلات SRV تحاول دائما لحل RDATA اسم المضيف الكنسي في سجل A. تستضيف التي ليست في منطقة نفوذ و / أو التي لا توفر الملقم الموثوق الغراء يتم حل التلقائى وعاد في الحزمة الجواب. دعمت لكلا كعب والتجسيدات محلل متكررة. تم بناء "الذكية" القرار أيضا إلى معلومات عنوان (أي getaddrinfo) () API.
العشوائية منافذ المصدر وQIDs.
غير مؤمن، وإعادة الوافد، getaddrinfo القائم على مكرر () واجهة: dns_ai_open ()، dns_ai_nextent ()، dns_ai_close (). غويا تماما مثل getaddrinfo ()، ولكن أيضا يأخذ نوع السجل. تكرار عبر (البنية addrinfo) تعترض حتى عندما الاستعلام عن MX، NS، SRV (وآخرون) المضيف. هناك أقل الكمون القيام الاستفسارات "الذكية" بهذه الطريقة، لأن أي العودية اللازمة يمكن تأجيل (وسوف في جميع الاحتمالات لا يكون ضروريا، لأن المضيف الأول هو كاف الأرجح).
ما هو جديد في هذا الإصدار:
فيكس خلل فيها dns_srv_print () فشل لطباعة حرف NUL زائدة.
ما هو الجديد في النسخة 20100813:
إضافة socket.c إلى contrib /. لقد تم استخدام وتطوير هذه لمدة عام أو نحو ذلك ضمن المشاريع الأخرى. من الناحية النظرية انها المجمع بسيط حول API مآخذ BSD الذي يعالج عمليات البحث DNS والتفاوض SSL بشفافية وبشكل غير متزامن.
بعد إنشاء مأخذ مع so_open ()، والمتصل يحدد سائط المناسبة، على سبيل المثال so_connect () وso_starttls (). المتصل ويمكن بعد ذلك الانتظار بالنسبة لهم لإكمال (أنها سوف تعود EAGAIN إذا لزم الأمر)، أو تجاهل أكثر سهولة نتيجة والانتقال مباشرة إلى محاولة يقرأ ويكتب. سوف تعاد الأخطاء من الدول السابقة، بما في ذلك EAGAIN، على أي قراءة أو الكتابة المحاولات حتى تلك الدول كاملة.
استخدام so_pollfd () وso_events () تماما مثل نظرائهم dns.c. عودتهم، على التوالي، أعلام واصف والحدث المناسب اعتمادا على الحالة الداخلية المنفذة. تطبيق داعي للقلق فقط عن إصدار عمليات القراءة / الكتابة المنطقية.
ما هو الجديد في النسخة 20100709:
إصلاح مينغو بناء بإضافة dns_strsep الداخلية () وDNS_ETIMEDOUT.
ما هو الجديد في النسخة 20100708:
تحقق من صحة طول إرجاعها بواسطة dns_d_expand () قبل تمريرها وطول المصدر إلى dns_d_cleave () داخل dns_hints_query () إلا فإننا قد تفعل أي قراءة غير صحيحة. بفضل مجهول.
يختلط-20100708 العلامة (d493a0f7d8f1d67ef312a7ca3e142660895b32d8).
ملاحظة: نسيت أن عثرة DNS_V_REL لإطلاق سراح 20100708، ولأن واجهة احصائيات جديدة كانت في الجذع أيضا يجب أن صدم DNS_V_API. في وقت متأخر جدا الآن.
ما هو الجديد في النسخة 20100515:
حلقة على خوادم الأسماء resolv.conf: options.attempts مرات.
فرض SPF الاسم المقبول حدود الاستعلام عند تشغيل آليات MX وPTR.
إضافة dns_p_study () لمعرفة ونطاقات القسم المخزن.
تتبع نطاقات القسم في dns_p_push ().
ريفاكتور dns_p_merge () لتحسين الأداء على الحزم الكبيرة.
إضافة dns_p_make () لmalloc'ing وتهيئة حزمة جديدة.
فرض حدود الاستعلام SPF المدى. تغير نسق spf_limits البنية تحسبا لفرض قيود على MX وPTR الاستفسارات المضيف.
إصلاح خلل في مولد تعليمات VM لمؤشرات القفز من أكثر من 255.
ما هو الجديد في النسخة 20100416: دعم
وأضاف SSHFP.
يختلط-20100416 العلامة (5bd9963e693510e485a1f081f6c98a95d84debfe).
90٪ معدل مرور على اختبار جناح OpenSPF. بحاجة لمحاكاة مهلة لتمرير الاختبارات TempError. بعض الاختبارات القواعد هي قابلة للنقاش.
واضاف OpenSPF YAML جناح اختبار المعالج. يتطلب libyaml.
ما هو الجديد في الإصدار 0.5:
إصلاح الخلل فيها لم نكن نظام الاستعاضة عن ومثل، وربط مثل. طريقة لومثل، ومثل ملف. الطريقة إذا تم تعطيل العلم RECURSE.
مولد البحث قد تغيرت qname. لذلك، في dns_ai_nextent () canonicalize في qname من الجواب، وليس qname قدمت أصلا إلى محلل.
لم يتم العثور على التعليقات