.\" SPDX-License-Identifier: BSD-2-Clause .\" Copyright (c) 2006-2025 Roy Marples .\" All rights reserved .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .Dd August 14, 2026 .Dt DHCPCD-RUN-HOOKS 8 .Os .Sh "نام (NAME)" .Nm dhcpcd-run-hooks .Nd اسکریپت پیکربندی کلاینت DHCP .Sh "توضیحات (DESCRIPTION)" .Nm توسط .Xr dhcpcd 8 برای اجرای اسکریپت‌های قلاب (hook) سیستمی و تعریف‌شده توسط کاربر استفاده می‌شود. اسکریپت‌های قلاب سیستمی در مسیر .Pa /usr/lib/dhcpcd/dhcpcd-hooks قرار دارند و قلاب‌های تعریف‌شده توسط کاربر .Pa /etc/dhcpcd.enter-hook و .Pa /etc/dhcpcd.exit-hook هستند. نصب پیش‌فرض، اسکریپت‌های قلابی برای پیکربندی .Pa /etc/resolv.conf و نام میزبان (hostname) فراهم می‌کند. توزیع شما ممکن است اسکریپت‌های قلاب دیگری، مثلاً برای پیکربندی ntp یا ypbind را نیز شامل شده باشد. همچنین یک قلاب آزمایشی نیز ارائه شده است که متغیرهای dhcp پیام DISCOVER را در کنسول چاپ می‌کند. .Pp اسکریپت‌های قلاب به جای اجرا در فرآیند مستقل خود، در شل (shell) جاری بارگذاری می‌شوند. این موضوع به هر اسکریپت قلاب، مانند .Pa /etc/dhcpcd.enter-hook اجازه می‌دهد متغیرهای محیطی را سفارشی کرده یا توابع جایگزینی برای قلاب‌های بعدی در زنجیره فراهم کند. به همین دلیل، استفاده از دستورات داخلی شل مانند .Ic exit , .Ic exec یا موارد مشابه باعث خروج .Nm در همان نقطه خواهد شد. .Pp هر بار که .Nm فراخوانی می‌شود، .Ev $interface روی رابطی که .Nm dhcpcd روی آن اجرا شده تنظیم می‌گردد و .Ev $reason روی دلیل فراخوانی .Nm تنظیم می‌شود. اطلاعات DHCP که باید پیکربندی شوند در متغیرهایی که با کلمه new_ آغاز می‌شوند نگهداری می‌گردند و اطلاعات قدیمی DHCP که باید حذف شوند در متغیرهایی که با کلمه old_ شروع می‌شوند قرار دارند. .Nm dhcpcd می‌تواند فهرست کامل متغیرهایی را که می‌شناسد با استفاده از آرگومان .Fl V , \-variables نمایش دهد. .Pp در ادامه فهرستی از دلایلی که ممکن است .Nm به خاطر آن‌ها فراخوانی شود آمده است: .Bl -tag -width EXPIREXXXEXPIRE6 .It Dv PREINIT دستور dhcpcd در حال راه‌اندازی است و هرگونه مقداردهی اولیه که لازم است باید اکنون انجام شود. .It Dv CARRIER دستور dhcpcd برقراری حامل سیگنال (carrier) را تشخیص داده است. این پیام معمولاً صرفاً یک اعلان است و نیازی به اقدام خاصی ندارد. .It Dv NOCARRIER دستور dhcpcd حامل سیگنال را از دست داده است. ممکن است کابل جدا شده یا اتصال به نقطه دسترسی بی‌سیم قطع شده باشد. .It Dv NOCARRIER_ROAMING دستور dhcpcd حامل سیگنال را از دست داده اما پیکربندی رابط حفظ شده است. برای این منظور، سیستم‌عامل باید از رومینگ بی‌سیم یا پایداری IP پشتیبانی کند. .It Dv INFORM | Dv INFORM6 دستور dhcpcd سرور DHCP را از آدرس خود مطلع کرده و سایر جزئیات پیکربندی را به دست آورده است. .It Dv BOUND | Dv BOUND6 دستور dhcpcd یک اجاره (lease) جدید از سرور DHCP دریافت کرده است. .It Dv RENEW | Dv RENEW6 دستور dhcpcd اجاره خود را تمدید کرده است. .It Dv REBIND | Dv REBIND6 دستور dhcpcd به یک سرور DHCP جدید متصل (rebind) شده است. .It Dv REBOOT | Dv REBOOT6 دستور dhcpcd با موفقیت درخواست اجاره از سرور DHCP ثبت کرده است. .It Dv RELEASE | Dv RELEASE6 دستور dhcpcd اجاره را آزاد کرده است. .It Dv DELEGATED6 دستور dhcpcd یک پیشوند واگذارشده (delegated prefix) را به رابط اختصاص داده است. .It Dv IPV4LL دستور dhcpcd یک آدرس IPV4LL دریافت کرده، یا یکی از آن‌ها حذف شده است. .It Dv STATIC دستور dhcpcd با یک پیکربندی ایستا که از سرور DHCP دریافت نشده، پیکربندی شده است. .It Dv 3RDPARTY دستور dhcpcd در حال پایش رابط است تا ابزار شخص ثالثی به آن آدرس IP اختصاص دهد. .It Dv TIMEOUT | TIMEOUT6 دستور dhcpcd نتوانست با هیچ سرور DHCP ارتباط برقرار کند، اما توانست از یک اجاره قدیمی استفاده کند. .It Dv EXPIRE | EXPIRE6 اجاره یا وضعیت dhcpcd منقضی شده و موفق به دریافت اجاره جدید نشده است. .It Dv NAK دستور dhcpcd یک پیام NAK از سرور DHCP دریافت کرده است. با این مورد باید مانند EXPIRE رفتار شود. .It Dv RECONFIGURE به dhcpcd دستور داده شده است که یک رابط را مجدداً پیکربندی کند. .It Dv ROUTERADVERT دستور dhcpcd یک اعلان روتر (Router Advertisement) IPv6 دریافت کرده یا یکی از آن‌ها منقضی شده است. .It Dv STOP | Dv STOP6 اجرای dhcpcd روی رابط متوقف شده است. .It Dv STOPPED اجرای dhcpcd به طور کامل متوقف شده است. .It Dv DEPARTED رابط شبکه حذف شده است. .It Dv FAIL دستور dhcpcd نتوانست روی رابط کار کند. این حالت معمولاً زمانی رخ می‌دهد که dhcpcd از رابط خام پشتیبانی نکند؛ یعنی نمی‌تواند به عنوان کلاینت DHCP یا ZeroConf عمل نماید. پیکربندی ایستا و DHCP INFORM همچنان مجاز هستند. .It Dv TEST دستور dhcpcd یک پیشنهاد (OFFER) از سرور DHCP دریافت کرده است اما رابط را پیکربندی نخواهد کرد. این مورد عمدتاً برای آزمایش این که متغیرها به درستی برای پردازش توسط اسکریپت پر شده‌اند به کار می‌رود. .El .Sh "محیط (ENVIRONMENT)" .Nm dhcpcd تمام متغیرهای محیطی به جز .Ev $PATH را پاک خواهد کرد. سپس متغیرهای زیر همراه با متغیرهای ارائه‌شده توسط پروتکل تنظیم خواهند شد: .Bl -tag -width xnew_delegated_dhcp6_prefix .It Ev $interface نام رابط شبکه. .It Ev $protocol پروتکلی که رویداد را ایجاد کرده است. .It Ev $reason همان‌طور که در بالا توضیح داده شد. .It Ev $pid شناسه فرآیند (PID) .Nm dhcpcd . .It Ev $ifcarrier وضعیت پیوند (link) مربوط به .Ev $interface : .Dv unknown , .Dv up یا .Dv down . .It Ev $ifmetric اولویت .Ev $interface که مقدار کمتر ترجیح داده می‌شود. .It Ev $ifwireless .Dv 1 اگر .Ev $interface بی‌سیم باشد، در غیر این صورت .Dv 0 . .It Ev $ifflags پرچم‌های .Ev $interface . .It Ev $ifmtu مقدار MTU مربوط به .Ev $interface . .It Ev $ifssid شناسه SSID که .Ev interface به آن متصل است. .It Ev $interface_order فهرستی از رابط‌ها بر اساس اولویت. .It Ev $if_configured .Dv true اگر dhcpcd رابط .Ev interface را پیکربندی کرده باشد، در غیر این صورت .Dv false . .It Ev $if_up .Dv true اگر رابط .Ev interface فعال (up) باشد، در غیر این صورت .Dv false . این فراتر از IFF_UP است و ممکن است با آن برابر نباشد. .It Ev $if_down .Dv true اگر رابط .Ev interface غیرفعال (down) باشد، در غیر این صورت .Dv false . این فراتر از IFF_UP است و ممکن است با آن برابر نباشد. .It Ev $af_waiting خانواده آدرسِ (Address family) در حال انتظار، مطابق با تعریف در .Xr dhcpcd.conf 5 . .It Ev $profile نام نمایه (profile) انتخاب‌شده از .Xr dhcpcd.conf 5 . .It Ev $new_delegated_dhcp6_prefix فهرست جداشده با فاصله از آدرس‌های اختصاص‌یافته از پیشوندهای واگذارشده. .El .Sh "فایل‌ها (FILES)" هنگامی که .Nm اجرا می‌شود، ابتدا .Pa /etc/dhcpcd.enter-hook , سپس هر اسکریپتی که در .Pa /usr/lib/dhcpcd/dhcpcd-hooks یافت شود را به ترتیب الفبایی، و در نهایت .Pa /etc/dhcpcd.exit-hook را بارگذاری می‌کند. .Sh "همچنین ببینید (SEE ALSO)" .Xr dhcpcd 8 .Sh "نویسندگان (AUTHORS)" .An Roy Marples Aq Mt roy@marples.name .Sh "گزارش اشکالات (BUGS)" لطفاً آن‌ها را به .Lk https://roy.marples.name/projects/dhcpcd گزارش دهید. .Sh "ملاحظات امنیتی (SECURITY CONSIDERATIONS)" .Nm dhcpcd محتوای هر گزینه را بر اساس نوع کدگذاری آن اعتبارسنجی خواهد کرد. برای کدگذاری‌های رشته‌ای (string)، اسکی (ascii)، خام (raw) یا binhex، اعتبارسنجی آن متناسب با هدف مورد نظر بر عهده کاربر است. .Pp هنگام استفاده در یک اسکریپت شل، هر متغیر باید به درستی داخل کوتیشن قرار گیرد.