bpftool-feature(8) System Manager's Manual bpftool-feature(8)

bpftool-feature - بررسی و وارسی قابلیت‌های پشتیبانی‌شده BPF در هسته

bpftool [OPTIONS] feature COMMAND

OPTIONS := { { -j | --json } [{ -p | --pretty }] | { -d | --debug } }

COMMANDS := { probe | help }

bpftool feature probe [COMPONENT] [full] [unprivileged] [macros [prefix PREFIX]]
bpftool feature list_builtins GROUP
bpftool feature help
COMPONENT := { kernel | dev NAME }
GROUP := { prog_types | map_types | attach_types | link_types | helpers }

هسته در حال اجرا را بررسی و کاوش کرده و تعدادی از پارامترهای مرتبط با eBPF مانند در دسترس بودن فراخوانی سیستمی bpf()، وضعیت JIT، دسترسی‌پذیری انواع برنامه‌های eBPF، دسترسی‌پذیری توابع کمکی eBPF و موارد دیگر را تخلیه (dump) می‌کند.

به‌طور پیش‌فرض، bpftool کاوش‌ها را اجرا نمی‌کند برای توابع کمکی bpf_probe_write_user() و bpf_trace_printk() که هشدارهایی را در لاگ‌های هسته چاپ می‌کنند. برای فعال‌سازی آن‌ها و اجرای تمام کاوش‌ها، باید از کلمه کلیدی full استفاده شود.

اگر کلمه کلیدی macros (اما نه گزینه -j) ارسال شود، زیرمجموعه‌ای از خروجی به عنوان فهرستی از ماکروهای #define تخلیه می‌شود که برای مثال آماده گنجانده شدن در یک پرونده سرآیند C هستند. علاوه بر این، اگر از prefix برای تعریف یک PREFIX استفاده شود، رشته ارائه‌شده به عنوان پیشوند نام‌های ماکروها استفاده خواهد شد: این می‌تواند برای جلوگیری از تداخل نام ماکروها هنگام گنجاندن خروجی این دستور به عنوان پرونده سرآیند استفاده شود.

کلمه کلیدی kernel می‌تواند حذف شود. اگر هیچ هدفی برای کاوش مشخص نشده باشد، کاوش هسته رفتار پیش‌فرض است.

هنگامی که از کلمه کلیدی unprivileged استفاده می‌شود، bpftool تنها قابلیت‌های در دسترس کاربری را تخلیه می‌کند که قابلیت (capability) CAP_SYS_ADMIN را تنظیم نکرده باشد. قابلیت‌های در دسترس در آن حالت معمولاً نشان‌دهنده زیرمجموعه کوچکی از پارامترهای پشتیبانی‌شده توسط سیستم هستند. کاربران غیر ممتاز (unprivileged) حتماً باید از کلمه کلیدی unprivileged استفاده کنند: این کار برای جلوگیری از تشخیص نادرست در صورتی است که bpftool به عنوان مثال ناخواسته به عنوان غیر ریشه (non-root) اجرا شود. اگر bpftool بدون libcap کامپایل شده باشد، این کلمه کلیدی در دسترس نیست.

افزاره شبکه را برای قابلیت‌های پشتیبانی‌شده eBPF بررسی و کاوش کرده و نتایج را در کنسول تخلیه می‌کند.

کلمات کلیدی full، macros و prefix نقشی مشابه با زمان کاوش هسته دارند.

مواردی را که برای bpftool شناخته شده‌اند فهرست می‌کند. این موارد می‌توانند انواع برنامه BPF (prog_types)، انواع نقشه BPF (map_types)، انواع الصاق (attach_types)، انواع پیوند (link_types)، یا توابع کمکی BPF (helpers) باشند. این دستور سیستم را کاوش نمی‌کند، بلکه صرفاً عناصری را که bpftool از زمان کامپایل می‌شناسد (همان‌طور که از طریق libbpf برای همه انواع شیءها یا از سرآیند BPF UAPI برای فهرست توابع کمکی ارائه شده است) فهرست می‌کند. این مورد می‌تواند در اسکریپت‌ها برای پیمایش روی انواع BPF یا توابع کمکی استفاده شود.
چاپ پیام راهنمای کوتاه.

چاپ پیام راهنمای کوتاه (مشابه bpftool help).
چاپ شماره نسخه bpftool (مشابه bpftool version)، شماره نسخه libbpf در حال استفاده، و ویژگی‌های اختیاری که هنگام کامپایل bpftool گنجانده شده‌اند. ویژگی‌های اختیاری شامل پیوند با LLVM یا libbfd برای ارائه دیزاسمبلر برای برنامه‌های JIT شده (bpftool prog dump jited) و استفاده از اسکلت‌های BPF (برخی ویژگی‌ها مانند bpftool prog profile یا نمایش pidهای مرتبط با شیءهای BPF ممکن است به آن متکی باشند) می‌شود.
تولید خروجی JSON. برای دستوراتی که نمی‌توانند JSON تولید کنند، این گزینه هیچ تأثیری ندارد.
تولید خروجی JSON خوانا برای انسان. مستلزم -j است.
چاپ تمام لاگ‌های موجود، حتی اطلاعات سطح اشکال‌زدایی (debug-level). این شامل لاگ‌های libbpf و همچنین وارسی‌کننده (verifier) هنگام تلاش برای بارگذاری برنامه‌ها می‌شود.

bpf(2), bpf-helpers(7), bpftool(8), bpftool-btf(8), bpftool-cgroup(8), bpftool-gen(8), bpftool-iter(8), bpftool-link(8), bpftool-map(8), bpftool-net(8), bpftool-perf(8), bpftool-prog(8), bpftool-struct_ops(8), bpftool-token(8)