gai.conf(5) File Formats Manual gai.conf(5)

gai.conf - فایل پیکربندی getaddrinfo(3)

یک فراخوانی getaddrinfo(3) ممکن است چندین پاسخ برگرداند. بر اساس RFC 3484 این پاسخ‌ها باید طوری مرتب شوند که پاسخی با بیشترین احتمال موفقیت، نخستین مورد در فهرست باشد. این RFC الگوریتمی را برای این مرتب‌سازی فراهم می‌کند. با این حال، قواعد ایستا همیشه کافی نیستند. به همین دلیل، این RFC همچنین ایجاب می‌کند که مدیران سیستم باید بتوانند به صورت پویا این مرتب‌سازی را تغییر دهند. در پیاده‌سازی glibc، این امر با استفاده از فایل /etc/gai.conf امکان‌پذیر است.

هر سطر در فایل پیکربندی شامل یک کلیدواژه و پارامترهای آن است. فاصله‌های خالی در هر کجای سطر نادیده گرفته می‌شوند. سطرهایی که با '#' آغاز می‌شوند کامنت بوده و نادیده گرفته می‌شوند.

کلیدواژه‌هایی که در حال حاضر پشتیبانی می‌شوند عبارتند از:

این مقدار به جدول برچسب (label) مورد استفاده در مرتب‌سازی RFC 3484 افزوده می‌شود. اگر هرگونه تعریفی برای label در فایل پیکربندی وجود داشته باشد، جدول پیش‌فرض استفاده نمی‌شود. تمامی تعاریف برچسب جدول پیش‌فرض که باید حفظ شوند، باید دوباره تکرار شوند. پس از کلیدواژه، سطر باید شامل یک ماسک شبکه و یک مقدار برچسب باشد.
این کلیدواژه مشابه label است، اما در عوض مقدار مربوطه به جدول اولویت (precedence) طبق آنچه در RFC 3484 مشخص شده افزوده می‌شود. بار دیگر، وجود حتی یک سطر precedence در فایل پیکربندی باعث می‌شود که جدول پیش‌فرض استفاده نشود.
این کلیدواژه کنترل می‌کند که آیا یک فرایند بررسی کند که آیا فایل پیکربندی از زمان آخرین خواندن تغییر کرده است یا خیر. اگر مقدار آن "yes" باشد، فایل مجدداً خوانده می‌شود. این کار ممکن است در برنامه‌های چندنخی (multithreaded) مشکلاتی ایجاد کند و به طور کلی ایده خوبی نیست. مقدار پیش‌فرض "no" است.
قاعده دیگری به جدول حوزه (scope) در RFC 3484 برای نشانی IPv4 اضافه می‌کند. به‌طور پیش‌فرض، شناسه‌های حوزه‌ای که در بخش ۳٫۲ از RFC 3484 تشریح شده‌اند استفاده می‌شوند. تغییر این مقادیر پیش‌فرض تقریباً هرگز لازم نخواهد بود.

/etc/gai.conf

فایل gai.conf از glibc 2.5 به بعد پشتیبانی می‌شود.

جدول پیش‌فرض مطابق با RFC 3484 با فایل پیکربندی زیر مشخص می‌شود:


label  ::1/128       0
label  ::/0          1
label  2002::/16     2
label ::/96          3
label ::ffff:0:0/96  4
precedence  ::1/128       50
precedence  ::/0          40
precedence  2002::/16     30
precedence ::/96          20
precedence ::ffff:0:0/96  10

کتابخانه glibc شامل چند قاعده اضافی در جدول برچسب برای نشانی‌های site-local، ULA و تونل‌های Teredo است. جدول برچسب پیش‌فرض آن عبارت است از:

label ::1/128        0
label ::/0           1
label 2002::/16      2
label ::/96          3
label ::ffff:0:0/96  4
label fec0::/10      5
label fc00::/7       6
label 2001:0::/32    7

getaddrinfo(3), RFC 3484

2026-02-08 Linux man-pages 6.19