summaryrefslogtreecommitdiffstats
path: root/templates/man7/bpf-helpers.7.pot
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
commitfc22b3d6507c6745911b9dfcc68f1e665ae13dbc (patch)
treece1e3bce06471410239a6f41282e328770aa404a /templates/man7/bpf-helpers.7.pot
parentInitial commit. (diff)
downloadmanpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.tar.xz
manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.zip
Adding upstream version 4.22.0.upstream/4.22.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'templates/man7/bpf-helpers.7.pot')
-rw-r--r--templates/man7/bpf-helpers.7.pot8589
1 files changed, 8589 insertions, 0 deletions
diff --git a/templates/man7/bpf-helpers.7.pot b/templates/man7/bpf-helpers.7.pot
new file mode 100644
index 00000000..3bdcc79b
--- /dev/null
+++ b/templates/man7/bpf-helpers.7.pot
@@ -0,0 +1,8589 @@
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2024-02-15 17:55+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: TH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "BPF-HELPERS"
+msgstr ""
+
+#. type: TH
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+#, no-wrap
+msgid "2023-04-11"
+msgstr ""
+
+#. type: TH
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+#, no-wrap
+msgid "Linux v6.2"
+msgstr ""
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "NAME"
+msgstr ""
+
+#. Copyright (C) All BPF authors and contributors from 2014 to present.
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "BPF-HELPERS - list of eBPF helper functions"
+msgstr ""
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"The extended Berkeley Packet Filter (eBPF) subsystem consists in programs "
+"written in a pseudo-assembly language, then attached to one of the several "
+"kernel hooks and run in reaction of specific events. This framework differs "
+"from the older, \"classic\" BPF (or \"cBPF\") in several aspects, one of "
+"them being the ability to call special functions (or \"helpers\") from "
+"within a program. These functions are restricted to a white-list of helpers "
+"defined in the kernel."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"These helpers are used by eBPF programs to interact with the system, or with "
+"the context in which they work. For instance, they can be used to print "
+"debugging messages, to get the time since the system was booted, to interact "
+"with eBPF maps, or to manipulate network packets. Since there are several "
+"eBPF program types, and that they do not run in the same context, each "
+"program type can only call a subset of those helpers."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Due to eBPF conventions, a helper can not have more than five arguments."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Internally, eBPF programs call directly into the compiled helper functions "
+"without requiring any foreign-function interface. As a result, calling "
+"helpers introduces no overhead, thus offering excellent performance."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This document is an attempt to list and document the helpers available to "
+"eBPF developers. They are sorted by chronological order (the oldest helpers "
+"in the kernel at the top)."
+msgstr ""
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "HELPERS"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<void *bpf_map_lookup_elem(struct bpf_map *>I<map>B<, const void *>I<key>B<)>"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<Description>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Perform a lookup in I<map> for an entry associated to I<key>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<Return>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Map value associated to I<key>, or B<NULL> if no entry was found."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_map_update_elem(struct bpf_map *>I<map>B<, const void *>I<key>B<, const void *>I<value>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Add or update the value of the entry associated to I<key> in I<map> with "
+"I<value>\\&. I<flags> is one of:"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<BPF_NOEXIST>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "The entry for I<key> must not exist in the map."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<BPF_EXIST>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "The entry for I<key> must already exist in the map."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<BPF_ANY>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "No condition on the existence of the entry for I<key>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Flag value B<BPF_NOEXIST> cannot be used for maps of types "
+"B<BPF_MAP_TYPE_ARRAY> or B<BPF_MAP_TYPE_PERCPU_ARRAY> (all elements always "
+"exist), the helper would return an error."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "0 on success, or a negative error in case of failure."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_map_delete_elem(struct bpf_map *>I<map>B<, const void *>I<key>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Delete entry with I<key> from I<map>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_probe_read(void *>I<dst>B<, u32 >I<size>B<, const void *>I<unsafe_ptr>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"For tracing programs, safely attempt to read I<size> bytes from kernel space "
+"address I<unsafe_ptr> and store the data in I<dst>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Generally, use B<bpf_probe_read_user>() or B<bpf_probe_read_kernel>() "
+"instead."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_ktime_get_ns(void)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Return the time elapsed since system boot, in nanoseconds. Does not include "
+"time the system was suspended. See: B<clock_gettime>(B<CLOCK_MONOTONIC>)"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Current I<ktime>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_trace_printk(const char *>I<fmt>B<, u32 >I<fmt_size>B<, ...)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"This helper is a \"printk()-like\" facility for debugging. It prints a "
+"message defined by format I<fmt> (of size I<fmt_size>) to file I</sys/"
+"kernel/debug/tracing/trace> from DebugFS, if available. It can take up to "
+"three additional B<u64> arguments (as an eBPF helpers, the total number of "
+"arguments is limited to five)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Each time the helper is called, it appends a line to the trace. Lines are "
+"discarded while I</sys/kernel/debug/tracing/trace> is open, use I</sys/"
+"kernel/debug/tracing/trace_pipe> to avoid this. The format of the trace is "
+"customizable, and the exact output one will get depends on the options set "
+"in I</sys/kernel/debug/tracing/trace_options> (see also the I<README> file "
+"under the same directory). However, it usually defaults to something like:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"^\".ft C$\n"
+"telnet-470 [001] .N.. 419421.045894: 0x00000001: E<lt>fmtE<gt>\n"
+"^\".ft P$\n"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "In the above:"
+msgstr ""
+
+#. type: IP
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+#, no-wrap
+msgid "\\(bu"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<telnet> is the name of the current task."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<470> is the PID of the current task."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<001> is the CPU number on which the task is running."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"In B<\\&.N..>, each character refers to a set of options (whether irqs are "
+"enabled, scheduling options, whether hard/softirqs are running, level of "
+"preempt_disabled respectively). B<N> means that B<TIF_NEED_RESCHED> and "
+"B<PREEMPT_NEED_RESCHED> are set."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<419421.045894> is a timestamp."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<0x00000001> is a fake value used by BPF for the instruction pointer "
+"register."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid "B<E<lt>fmtE<gt>> is the message formatted with I<fmt>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The conversion specifiers supported by I<fmt> are similar, but more limited "
+"than for printk(). They are B<%d>, B<%i>, B<%u>, B<%x>, B<%ld>, B<%li>, "
+"B<%lu>, B<%lx>, B<%lld>, B<%lli>, B<%llu>, B<%llx>, B<%p>, B<%s>\\&. No "
+"modifier (size of field, padding with zeroes, etc.) is available, and the "
+"helper will return B<-EINVAL> (but print nothing) if it encounters an "
+"unknown specifier."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"Also, note that B<bpf_trace_printk>() is slow, and should only be used for "
+"debugging purposes. For this reason, a notice block (spanning several lines) "
+"is printed to kernel logs and states that the helper should not be used "
+"\"for production use\" the first time this helper is used (or more "
+"precisely, when B<trace_printk>() buffers are allocated). For passing values "
+"to user space, perf events should be preferred."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The number of bytes written to the buffer, or a negative error in case of "
+"failure."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u32 bpf_get_prandom_u32(void)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Get a pseudo-random number."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"From a security point of view, this helper uses its own pseudo-random "
+"internal state, and cannot be used to infer the seed of other random "
+"functions in the kernel. However, it is essential to note that the generator "
+"used by the helper is not cryptographically secure."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "A random 32-bit unsigned value."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u32 bpf_get_smp_processor_id(void)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Get the SMP (symmetric multiprocessing) processor id. Note that all programs "
+"run with migration disabled, which means that the SMP processor id is stable "
+"during all the execution of the program."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "The SMP id of the processor running the program."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_skb_store_bytes(struct sk_buff *>I<skb>B<, u32 >I<offset>B<, const void *>I<from>B<, u32 >I<len>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Store I<len> bytes from address I<from> into the packet associated to "
+"I<skb>, at I<offset>\\&. I<flags> are a combination of "
+"B<BPF_F_RECOMPUTE_CSUM> (automatically recompute the checksum for the packet "
+"after storing the bytes) and B<BPF_F_INVALIDATE_HASH> (set I<skb>B<-"
+"E<gt>hash>, I<skb>B<-E<gt>swhash> and I<skb>B<-E<gt>l4hash> to 0)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"A call to this helper is susceptible to change the underlying packet buffer. "
+"Therefore, at load time, all checks on pointers previously done by the "
+"verifier are invalidated and must be performed again, if the helper is used "
+"in combination with direct packet access."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_l3_csum_replace(struct sk_buff *>I<skb>B<, u32 >I<offset>B<, u64 >I<from>B<, u64 >I<to>B<, u64 >I<size>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Recompute the layer 3 (e.g. IP) checksum for the packet associated to "
+"I<skb>\\&. Computation is incremental, so the helper must know the former "
+"value of the header field that was modified (I<from>), the new value of this "
+"field (I<to>), and the number of bytes (2 or 4) for this field, stored in "
+"I<size>\\&. Alternatively, it is possible to store the difference between "
+"the previous and the new values of the header field in I<to>, by setting "
+"I<from> and I<size> to 0. For both methods, I<offset> indicates the location "
+"of the IP checksum within the packet."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper works in combination with B<bpf_csum_diff>(), which does not "
+"update the checksum in-place, but offers more flexibility and can handle "
+"sizes larger than 2 or 4 for the checksum to update."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_l4_csum_replace(struct sk_buff *>I<skb>B<, u32 >I<offset>B<, u64 >I<from>B<, u64 >I<to>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Recompute the layer 4 (e.g. TCP, UDP or ICMP) checksum for the packet "
+"associated to I<skb>\\&. Computation is incremental, so the helper must know "
+"the former value of the header field that was modified (I<from>), the new "
+"value of this field (I<to>), and the number of bytes (2 or 4) for this "
+"field, stored on the lowest four bits of I<flags>\\&. Alternatively, it is "
+"possible to store the difference between the previous and the new values of "
+"the header field in I<to>, by setting I<from> and the four lowest bits of "
+"I<flags> to 0. For both methods, I<offset> indicates the location of the IP "
+"checksum within the packet. In addition to the size of the field, I<flags> "
+"can be added (bitwise OR) actual flags. With B<BPF_F_MARK_MANGLED_0>, a null "
+"checksum is left untouched (unless B<BPF_F_MARK_ENFORCE> is added as well), "
+"and for updates resulting in a null checksum the value is set to "
+"B<CSUM_MANGLED_0> instead. Flag B<BPF_F_PSEUDO_HDR> indicates the checksum "
+"is to be computed against a pseudo-header."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_tail_call(void *>I<ctx>B<, struct bpf_map *>I<prog_array_map>B<, u32 >I<index>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"This special helper is used to trigger a \"tail call\", or in other words, "
+"to jump into another eBPF program. The same stack frame is used (but values "
+"on stack and in registers for the caller are not accessible to the callee). "
+"This mechanism allows for program chaining, either for raising the maximum "
+"number of available eBPF instructions, or to execute given programs in "
+"conditional blocks. For security reasons, there is an upper limit to the "
+"number of successive tail calls that can be performed."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Upon call of this helper, the program attempts to jump into a program "
+"referenced at index I<index> in I<prog_array_map>, a special map of type "
+"B<BPF_MAP_TYPE_PROG_ARRAY>, and passes I<ctx>, a pointer to the context."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"If the call succeeds, the kernel immediately runs the first instruction of "
+"the new program. This is not a function call, and it never returns to the "
+"previous program. If the call fails, then the helper has no effect, and the "
+"caller continues to run its subsequent instructions. A call can fail if the "
+"destination program for the jump does not exist (i.e. I<index> is superior "
+"to the number of entries in I<prog_array_map>), or if the maximum number of "
+"tail calls has been reached for this chain of programs. This limit is "
+"defined in the kernel by the macro B<MAX_TAIL_CALL_CNT> (not accessible to "
+"user space), which is currently set to 33."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_clone_redirect(struct sk_buff *>I<skb>B<, u32 >I<ifindex>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Clone and redirect the packet associated to I<skb> to another net device of "
+"index I<ifindex>\\&. Both ingress and egress interfaces can be used for "
+"redirection. The B<BPF_F_INGRESS> value in I<flags> is used to make the "
+"distinction (ingress path is selected if the flag is present, egress path "
+"otherwise). This is the only flag supported for now."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"In comparison with B<bpf_redirect>() helper, B<bpf_clone_redirect>() has the "
+"associated cost of duplicating the packet buffer, but this can be executed "
+"out of the eBPF program. Conversely, B<bpf_redirect>() is more efficient, "
+"but it is handled through an action code where the redirection happens only "
+"after the eBPF program has returned."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_get_current_pid_tgid(void)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Get the current pid and tgid."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"A 64-bit integer containing the current tgid and pid, and created as such: "
+"I<current_task>B<-E<gt>tgid E<lt>E<lt> 32 |> I<current_task>B<-E<gt>pid>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_get_current_uid_gid(void)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Get the current uid and gid."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"A 64-bit integer containing the current GID and UID, and created as such: "
+"I<current_gid> B<E<lt>E<lt> 32 |> I<current_uid>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_get_current_comm(void *>I<buf>B<, u32 >I<size_of_buf>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Copy the B<comm> attribute of the current task into I<buf> of "
+"I<size_of_buf>\\&. The B<comm> attribute contains the name of the executable "
+"(excluding the path) for the current task. The I<size_of_buf> must be "
+"strictly positive. On success, the helper makes sure that the I<buf> is NUL-"
+"terminated. On failure, it is filled with zeroes."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u32 bpf_get_cgroup_classid(struct sk_buff *>I<skb>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Retrieve the classid for the current task, i.e. for the net_cls cgroup to "
+"which I<skb> belongs."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "This helper can be used on TC egress path, but not on ingress."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The net_cls cgroup provides an interface to tag network packets based on a "
+"user-provided identifier for all traffic coming from the tasks belonging to "
+"the related cgroup. See also the related kernel documentation, available "
+"from the Linux sources in file I<Documentation/admin-guide/cgroup-v1/net_cls."
+"rst>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The Linux kernel has two versions for cgroups: there are cgroups v1 and "
+"cgroups v2. Both are available to users, who can use a mixture of them, but "
+"note that the net_cls cgroup is for cgroup v1 only. This makes it "
+"incompatible with BPF programs run on cgroups, which is a cgroup-v2-only "
+"feature (a socket can only hold data for one version of cgroups at a time)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"This helper is only available is the kernel was compiled with the "
+"B<CONFIG_CGROUP_NET_CLASSID> configuration option set to \"B<y>\" or to "
+"\"B<m>\"."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "The classid, or 0 for the default unconfigured classid."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_skb_vlan_push(struct sk_buff *>I<skb>B<, __be16 >I<vlan_proto>B<, u16 >I<vlan_tci>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Push a I<vlan_tci> (VLAN tag control information) of protocol I<vlan_proto> "
+"to the packet associated to I<skb>, then update the checksum. Note that if "
+"I<vlan_proto> is different from B<ETH_P_8021Q> and B<ETH_P_8021AD>, it is "
+"considered to be B<ETH_P_8021Q>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_skb_vlan_pop(struct sk_buff *>I<skb>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Pop a VLAN header from the packet associated to I<skb>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_skb_get_tunnel_key(struct sk_buff *>I<skb>B<, struct bpf_tunnel_key *>I<key>B<, u32 >I<size>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Get tunnel metadata. This helper takes a pointer I<key> to an empty B<struct "
+"bpf_tunnel_key> of B<size>, that will be filled with tunnel metadata for the "
+"packet associated to I<skb>\\&. The I<flags> can be set to "
+"B<BPF_F_TUNINFO_IPV6>, which indicates that the tunnel is based on IPv6 "
+"protocol instead of IPv4."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"The B<struct bpf_tunnel_key> is an object that generalizes the principal "
+"parameters used by various tunneling protocols into a single struct. This "
+"way, it can be used to easily make a decision based on the contents of the "
+"encapsulation header, \"summarized\" in this struct. In particular, it holds "
+"the IP address of the remote end (IPv4 or IPv6, depending on the case) in "
+"I<key>B<-E<gt>remote_ipv4> or I<key>B<-E<gt>remote_ipv6>\\&. Also, this "
+"struct exposes the I<key>B<-E<gt>tunnel_id>, which is generally mapped to a "
+"VNI (Virtual Network Identifier), making it programmable together with the "
+"B<bpf_skb_set_tunnel_key>() helper."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"Let\\(aqs imagine that the following code is part of a program attached to "
+"the TC ingress interface, on one end of a GRE tunnel, and is supposed to "
+"filter out all messages coming from remote ends with IPv4 address other than "
+"10.0.0.1:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"^\".ft C$\n"
+"int ret;\n"
+"struct bpf_tunnel_key key = {};\n"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"ret = bpf_skb_get_tunnel_key(skb, &key, sizeof(key), 0);\n"
+"if (ret E<lt> 0)\n"
+" return TC_ACT_SHOT; // drop packet\n"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"if (key.remote_ipv4 != 0x0a000001)\n"
+" return TC_ACT_SHOT; // drop packet\n"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"return TC_ACT_OK; // accept packet\n"
+"^\".ft P$\n"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"This interface can also be used with all encapsulation devices that can "
+"operate in \"collect metadata\" mode: instead of having one network device "
+"per specific configuration, the \"collect metadata\" mode only requires a "
+"single device where the configuration can be extracted from this helper."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This can be used together with various tunnels such as VXLan, Geneve, GRE or "
+"IP in IP (IPIP)."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_skb_set_tunnel_key(struct sk_buff *>I<skb>B<, struct bpf_tunnel_key *>I<key>B<, u32 >I<size>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Populate tunnel metadata for packet associated to I<skb.> The tunnel "
+"metadata is set to the contents of I<key>, of I<size>\\&. The I<flags> can "
+"be set to a combination of the following values:"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<BPF_F_TUNINFO_IPV6>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Indicate that the tunnel is based on IPv6 protocol instead of IPv4."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<BPF_F_ZERO_CSUM_TX>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"For IPv4 packets, add a flag to tunnel metadata indicating that checksum "
+"computation should be skipped and checksum set to zeroes."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<BPF_F_DONT_FRAGMENT>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Add a flag to tunnel metadata indicating that the packet should not be "
+"fragmented."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<BPF_F_SEQ_NUMBER>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Add a flag to tunnel metadata indicating that a sequence number should be "
+"added to tunnel header before sending the packet. This flag was added for "
+"GRE encapsulation, but might be used with other protocols as well in the "
+"future."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Here is a typical usage on the transmit path:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"^\".ft C$\n"
+"struct bpf_tunnel_key key;\n"
+" populate key ...\n"
+"bpf_skb_set_tunnel_key(skb, &key, sizeof(key), 0);\n"
+"bpf_clone_redirect(skb, vxlan_dev_ifindex, 0);\n"
+"^\".ft P$\n"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"See also the description of the B<bpf_skb_get_tunnel_key>() helper for "
+"additional information."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_perf_event_read(struct bpf_map *>I<map>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Read the value of a perf event counter. This helper relies on a I<map> of "
+"type B<BPF_MAP_TYPE_PERF_EVENT_ARRAY>\\&. The nature of the perf event "
+"counter is selected when I<map> is updated with perf event file descriptors. "
+"The I<map> is an array whose size is the number of available CPUs, and each "
+"cell contains a value relative to one CPU. The value to retrieve is "
+"indicated by I<flags>, that contains the index of the CPU to look up, masked "
+"with B<BPF_F_INDEX_MASK>\\&. Alternatively, I<flags> can be set to "
+"B<BPF_F_CURRENT_CPU> to indicate that the value for the current CPU should "
+"be retrieved."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Note that before Linux 4.13, only hardware perf event can be retrieved."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Also, be aware that the newer helper B<bpf_perf_event_read_value>() is "
+"recommended over B<bpf_perf_event_read>() in general. The latter has some "
+"ABI quirks where error and counter value are used as a return code (which is "
+"wrong to do since ranges may overlap). This issue is fixed with "
+"B<bpf_perf_event_read_value>(), which at the same time provides more "
+"features over the B<bpf_perf_event_read>() interface. Please refer to the "
+"description of B<bpf_perf_event_read_value>() for details."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The value of the perf event counter read from the map, or a negative error "
+"code in case of failure."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_redirect(u32 >I<ifindex>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Redirect the packet to another net device of index I<ifindex>\\&. This "
+"helper is somewhat similar to B<bpf_clone_redirect>(), except that the "
+"packet is not cloned, which provides increased performance."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Except for XDP, both ingress and egress interfaces can be used for "
+"redirection. The B<BPF_F_INGRESS> value in I<flags> is used to make the "
+"distinction (ingress path is selected if the flag is present, egress path "
+"otherwise). Currently, XDP only supports redirection to the egress "
+"interface, and accepts no flag at all."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The same effect can also be attained with the more generic "
+"B<bpf_redirect_map>(), which uses a BPF map to store the redirect target "
+"instead of providing it directly to the helper."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"For XDP, the helper returns B<XDP_REDIRECT> on success or B<XDP_ABORTED> on "
+"error. For other program types, the values are B<TC_ACT_REDIRECT> on success "
+"or B<TC_ACT_SHOT> on error."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u32 bpf_get_route_realm(struct sk_buff *>I<skb>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Retrieve the realm or the route, that is to say the B<tclassid> field of the "
+"destination for the I<skb>\\&. The identifier retrieved is a user-provided "
+"tag, similar to the one used with the net_cls cgroup (see description for "
+"B<bpf_get_cgroup_classid>() helper), but here this tag is held by a route (a "
+"destination entry), not by a task."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Retrieving this identifier works with the clsact TC egress hook (see also "
+"B<tc-bpf(8)>), or alternatively on conventional classful egress qdiscs, but "
+"not on TC ingress path. In case of clsact TC egress hook, this has the "
+"advantage that, internally, the destination entry has not been dropped yet "
+"in the transmit path. Therefore, the destination entry does not need to be "
+"artificially held via B<netif_keep_dst>() for a classful qdisc until the "
+"I<skb> is freed."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper is available only if the kernel was compiled with "
+"B<CONFIG_IP_ROUTE_CLASSID> configuration option."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The realm of the route for the packet associated to I<skb>, or 0 if none was "
+"found."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_perf_event_output(void *>I<ctx>B<, struct bpf_map *>I<map>B<, u64 >I<flags>B<, void *>I<data>B<, u64 >I<size>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Write raw I<data> blob into a special BPF perf event held by I<map> of type "
+"B<BPF_MAP_TYPE_PERF_EVENT_ARRAY>\\&. This perf event must have the following "
+"attributes: B<PERF_SAMPLE_RAW> as B<sample_type>, B<PERF_TYPE_SOFTWARE> as "
+"B<type>, and B<PERF_COUNT_SW_BPF_OUTPUT> as B<config>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The I<flags> are used to indicate the index in I<map> for which the value "
+"must be put, masked with B<BPF_F_INDEX_MASK>\\&. Alternatively, I<flags> "
+"can be set to B<BPF_F_CURRENT_CPU> to indicate that the index of the current "
+"CPU core should be used."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The value to write, of I<size>, is passed through eBPF stack and pointed by "
+"I<data>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "The context of the program I<ctx> needs also be passed to the helper."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"On user space, a program willing to read the values needs to call "
+"B<perf_event_open>() on the perf event (either for one or for all CPUs) and "
+"to store the file descriptor into the I<map>\\&. This must be done before "
+"the eBPF program can send data into it. An example is available in file "
+"I<samples/bpf/trace_output_user.c> in the Linux kernel source tree (the eBPF "
+"program counterpart is in I<samples/bpf/trace_output_kern.c>)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<bpf_perf_event_output>() achieves better performance than "
+"B<bpf_trace_printk>() for sharing data with user space, and is much better "
+"suitable for streaming data from eBPF programs."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Note that this helper is not restricted to tracing use cases and can be used "
+"with programs attached to TC or XDP as well, where it allows for passing "
+"data to user space listeners. Data can be:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Only custom structs,"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Only the packet payload, or"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "A combination of both."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_skb_load_bytes(const void *>I<skb>B<, u32 >I<offset>B<, void *>I<to>B<, u32 >I<len>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper was provided as an easy way to load data from a packet. It can "
+"be used to load I<len> bytes from I<offset> from the packet associated to "
+"I<skb>, into the buffer pointed by I<to>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"Since Linux 4.7, usage of this helper has mostly been replaced by \"direct "
+"packet access\", enabling packet data to be manipulated with I<skb>B<-"
+"E<gt>data> and I<skb>B<-E<gt>data_end> pointing respectively to the first "
+"byte of packet data and to the byte after the last byte of packet data. "
+"However, it remains useful if one wishes to read large quantities of data at "
+"once from a packet into the eBPF stack."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_get_stackid(void *>I<ctx>B<, struct bpf_map *>I<map>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Walk a user or a kernel stack and return its id. To achieve this, the helper "
+"needs I<ctx>, which is a pointer to the context on which the tracing program "
+"is executed, and a pointer to a I<map> of type "
+"B<BPF_MAP_TYPE_STACK_TRACE>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The last argument, I<flags>, holds the number of stack frames to skip (from "
+"0 to 255), masked with B<BPF_F_SKIP_FIELD_MASK>\\&. The next bits can be "
+"used to set a combination of the following flags:"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<BPF_F_USER_STACK>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Collect a user space stack instead of a kernel stack."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<BPF_F_FAST_STACK_CMP>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Compare stacks by hash only."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<BPF_F_REUSE_STACKID>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"If two different stacks hash into the same I<stackid>, discard the old one."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The stack id retrieved is a 32 bit long integer handle which can be further "
+"combined with other data (including other stack ids) and used as a key into "
+"maps. This can be useful for generating a variety of graphs (such as flame "
+"graphs or off-cpu graphs)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"For walking a stack, this helper is an improvement over B<bpf_probe_read>(), "
+"which can be used with unrolled loops but is not efficient and consumes a "
+"lot of eBPF instructions. Instead, B<bpf_get_stackid>() can collect up to "
+"B<PERF_MAX_STACK_DEPTH> both kernel and user frames. Note that this limit "
+"can be controlled with the B<sysctl> program, and that it should be manually "
+"increased in order to profile long user stacks (such as stacks for Java "
+"programs). To do so, use:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"^\".ft C$\n"
+"# sysctl kernel.perf_event_max_stack=E<lt>new valueE<gt>\n"
+"^\".ft P$\n"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The positive or null stack id on success, or a negative error in case of "
+"failure."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<s64 bpf_csum_diff(__be32 *>I<from>B<, u32 >I<from_size>B<, __be32 *>I<to>B<, u32 >I<to_size>B<, __wsum >I<seed>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Compute a checksum difference, from the raw buffer pointed by I<from>, of "
+"length I<from_size> (that must be a multiple of 4), towards the raw buffer "
+"pointed by I<to>, of size I<to_size> (same remark). An optional I<seed> can "
+"be added to the value (this can be cascaded, the seed may come from a "
+"previous call to the helper)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "This is flexible enough to be used in several ways:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"With I<from_size> == 0, I<to_size> E<gt> 0 and I<seed> set to checksum, it "
+"can be used when pushing new data."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"With I<from_size> E<gt> 0, I<to_size> == 0 and I<seed> set to checksum, it "
+"can be used when removing data from a packet."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"With I<from_size> E<gt> 0, I<to_size> E<gt> 0 and I<seed> set to 0, it can "
+"be used to compute a diff. Note that I<from_size> and I<to_size> do not need "
+"to be equal."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper can be used in combination with B<bpf_l3_csum_replace>() and "
+"B<bpf_l4_csum_replace>(), to which one can feed in the difference computed "
+"with B<bpf_csum_diff>()."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "The checksum result, or a negative error code in case of failure."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_skb_get_tunnel_opt(struct sk_buff *>I<skb>B<, void *>I<opt>B<, u32 >I<size>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Retrieve tunnel options metadata for the packet associated to I<skb>, and "
+"store the raw tunnel option data to the buffer I<opt> of I<size>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"This helper can be used with encapsulation devices that can operate in "
+"\"collect metadata\" mode (please refer to the related note in the "
+"description of B<bpf_skb_get_tunnel_key>() for more details). A particular "
+"example where this can be used is in combination with the Geneve "
+"encapsulation protocol, where it allows for pushing (with "
+"B<bpf_skb_get_tunnel_opt>() helper) and retrieving arbitrary TLVs (Type-"
+"Length-Value headers) from the eBPF program. This allows for full "
+"customization of these headers."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "The size of the option data retrieved."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_skb_set_tunnel_opt(struct sk_buff *>I<skb>B<, void *>I<opt>B<, u32 >I<size>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Set tunnel options metadata for the packet associated to I<skb> to the "
+"option data contained in the raw buffer I<opt> of I<size>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"See also the description of the B<bpf_skb_get_tunnel_opt>() helper for "
+"additional information."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_skb_change_proto(struct sk_buff *>I<skb>B<, __be16 >I<proto>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Change the protocol of the I<skb> to I<proto>\\&. Currently supported are "
+"transition from IPv4 to IPv6, and from IPv6 to IPv4. The helper takes care "
+"of the groundwork for the transition, including resizing the socket buffer. "
+"The eBPF program is expected to fill the new headers, if any, via "
+"B<skb_store_bytes>() and to recompute the checksums with "
+"B<bpf_l3_csum_replace>() and B<bpf_l4_csum_replace>(). The main case for "
+"this helper is to perform NAT64 operations out of an eBPF program."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Internally, the GSO type is marked as dodgy so that headers are checked and "
+"segments are recalculated by the GSO/GRO engine. The size for GSO target is "
+"adapted as well."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"All values for I<flags> are reserved for future usage, and must be left at "
+"zero."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_skb_change_type(struct sk_buff *>I<skb>B<, u32 >I<type>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Change the packet type for the packet associated to I<skb>\\&. This comes "
+"down to setting I<skb>B<-E<gt>pkt_type> to I<type>, except the eBPF program "
+"does not have a write access to I<skb>B<-E<gt>pkt_type> beside this helper. "
+"Using a helper here allows for graceful handling of errors."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The major use case is to change incoming I<skb*s to **PACKET_HOST*> in a "
+"programmatic way instead of having to recirculate via B<redirect>(..., "
+"B<BPF_F_INGRESS>), for example."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Note that I<type> only allows certain values. At this time, they are:"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<PACKET_HOST>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Packet is for us."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<PACKET_BROADCAST>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Send packet to all."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<PACKET_MULTICAST>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Send packet to group."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<PACKET_OTHERHOST>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Send packet to someone else."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_skb_under_cgroup(struct sk_buff *>I<skb>B<, struct bpf_map *>I<map>B<, u32 >I<index>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Check whether I<skb> is a descendant of the cgroup2 held by I<map> of type "
+"B<BPF_MAP_TYPE_CGROUP_ARRAY>, at I<index>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "The return value depends on the result of the test, and can be:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "0, if the I<skb> failed the cgroup2 descendant test."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "1, if the I<skb> succeeded the cgroup2 descendant test."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "A negative error code, if an error occurred."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u32 bpf_get_hash_recalc(struct sk_buff *>I<skb>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Retrieve the hash of the packet, I<skb>B<-E<gt>hash>\\&. If it is not set, "
+"in particular if the hash was cleared due to mangling, recompute this hash. "
+"Later accesses to the hash can be done directly with I<skb>B<-E<gt>hash>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Calling B<bpf_set_hash_invalid>(), changing a packet prototype with "
+"B<bpf_skb_change_proto>(), or calling B<bpf_skb_store_bytes>() with the "
+"B<BPF_F_INVALIDATE_HASH> are actions susceptible to clear the hash and to "
+"trigger a new computation for the next call to B<bpf_get_hash_recalc>()."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "The 32-bit hash."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_get_current_task(void)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Get the current task."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "A pointer to the current task struct."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_probe_write_user(void *>I<dst>B<, const void *>I<src>B<, u32 >I<len>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Attempt in a safe way to write I<len> bytes from the buffer I<src> to I<dst> "
+"in memory. It only works for threads that are in user context, and I<dst> "
+"must be a valid user space address."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper should not be used to implement any kind of security mechanism "
+"because of TOC-TOU attacks, but rather to debug, divert, and manipulate "
+"execution of semi-cooperative processes."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Keep in mind that this feature is meant for experiments, and it has a risk "
+"of crashing the system and running programs. Therefore, when an eBPF "
+"program using this helper is attached, a warning including PID and process "
+"name is printed to kernel logs."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_current_task_under_cgroup(struct bpf_map *>I<map>B<, u32 >I<index>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Check whether the probe is being run is the context of a given subset of the "
+"cgroup2 hierarchy. The cgroup2 to test is held by I<map> of type "
+"B<BPF_MAP_TYPE_CGROUP_ARRAY>, at I<index>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "1, if current task belongs to the cgroup2."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "0, if current task does not belong to the cgroup2."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_skb_change_tail(struct sk_buff *>I<skb>B<, u32 >I<len>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Resize (trim or grow) the packet associated to I<skb> to the new I<len>\\&. "
+"The I<flags> are reserved for future usage, and must be left at zero."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The basic idea is that the helper performs the needed work to change the "
+"size of the packet, then the eBPF program rewrites the rest via helpers like "
+"B<bpf_skb_store_bytes>(), B<bpf_l3_csum_replace>(), "
+"B<bpf_l3_csum_replace>() and others. This helper is a slow path utility "
+"intended for replies with control messages. And because it is targeted for "
+"slow path, the helper itself can afford to be slow: it implicitly "
+"linearizes, unclones and drops offloads from the I<skb>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_skb_pull_data(struct sk_buff *>I<skb>B<, u32 >I<len>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Pull in non-linear data in case the I<skb> is non-linear and not all of "
+"I<len> are part of the linear section. Make I<len> bytes from I<skb> "
+"readable and writable. If a zero value is passed for I<len>, then all bytes "
+"in the linear part of I<skb> will be made readable and writable."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper is only needed for reading and writing with direct packet access."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"For direct packet access, testing that offsets to access are within packet "
+"boundaries (test on I<skb>B<-E<gt>data_end>) is susceptible to fail if "
+"offsets are invalid, or if the requested data is in non-linear parts of the "
+"I<skb>\\&. On failure the program can just bail out, or in the case of a non-"
+"linear buffer, use a helper to make the data available. The "
+"B<bpf_skb_load_bytes>() helper is a first solution to access the data. "
+"Another one consists in using B<bpf_skb_pull_data> to pull in once the non-"
+"linear parts, then retesting and eventually access the data."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"At the same time, this also makes sure the I<skb> is uncloned, which is a "
+"necessary condition for direct write. As this needs to be an invariant for "
+"the write part only, the verifier detects writes and adds a prologue that is "
+"calling B<bpf_skb_pull_data()> to effectively unclone the I<skb> from the "
+"very beginning in case it is indeed cloned."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<s64 bpf_csum_update(struct sk_buff *>I<skb>B<, __wsum >I<csum>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Add the checksum I<csum> into I<skb>B<-E<gt>csum> in case the driver has "
+"supplied a checksum for the entire packet into that field. Return an error "
+"otherwise. This helper is intended to be used in combination with "
+"B<bpf_csum_diff>(), in particular when the checksum needs to be updated "
+"after data has been written into the packet through direct packet access."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "The checksum on success, or a negative error code in case of failure."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<void bpf_set_hash_invalid(struct sk_buff *>I<skb>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Invalidate the current I<skb>B<-E<gt>hash>\\&. It can be used after mangling "
+"on headers through direct packet access, in order to indicate that the hash "
+"is outdated and to trigger a recalculation the next time the kernel tries to "
+"access this hash or when the B<bpf_get_hash_recalc>() helper is called."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "void."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_get_numa_node_id(void)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Return the id of the current NUMA node. The primary use case for this helper "
+"is the selection of sockets for the local NUMA node, when the program is "
+"attached to sockets using the B<SO_ATTACH_REUSEPORT_EBPF> option (see also "
+"B<socket(7)>), but the helper is also available to other eBPF program types, "
+"similarly to B<bpf_get_smp_processor_id>()."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "The id of current NUMA node."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_skb_change_head(struct sk_buff *>I<skb>B<, u32 >I<len>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Grows headroom of packet associated to I<skb> and adjusts the offset of the "
+"MAC header accordingly, adding I<len> bytes of space. It automatically "
+"extends and reallocates memory as required."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper can be used on a layer 3 I<skb> to push a MAC header for "
+"redirection into a layer 2 device."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_xdp_adjust_head(struct xdp_buff *>I<xdp_md>B<, int >I<delta>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Adjust (move) I<xdp_md>B<-E<gt>data> by I<delta> bytes. Note that it is "
+"possible to use a negative value for I<delta>\\&. This helper can be used to "
+"prepare the packet for pushing or popping headers."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_probe_read_str(void *>I<dst>B<, u32 >I<size>B<, const void *>I<unsafe_ptr>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Copy a NUL terminated string from an unsafe kernel address I<unsafe_ptr> to "
+"I<dst>\\&. See B<bpf_probe_read_kernel_str>() for more details."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Generally, use B<bpf_probe_read_user_str>() or "
+"B<bpf_probe_read_kernel_str>() instead."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"On success, the strictly positive length of the string, including the "
+"trailing NUL character. On error, a negative value."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_get_socket_cookie(struct sk_buff *>I<skb>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"If the B<struct sk_buff> pointed by I<skb> has a known socket, retrieve the "
+"cookie (generated by the kernel) of this socket. If no cookie has been set "
+"yet, generate a new cookie. Once generated, the socket cookie remains stable "
+"for the life of the socket. This helper can be useful for monitoring per "
+"socket networking traffic statistics as it provides a global socket "
+"identifier that can be assumed unique."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"A 8-byte long unique number on success, or 0 if the socket field is missing "
+"inside I<skb>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_get_socket_cookie(struct bpf_sock_addr *>I<ctx>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Equivalent to bpf_get_socket_cookie() helper that accepts I<skb>, but gets "
+"socket from B<struct bpf_sock_addr> context."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "A 8-byte long unique number."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_get_socket_cookie(struct bpf_sock_ops *>I<ctx>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Equivalent to B<bpf_get_socket_cookie>() helper that accepts I<skb>, but "
+"gets socket from B<struct bpf_sock_ops> context."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_get_socket_cookie(struct sock *>I<sk>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Equivalent to B<bpf_get_socket_cookie>() helper that accepts I<sk>, but gets "
+"socket from a BTF B<struct sock>\\&. This helper also works for sleepable "
+"programs."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "A 8-byte long unique number or 0 if I<sk> is NULL."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u32 bpf_get_socket_uid(struct sk_buff *>I<skb>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Get the owner UID of the socked associated to I<skb>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The owner UID of the socket associated to I<skb>\\&. If the socket is "
+"B<NULL>, or if it is not a full socket (i.e. if it is a time-wait or a "
+"request socket instead), B<overflowuid> value is returned (note that "
+"B<overflowuid> might also be the actual UID value for the socket)."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_set_hash(struct sk_buff *>I<skb>B<, u32 >I<hash>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Set the full hash for I<skb> (set the field I<skb>B<-E<gt>hash>) to value "
+"I<hash>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "0"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_setsockopt(void *>I<bpf_socket>B<, int >I<level>B<, int >I<optname>B<, void *>I<optval>B<, int >I<optlen>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Emulate a call to B<setsockopt()> on the socket associated to I<bpf_socket>, "
+"which must be a full socket. The I<level> at which the option resides and "
+"the name I<optname> of the option must be specified, see B<setsockopt(2)> "
+"for more information. The option value of length I<optlen> is pointed by "
+"I<optval>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "I<bpf_socket> should be one of the following:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<struct bpf_sock_ops> for B<BPF_PROG_TYPE_SOCK_OPS>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<struct bpf_sock_addr> for B<BPF_CGROUP_INET4_CONNECT> and "
+"B<BPF_CGROUP_INET6_CONNECT>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper actually implements a subset of B<setsockopt()>\\&. It supports "
+"the following I<level>s:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"B<SOL_SOCKET>, which supports the following I<optname>s: B<SO_RCVBUF>, "
+"B<SO_SNDBUF>, B<SO_MAX_PACING_RATE>, B<SO_PRIORITY>, B<SO_RCVLOWAT>, "
+"B<SO_MARK>, B<SO_BINDTODEVICE>, B<SO_KEEPALIVE>, B<SO_REUSEADDR>, "
+"B<SO_REUSEPORT>, B<SO_BINDTOIFINDEX>, B<SO_TXREHASH>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"B<IPPROTO_TCP>, which supports the following I<optname>s: B<TCP_CONGESTION>, "
+"B<TCP_BPF_IW>, B<TCP_BPF_SNDCWND_CLAMP>, B<TCP_SAVE_SYN>, B<TCP_KEEPIDLE>, "
+"B<TCP_KEEPINTVL>, B<TCP_KEEPCNT>, B<TCP_SYNCNT>, B<TCP_USER_TIMEOUT>, "
+"B<TCP_NOTSENT_LOWAT>, B<TCP_NODELAY>, B<TCP_MAXSEG>, B<TCP_WINDOW_CLAMP>, "
+"B<TCP_THIN_LINEAR_TIMEOUTS>, B<TCP_BPF_DELACK_MAX>, B<TCP_BPF_RTO_MIN>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<IPPROTO_IP>, which supports I<optname> B<IP_TOS>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"B<IPPROTO_IPV6>, which supports the following I<optname>s: B<IPV6_TCLASS>, "
+"B<IPV6_AUTOFLOWLABEL>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_skb_adjust_room(struct sk_buff *>I<skb>B<, s32 >I<len_diff>B<, u32 >I<mode>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Grow or shrink the room for data in the packet associated to I<skb> by "
+"I<len_diff>, and according to the selected I<mode>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"By default, the helper will reset any offloaded checksum indicator of the "
+"skb to CHECKSUM_NONE. This can be avoided by the following flag:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<BPF_F_ADJ_ROOM_NO_CSUM_RESET>: Do not reset offloaded checksum data of the "
+"skb to CHECKSUM_NONE."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "There are two supported modes at this time:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<BPF_ADJ_ROOM_MAC>: Adjust room at the mac layer (room space is added or "
+"removed between the layer 2 and layer 3 headers)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<BPF_ADJ_ROOM_NET>: Adjust room at the network layer (room space is added "
+"or removed between the layer 3 and layer 4 headers)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "The following flags are supported at this time:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<BPF_F_ADJ_ROOM_FIXED_GSO>: Do not adjust gso_size. Adjusting mss in this "
+"way is not allowed for datagrams."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<BPF_F_ADJ_ROOM_ENCAP_L3_IPV4>, B<BPF_F_ADJ_ROOM_ENCAP_L3_IPV6>: Any new "
+"space is reserved to hold a tunnel header. Configure skb offsets and other "
+"fields accordingly."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<BPF_F_ADJ_ROOM_ENCAP_L4_GRE>, B<BPF_F_ADJ_ROOM_ENCAP_L4_UDP>: Use with "
+"ENCAP_L3 flags to further specify the tunnel type."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<BPF_F_ADJ_ROOM_ENCAP_L2>(I<len>): Use with ENCAP_L3/L4 flags to further "
+"specify the tunnel type; I<len> is the length of the inner MAC header."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<BPF_F_ADJ_ROOM_ENCAP_L2_ETH>: Use with BPF_F_ADJ_ROOM_ENCAP_L2 flag to "
+"further specify the L2 type as Ethernet."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_redirect_map(struct bpf_map *>I<map>B<, u64 >I<key>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Redirect the packet to the endpoint referenced by I<map> at index I<key>\\&. "
+"Depending on its type, this I<map> can contain references to net devices "
+"(for forwarding packets through other ports), or to CPUs (for redirecting "
+"XDP frames to another CPU; but this is only implemented for native XDP (with "
+"driver support) as of this writing)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The lower two bits of I<flags> are used as the return code if the map lookup "
+"fails. This is so that the return value can be one of the XDP program return "
+"codes up to B<XDP_TX>, as chosen by the caller. The higher bits of I<flags> "
+"can be set to BPF_F_BROADCAST or BPF_F_EXCLUDE_INGRESS as defined below."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"With BPF_F_BROADCAST the packet will be broadcasted to all the interfaces in "
+"the map, with BPF_F_EXCLUDE_INGRESS the ingress interface will be excluded "
+"when do broadcasting."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"See also B<bpf_redirect>(), which only supports redirecting to an ifindex, "
+"but doesn\\(aqt require a map to do so."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<XDP_REDIRECT> on success, or the value of the two lower bits of the "
+"I<flags> argument on error."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_sk_redirect_map(struct sk_buff *>I<skb>B<, struct bpf_map *>I<map>B<, u32 >I<key>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Redirect the packet to the socket referenced by I<map> (of type "
+"B<BPF_MAP_TYPE_SOCKMAP>) at index I<key>\\&. Both ingress and egress "
+"interfaces can be used for redirection. The B<BPF_F_INGRESS> value in "
+"I<flags> is used to make the distinction (ingress path is selected if the "
+"flag is present, egress path otherwise). This is the only flag supported for "
+"now."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<SK_PASS> on success, or B<SK_DROP> on error."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_sock_map_update(struct bpf_sock_ops *>I<skops>B<, struct bpf_map *>I<map>B<, void *>I<key>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Add an entry to, or update a I<map> referencing sockets. The I<skops> is "
+"used as a new value for the entry associated to I<key>\\&. I<flags> is one "
+"of:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"If the I<map> has eBPF programs (parser and verdict), those will be "
+"inherited by the socket being added. If the socket is already attached to "
+"eBPF programs, this results in an error."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_xdp_adjust_meta(struct xdp_buff *>I<xdp_md>B<, int >I<delta>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Adjust the address pointed by I<xdp_md>B<-E<gt>data_meta> by I<delta> (which "
+"can be positive or negative). Note that this operation modifies the address "
+"stored in I<xdp_md>B<-E<gt>data>, so the latter must be loaded only after "
+"the helper has been called."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The use of I<xdp_md>B<-E<gt>data_meta> is optional and programs are not "
+"required to use it. The rationale is that when the packet is processed with "
+"XDP (e.g. as DoS filter), it is possible to push further meta data along "
+"with it before passing to the stack, and to give the guarantee that an "
+"ingress eBPF program attached as a TC classifier on the same device can pick "
+"this up for further post-processing. Since TC works with socket buffers, it "
+"remains possible to set from XDP the B<mark> or B<priority> pointers, or "
+"other pointers for the socket buffer. Having this scratch space generic and "
+"programmable allows for more flexibility as the user is free to store "
+"whatever meta data they need."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_perf_event_read_value(struct bpf_map *>I<map>B<, u64 >I<flags>B<, struct bpf_perf_event_value *>I<buf>B<, u32 >I<buf_size>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Read the value of a perf event counter, and store it into I<buf> of size "
+"I<buf_size>\\&. This helper relies on a I<map> of type "
+"B<BPF_MAP_TYPE_PERF_EVENT_ARRAY>\\&. The nature of the perf event counter is "
+"selected when I<map> is updated with perf event file descriptors. The I<map> "
+"is an array whose size is the number of available CPUs, and each cell "
+"contains a value relative to one CPU. The value to retrieve is indicated by "
+"I<flags>, that contains the index of the CPU to look up, masked with "
+"B<BPF_F_INDEX_MASK>\\&. Alternatively, I<flags> can be set to "
+"B<BPF_F_CURRENT_CPU> to indicate that the value for the current CPU should "
+"be retrieved."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper behaves in a way close to B<bpf_perf_event_read>() helper, save "
+"that instead of just returning the value observed, it fills the I<buf> "
+"structure. This allows for additional data to be retrieved: in particular, "
+"the enabled and running times (in I<buf>B<-E<gt>enabled> and I<buf>B<-"
+"E<gt>running>, respectively) are copied. In general, "
+"B<bpf_perf_event_read_value>() is recommended over B<bpf_perf_event_read>(), "
+"which has some ABI issues and provides fewer functionalities."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"These values are interesting, because hardware PMU (Performance Monitoring "
+"Unit) counters are limited resources. When there are more PMU based perf "
+"events opened than available counters, kernel will multiplex these events so "
+"each event gets certain percentage (but not all) of the PMU time. In case "
+"that multiplexing happens, the number of samples or counter value will not "
+"reflect the case compared to when no multiplexing occurs. This makes "
+"comparison between different runs difficult. Typically, the counter value "
+"should be normalized before comparing to other experiments. The usual "
+"normalization is done as follows."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"^\".ft C$\n"
+"normalized_counter = counter * t_enabled / t_running\n"
+"^\".ft P$\n"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Where t_enabled is the time enabled for event and t_running is the time "
+"running for event since last normalization. The enabled and running times "
+"are accumulated since the perf event open. To achieve scaling factor between "
+"two invocations of an eBPF program, users can use CPU id as the key (which "
+"is typical for perf array usage model) to remember the previous value and do "
+"the calculation inside the eBPF program."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_perf_prog_read_value(struct bpf_perf_event_data *>I<ctx>B<, struct bpf_perf_event_value *>I<buf>B<, u32 >I<buf_size>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"For en eBPF program attached to a perf event, retrieve the value of the "
+"event counter associated to I<ctx> and store it in the structure pointed by "
+"I<buf> and of size I<buf_size>\\&. Enabled and running times are also stored "
+"in the structure (see description of helper B<bpf_perf_event_read_value>() "
+"for more details)."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_getsockopt(void *>I<bpf_socket>B<, int >I<level>B<, int >I<optname>B<, void *>I<optval>B<, int >I<optlen>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Emulate a call to B<getsockopt()> on the socket associated to I<bpf_socket>, "
+"which must be a full socket. The I<level> at which the option resides and "
+"the name I<optname> of the option must be specified, see B<getsockopt(2)> "
+"for more information. The retrieved value is stored in the structure "
+"pointed by I<opval> and of length I<optlen>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"This helper actually implements a subset of B<getsockopt()>\\&. It supports "
+"the same set of I<optname>s that is supported by the B<bpf_setsockopt>() "
+"helper. The exceptions are B<TCP_BPF_*> is B<bpf_setsockopt>() only and "
+"B<TCP_SAVED_SYN> is B<bpf_getsockopt>() only."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_override_return(struct pt_regs *>I<regs>B<, u64 >I<rc>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Used for error injection, this helper uses kprobes to override the return "
+"value of the probed function, and to set it to I<rc>\\&. The first argument "
+"is the context I<regs> on which the kprobe works."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper works by setting the PC (program counter) to an override "
+"function which is run in place of the original probed function. This means "
+"the probed function is not run at all. The replacement function just returns "
+"with the required value."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper has security implications, and thus is subject to restrictions. "
+"It is only available if the kernel was compiled with the "
+"B<CONFIG_BPF_KPROBE_OVERRIDE> configuration option, and in this case it only "
+"works on functions tagged with B<ALLOW_ERROR_INJECTION> in the kernel code."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Also, the helper is only available for the architectures having the "
+"CONFIG_FUNCTION_ERROR_INJECTION option. As of this writing, x86 architecture "
+"is the only one to support this feature."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_sock_ops_cb_flags_set(struct bpf_sock_ops *>I<bpf_sock>B<, int >I<argval>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Attempt to set the value of the B<bpf_sock_ops_cb_flags> field for the full "
+"TCP socket associated to I<bpf_sock_ops> to I<argval>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The primary use of this field is to determine if there should be calls to "
+"eBPF programs of type B<BPF_PROG_TYPE_SOCK_OPS> at various points in the TCP "
+"code. A program of the same type can change its value, per connection and as "
+"necessary, when the connection is established. This field is directly "
+"accessible for reading, but this helper must be used for updates in order to "
+"return an error if an eBPF program tries to set a callback that is not "
+"supported in the current kernel."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "I<argval> is a flag array which can combine these flags:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<BPF_SOCK_OPS_RTO_CB_FLAG> (retransmission time out)"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<BPF_SOCK_OPS_RETRANS_CB_FLAG> (retransmission)"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<BPF_SOCK_OPS_STATE_CB_FLAG> (TCP state change)"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<BPF_SOCK_OPS_RTT_CB_FLAG> (every RTT)"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Therefore, this function can be used to clear a callback flag by setting the "
+"appropriate bit to zero. e.g. to disable the RTO callback:"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<bpf_sock_ops_cb_flags_set(bpf_sock,>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<bpf_sock-E<gt>bpf_sock_ops_cb_flags & ~BPF_SOCK_OPS_RTO_CB_FLAG)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Here are some examples of where one could call such eBPF program:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "When RTO fires."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "When a packet is retransmitted."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "When the connection terminates."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "When a packet is sent."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "When a packet is received."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Code B<-EINVAL> if the socket is not a full TCP socket; otherwise, a "
+"positive number containing the bits that could not be set is returned (which "
+"comes down to 0 if all bits were set as required)."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_msg_redirect_map(struct sk_msg_buff *>I<msg>B<, struct bpf_map *>I<map>B<, u32 >I<key>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper is used in programs implementing policies at the socket level. "
+"If the message I<msg> is allowed to pass (i.e. if the verdict eBPF program "
+"returns B<SK_PASS>), redirect it to the socket referenced by I<map> (of type "
+"B<BPF_MAP_TYPE_SOCKMAP>) at index I<key>\\&. Both ingress and egress "
+"interfaces can be used for redirection. The B<BPF_F_INGRESS> value in "
+"I<flags> is used to make the distinction (ingress path is selected if the "
+"flag is present, egress path otherwise). This is the only flag supported for "
+"now."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_msg_apply_bytes(struct sk_msg_buff *>I<msg>B<, u32 >I<bytes>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"For socket policies, apply the verdict of the eBPF program to the next "
+"I<bytes> (number of bytes) of message I<msg>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "For example, this helper can be used in the following cases:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"A single B<sendmsg>() or B<sendfile>() system call contains multiple logical "
+"messages that the eBPF program is supposed to read and for which it should "
+"apply a verdict."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"An eBPF program only cares to read the first I<bytes> of a I<msg>\\&. If the "
+"message has a large payload, then setting up and calling the eBPF program "
+"repeatedly for all bytes, even though the verdict is already known, would "
+"create unnecessary overhead."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"When called from within an eBPF program, the helper sets a counter internal "
+"to the BPF infrastructure, that is used to apply the last verdict to the "
+"next I<bytes>\\&. If I<bytes> is smaller than the current data being "
+"processed from a B<sendmsg>() or B<sendfile>() system call, the first "
+"I<bytes> will be sent and the eBPF program will be re-run with the pointer "
+"for start of data pointing to byte number I<bytes> B<+ 1>\\&. If I<bytes> is "
+"larger than the current data being processed, then the eBPF verdict will be "
+"applied to multiple B<sendmsg>() or B<sendfile>() calls until I<bytes> are "
+"consumed."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Note that if a socket closes with the internal counter holding a non-zero "
+"value, this is not a problem because data is not being buffered for I<bytes> "
+"and is sent as it is received."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_msg_cork_bytes(struct sk_msg_buff *>I<msg>B<, u32 >I<bytes>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"For socket policies, prevent the execution of the verdict eBPF program for "
+"message I<msg> until I<bytes> (byte number) have been accumulated."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This can be used when one needs a specific number of bytes before a verdict "
+"can be assigned, even if the data spans multiple B<sendmsg>() or "
+"B<sendfile>() calls. The extreme case would be a user calling B<sendmsg>() "
+"repeatedly with 1-byte long message segments. Obviously, this is bad for "
+"performance, but it is still valid. If the eBPF program needs I<bytes> bytes "
+"to validate a header, this helper can be used to prevent the eBPF program to "
+"be called again until I<bytes> have been accumulated."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_msg_pull_data(struct sk_msg_buff *>I<msg>B<, u32 >I<start>B<, u32 >I<end>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"For socket policies, pull in non-linear data from user space for I<msg> and "
+"set pointers I<msg>B<-E<gt>data> and I<msg>B<-E<gt>data_end> to I<start> and "
+"I<end> bytes offsets into I<msg>, respectively."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"If a program of type B<BPF_PROG_TYPE_SK_MSG> is run on a I<msg> it can only "
+"parse data that the (B<data>, B<data_end>) pointers have already consumed. "
+"For B<sendmsg>() hooks this is likely the first scatterlist element. But for "
+"calls relying on the B<sendpage> handler (e.g. B<sendfile>()) this will be "
+"the range (B<0>, B<0>) because the data is shared with user space and by "
+"default the objective is to avoid allowing user space to modify data while "
+"(or after) eBPF verdict is being decided. This helper can be used to pull in "
+"data and to set the start and end pointer to given values. Data will be "
+"copied if necessary (i.e. if data was not linear and if start and end "
+"pointers do not point to the same chunk)."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_bind(struct bpf_sock_addr *>I<ctx>B<, struct sockaddr *>I<addr>B<, int >I<addr_len>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Bind the socket associated to I<ctx> to the address pointed by I<addr>, of "
+"length I<addr_len>\\&. This allows for making outgoing connection from the "
+"desired IP address, which can be useful for example when all processes "
+"inside a cgroup should use one single IP address on a host that has multiple "
+"IP configured."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"This helper works for IPv4 and IPv6, TCP and UDP sockets. The domain "
+"(I<addr>B<-E<gt>sa_family>) must be B<AF_INET> (or B<AF_INET6>). It\\(aqs "
+"advised to pass zero port (B<sin_port> or B<sin6_port>) which triggers "
+"IP_BIND_ADDRESS_NO_PORT-like behavior and lets the kernel efficiently pick "
+"up an unused port as long as 4-tuple is unique. Passing non-zero port might "
+"lead to degraded performance."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_xdp_adjust_tail(struct xdp_buff *>I<xdp_md>B<, int >I<delta>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Adjust (move) I<xdp_md>B<-E<gt>data_end> by I<delta> bytes. It is possible "
+"to both shrink and grow the packet tail. Shrink done via I<delta> being a "
+"negative integer."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_skb_get_xfrm_state(struct sk_buff *>I<skb>B<, u32 >I<index>B<, struct bpf_xfrm_state *>I<xfrm_state>B<, u32 >I<size>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"Retrieve the XFRM state (IP transform framework, see also B<ip-xfrm(8)>) at "
+"I<index> in XFRM \"security path\" for I<skb>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The retrieved value is stored in the B<struct bpf_xfrm_state> pointed by "
+"I<xfrm_state> and of length I<size>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper is available only if the kernel was compiled with B<CONFIG_XFRM> "
+"configuration option."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_get_stack(void *>I<ctx>B<, void *>I<buf>B<, u32 >I<size>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Return a user or a kernel stack in bpf program provided buffer. To achieve "
+"this, the helper needs I<ctx>, which is a pointer to the context on which "
+"the tracing program is executed. To store the stacktrace, the bpf program "
+"provides I<buf> with a nonnegative I<size>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The last argument, I<flags>, holds the number of stack frames to skip (from "
+"0 to 255), masked with B<BPF_F_SKIP_FIELD_MASK>\\&. The next bits can be "
+"used to set the following flags:"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<BPF_F_USER_BUILD_ID>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Collect (build_id, file_offset) instead of ips for user stack, only valid if "
+"B<BPF_F_USER_STACK> is also specified."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"I<file_offset> is an offset relative to the beginning of the executable or "
+"shared object file backing the vma which the I<ip> falls in. It is I<not> an "
+"offset relative to that object\\(aqs base address. Accordingly, it must be "
+"adjusted by adding (sh_addr - sh_offset), where sh_{addr,offset} correspond "
+"to the executable section containing I<file_offset> in the object, for "
+"comparisons to symbols\\(aq st_value to be valid."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<bpf_get_stack>() can collect up to B<PERF_MAX_STACK_DEPTH> both kernel and "
+"user frames, subject to sufficient large buffer size. Note that this limit "
+"can be controlled with the B<sysctl> program, and that it should be manually "
+"increased in order to profile long user stacks (such as stacks for Java "
+"programs). To do so, use:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The non-negative copied I<buf> length equal to or less than I<size> on "
+"success, or a negative error in case of failure."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_skb_load_bytes_relative(const void *>I<skb>B<, u32 >I<offset>B<, void *>I<to>B<, u32 >I<len>B<, u32 >I<start_header>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper is similar to B<bpf_skb_load_bytes>() in that it provides an "
+"easy way to load I<len> bytes from I<offset> from the packet associated to "
+"I<skb>, into the buffer pointed by I<to>\\&. The difference to "
+"B<bpf_skb_load_bytes>() is that a fifth argument I<start_header> exists in "
+"order to select a base offset to start from. I<start_header> can be one of:"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<BPF_HDR_START_MAC>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid "Base offset to load data from is I<skb>\\(aqs mac header."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<BPF_HDR_START_NET>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid "Base offset to load data from is I<skb>\\(aqs network header."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"In general, \"direct packet access\" is the preferred method to access "
+"packet data, however, this helper is in particular useful in socket filters "
+"where I<skb>B<-E<gt>data> does not always point to the start of the mac "
+"header and where \"direct packet access\" is not available."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_fib_lookup(void *>I<ctx>B<, struct bpf_fib_lookup *>I<params>B<, int >I<plen>B<, u32 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Do FIB lookup in kernel tables using parameters in I<params>\\&. If lookup "
+"is successful and result shows packet is to be forwarded, the neighbor "
+"tables are searched for the nexthop. If successful (ie., FIB lookup shows "
+"forwarding and nexthop is resolved), the nexthop address is returned in "
+"ipv4_dst or ipv6_dst based on family, smac is set to mac address of egress "
+"device, dmac is set to nexthop mac address, rt_metric is set to metric from "
+"route (IPv4/IPv6 only), and ifindex is set to the device index of the "
+"nexthop from the FIB lookup."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"I<plen> argument is the size of the passed in struct. I<flags> argument can "
+"be a combination of one or more of the following values:"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<BPF_FIB_LOOKUP_DIRECT>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Do a direct table lookup vs full lookup using FIB rules."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<BPF_FIB_LOOKUP_OUTPUT>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Perform lookup from an egress perspective (default is ingress)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"I<ctx> is either B<struct xdp_md> for XDP programs or B<struct sk_buff> tc "
+"cls_act programs."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "E<lt> 0 if any input argument is invalid"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "0 on success (packet is forwarded, nexthop neighbor exists)"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"E<gt> 0 one of B<BPF_FIB_LKUP_RET_> codes explaining why the packet is not "
+"forwarded or needs assist from full stack"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"If lookup fails with BPF_FIB_LKUP_RET_FRAG_NEEDED, then the MTU was exceeded "
+"and output params-E<gt>mtu_result contains the MTU."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_sock_hash_update(struct bpf_sock_ops *>I<skops>B<, struct bpf_map *>I<map>B<, void *>I<key>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Add an entry to, or update a sockhash I<map> referencing sockets. The "
+"I<skops> is used as a new value for the entry associated to I<key>\\&. "
+"I<flags> is one of:"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_msg_redirect_hash(struct sk_msg_buff *>I<msg>B<, struct bpf_map *>I<map>B<, void *>I<key>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper is used in programs implementing policies at the socket level. "
+"If the message I<msg> is allowed to pass (i.e. if the verdict eBPF program "
+"returns B<SK_PASS>), redirect it to the socket referenced by I<map> (of type "
+"B<BPF_MAP_TYPE_SOCKHASH>) using hash I<key>\\&. Both ingress and egress "
+"interfaces can be used for redirection. The B<BPF_F_INGRESS> value in "
+"I<flags> is used to make the distinction (ingress path is selected if the "
+"flag is present, egress path otherwise). This is the only flag supported for "
+"now."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_sk_redirect_hash(struct sk_buff *>I<skb>B<, struct bpf_map *>I<map>B<, void *>I<key>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper is used in programs implementing policies at the skb socket "
+"level. If the sk_buff I<skb> is allowed to pass (i.e. if the verdict eBPF "
+"program returns B<SK_PASS>), redirect it to the socket referenced by I<map> "
+"(of type B<BPF_MAP_TYPE_SOCKHASH>) using hash I<key>\\&. Both ingress and "
+"egress interfaces can be used for redirection. The B<BPF_F_INGRESS> value in "
+"I<flags> is used to make the distinction (ingress path is selected if the "
+"flag is present, egress otherwise). This is the only flag supported for now."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_lwt_push_encap(struct sk_buff *>I<skb>B<, u32 >I<type>B<, void *>I<hdr>B<, u32 >I<len>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Encapsulate the packet associated to I<skb> within a Layer 3 protocol "
+"header. This header is provided in the buffer at address I<hdr>, with I<len> "
+"its size in bytes. I<type> indicates the protocol of the header and can be "
+"one of:"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<BPF_LWT_ENCAP_SEG6>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"IPv6 encapsulation with Segment Routing Header (B<struct ipv6_sr_hdr>). "
+"I<hdr> only contains the SRH, the IPv6 header is computed by the kernel."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<BPF_LWT_ENCAP_SEG6_INLINE>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Only works if I<skb> contains an IPv6 packet. Insert a Segment Routing "
+"Header (B<struct ipv6_sr_hdr>) inside the IPv6 header."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<BPF_LWT_ENCAP_IP>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"IP encapsulation (GRE/GUE/IPIP/etc). The outer header must be IPv4 or IPv6, "
+"followed by zero or more additional headers, up to B<LWT_BPF_MAX_HEADROOM> "
+"total bytes in all prepended headers. Please note that if "
+"B<skb_is_gso>(I<skb>) is true, no more than two headers can be prepended, "
+"and the inner header, if present, should be either GRE or UDP/GUE."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<BPF_LWT_ENCAP_SEG6>* types can be called by BPF programs of type "
+"B<BPF_PROG_TYPE_LWT_IN>; B<BPF_LWT_ENCAP_IP> type can be called by bpf "
+"programs of types B<BPF_PROG_TYPE_LWT_IN> and B<BPF_PROG_TYPE_LWT_XMIT>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_lwt_seg6_store_bytes(struct sk_buff *>I<skb>B<, u32 >I<offset>B<, const void *>I<from>B<, u32 >I<len>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Store I<len> bytes from address I<from> into the packet associated to "
+"I<skb>, at I<offset>\\&. Only the flags, tag and TLVs inside the outermost "
+"IPv6 Segment Routing Header can be modified through this helper."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_lwt_seg6_adjust_srh(struct sk_buff *>I<skb>B<, u32 >I<offset>B<, s32 >I<delta>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Adjust the size allocated to TLVs in the outermost IPv6 Segment Routing "
+"Header contained in the packet associated to I<skb>, at position I<offset> "
+"by I<delta> bytes. Only offsets after the segments are accepted. I<delta> "
+"can be as well positive (growing) as negative (shrinking)."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_lwt_seg6_action(struct sk_buff *>I<skb>B<, u32 >I<action>B<, void *>I<param>B<, u32 >I<param_len>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Apply an IPv6 Segment Routing action of type I<action> to the packet "
+"associated to I<skb>\\&. Each action takes a parameter contained at address "
+"I<param>, and of length I<param_len> bytes. I<action> can be one of:"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<SEG6_LOCAL_ACTION_END_X>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"End.X action: Endpoint with Layer-3 cross-connect. Type of I<param>: "
+"B<struct in6_addr>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<SEG6_LOCAL_ACTION_END_T>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"End.T action: Endpoint with specific IPv6 table lookup. Type of I<param>: "
+"B<int>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<SEG6_LOCAL_ACTION_END_B6>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"End.B6 action: Endpoint bound to an SRv6 policy. Type of I<param>: B<struct "
+"ipv6_sr_hdr>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<SEG6_LOCAL_ACTION_END_B6_ENCAP>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"End.B6.Encap action: Endpoint bound to an SRv6 encapsulation policy. Type "
+"of I<param>: B<struct ipv6_sr_hdr>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_rc_repeat(void *>I<ctx>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper is used in programs implementing IR decoding, to report a "
+"successfully decoded repeat key message. This delays the generation of a key "
+"up event for previously generated key down event."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Some IR protocols like NEC have a special IR message for repeating last "
+"button, for when a button is held down."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "The I<ctx> should point to the lirc sample as passed into the program."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"This helper is only available is the kernel was compiled with the "
+"B<CONFIG_BPF_LIRC_MODE2> configuration option set to \"B<y>\"."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_rc_keydown(void *>I<ctx>B<, u32 >I<protocol>B<, u64 >I<scancode>B<, u32 >I<toggle>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper is used in programs implementing IR decoding, to report a "
+"successfully decoded key press with I<scancode>, I<toggle> value in the "
+"given I<protocol>\\&. The scancode will be translated to a keycode using the "
+"rc keymap, and reported as an input key down event. After a period a key up "
+"event is generated. This period can be extended by calling either "
+"B<bpf_rc_keydown>() again with the same values, or calling "
+"B<bpf_rc_repeat>()."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Some protocols include a toggle bit, in case the button was released and "
+"pressed again between consecutive scancodes."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The I<protocol> is the decoded protocol number (see B<enum rc_proto> for "
+"some predefined values)."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_skb_cgroup_id(struct sk_buff *>I<skb>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Return the cgroup v2 id of the socket associated with the I<skb>\\&. This "
+"is roughly similar to the B<bpf_get_cgroup_classid>() helper for cgroup v1 "
+"by providing a tag resp. identifier that can be matched on or used for map "
+"lookups e.g. to implement policy. The cgroup v2 id of a given path in the "
+"hierarchy is exposed in user space through the f_handle API in order to get "
+"to the same 64-bit id."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper can be used on TC egress path, but not on ingress, and is "
+"available only if the kernel was compiled with the "
+"B<CONFIG_SOCK_CGROUP_DATA> configuration option."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "The id is returned or 0 in case the id could not be retrieved."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_get_current_cgroup_id(void)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Get the current cgroup id based on the cgroup within which the current task "
+"is running."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"A 64-bit integer containing the current cgroup id based on the cgroup within "
+"which the current task is running."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<void *bpf_get_local_storage(void *>I<map>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Get the pointer to the local storage area. The type and the size of the "
+"local storage is defined by the I<map> argument. The I<flags> meaning is "
+"specific for each map type, and has to be 0 for cgroup local storage."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Depending on the BPF program type, a local storage area can be shared "
+"between multiple instances of the BPF program, running simultaneously."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"A user should care about the synchronization by himself. For example, by "
+"using the B<BPF_ATOMIC> instructions to alter the shared data."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "A pointer to the local storage area."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_sk_select_reuseport(struct sk_reuseport_md *>I<reuse>B<, struct bpf_map *>I<map>B<, void *>I<key>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Select a B<SO_REUSEPORT> socket from a B<BPF_MAP_TYPE_REUSEPORT_SOCKARRAY> "
+"I<map>\\&. It checks the selected socket is matching the incoming request "
+"in the socket buffer."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_skb_ancestor_cgroup_id(struct sk_buff *>I<skb>B<, int >I<ancestor_level>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Return id of cgroup v2 that is ancestor of cgroup associated with the I<skb> "
+"at the I<ancestor_level>\\&. The root cgroup is at I<ancestor_level> zero "
+"and each step down the hierarchy increments the level. If I<ancestor_level> "
+"== level of cgroup associated with I<skb>, then return value will be same as "
+"that of B<bpf_skb_cgroup_id>()."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The helper is useful to implement policies based on cgroups that are upper "
+"in hierarchy than immediate cgroup associated with I<skb>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The format of returned id and helper limitations are same as in "
+"B<bpf_skb_cgroup_id>()."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<struct bpf_sock *bpf_sk_lookup_tcp(void *>I<ctx>B<, struct bpf_sock_tuple *>I<tuple>B<, u32 >I<tuple_size>B<, u64 >I<netns>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Look for TCP socket matching I<tuple>, optionally in a child network "
+"namespace I<netns>\\&. The return value must be checked, and if non-B<NULL>, "
+"released via B<bpf_sk_release>()."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The I<ctx> should point to the context of the program, such as the skb or "
+"socket (depending on the hook in use). This is used to determine the base "
+"network namespace for the lookup."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "I<tuple_size> must be one of:"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<sizeof(>I<tuple>B<-E<gt>ipv4)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Look for an IPv4 socket."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<sizeof(>I<tuple>B<-E<gt>ipv6)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Look for an IPv6 socket."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"If the I<netns> is a negative signed 32-bit integer, then the socket lookup "
+"table in the netns associated with the I<ctx> will be used. For the TC "
+"hooks, this is the netns of the device in the skb. For socket hooks, this is "
+"the netns of the socket. If I<netns> is any other signed 32-bit value "
+"greater than or equal to zero then it specifies the ID of the netns relative "
+"to the netns associated with the I<ctx>\\&. I<netns> values beyond the range "
+"of 32-bit integers are reserved for future use."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper is available only if the kernel was compiled with B<CONFIG_NET> "
+"configuration option."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Pointer to B<struct bpf_sock>, or B<NULL> in case of failure. For sockets "
+"with reuseport option, the B<struct bpf_sock> result is from I<reuse>B<-"
+"E<gt>socks>[] using the hash of the tuple."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<struct bpf_sock *bpf_sk_lookup_udp(void *>I<ctx>B<, struct bpf_sock_tuple *>I<tuple>B<, u32 >I<tuple_size>B<, u64 >I<netns>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Look for UDP socket matching I<tuple>, optionally in a child network "
+"namespace I<netns>\\&. The return value must be checked, and if non-B<NULL>, "
+"released via B<bpf_sk_release>()."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_sk_release(void *>I<sock>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Release the reference held by I<sock>\\&. I<sock> must be a non-B<NULL> "
+"pointer that was returned from B<bpf_sk_lookup_xxx>()."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_map_push_elem(struct bpf_map *>I<map>B<, const void *>I<value>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Push an element I<value> in I<map>\\&. I<flags> is one of:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"If the queue/stack is full, the oldest element is removed to make room for "
+"this."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_map_pop_elem(struct bpf_map *>I<map>B<, void *>I<value>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Pop an element from I<map>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_map_peek_elem(struct bpf_map *>I<map>B<, void *>I<value>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Get an element from I<map> without removing it."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_msg_push_data(struct sk_msg_buff *>I<msg>B<, u32 >I<start>B<, u32 >I<len>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"For socket policies, insert I<len> bytes into I<msg> at offset I<start>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"If a program of type B<BPF_PROG_TYPE_SK_MSG> is run on a I<msg> it may want "
+"to insert metadata or options into the I<msg>\\&. This can later be read "
+"and used by any of the lower layer BPF hooks."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper may fail if under memory pressure (a malloc fails) in these "
+"cases BPF programs will get an appropriate error and BPF programs will need "
+"to handle them."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_msg_pop_data(struct sk_msg_buff *>I<msg>B<, u32 >I<start>B<, u32 >I<len>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Will remove I<len> bytes from a I<msg> starting at byte I<start>\\&. This "
+"may result in B<ENOMEM> errors under certain situations if an allocation and "
+"copy are required due to a full ring buffer. However, the helper will try "
+"to avoid doing the allocation if possible. Other errors can occur if input "
+"parameters are invalid either due to I<start> byte not being valid part of "
+"I<msg> payload and/or I<pop> value being to large."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_rc_pointer_rel(void *>I<ctx>B<, s32 >I<rel_x>B<, s32 >I<rel_y>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper is used in programs implementing IR decoding, to report a "
+"successfully decoded pointer movement."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_spin_lock(struct bpf_spin_lock *>I<lock>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Acquire a spinlock represented by the pointer I<lock>, which is stored as "
+"part of a value of a map. Taking the lock allows to safely update the rest "
+"of the fields in that value. The spinlock can (and must) later be released "
+"with a call to B<bpf_spin_unlock>(I<lock>)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Spinlocks in BPF programs come with a number of restrictions and constraints:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<bpf_spin_lock> objects are only allowed inside maps of types "
+"B<BPF_MAP_TYPE_HASH> and B<BPF_MAP_TYPE_ARRAY> (this list could be extended "
+"in the future)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "BTF description of the map is mandatory."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The BPF program can take ONE lock at a time, since taking two or more could "
+"cause dead locks."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Only one B<struct bpf_spin_lock> is allowed per map element."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"When the lock is taken, calls (either BPF to BPF or helpers) are not "
+"allowed."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The B<BPF_LD_ABS> and B<BPF_LD_IND> instructions are not allowed inside a "
+"spinlock-ed region."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The BPF program MUST call B<bpf_spin_unlock>() to release the lock, on all "
+"execution paths, before it returns."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The BPF program can access B<struct bpf_spin_lock> only via the "
+"B<bpf_spin_lock>() and B<bpf_spin_unlock>() helpers. Loading or storing "
+"data into the B<struct bpf_spin_lock> I<lock>B<;> field of a map is not "
+"allowed."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"To use the B<bpf_spin_lock>() helper, the BTF description of the map value "
+"must be a struct and have B<struct bpf_spin_lock> I<anyname>B<;> field at "
+"the top level. Nested lock inside another struct is not allowed."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The B<struct bpf_spin_lock> I<lock> field in a map value must be aligned on "
+"a multiple of 4 bytes in that value."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Syscall with command B<BPF_MAP_LOOKUP_ELEM> does not copy the "
+"B<bpf_spin_lock> field to user space."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Syscall with command B<BPF_MAP_UPDATE_ELEM>, or update from a BPF program, "
+"do not update the B<bpf_spin_lock> field."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<bpf_spin_lock> cannot be on the stack or inside a networking packet (it "
+"can only be inside of a map values)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<bpf_spin_lock> is available to root only."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Tracing programs and socket filter programs cannot use B<bpf_spin_lock>() "
+"due to insufficient preemption checks (but this may change in the future)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<bpf_spin_lock> is not allowed in inner maps of map-in-map."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_spin_unlock(struct bpf_spin_lock *>I<lock>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Release the I<lock> previously locked by a call to B<bpf_spin_lock>(I<lock>)."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<struct bpf_sock *bpf_sk_fullsock(struct bpf_sock *>I<sk>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper gets a B<struct bpf_sock> pointer such that all the fields in "
+"this B<bpf_sock> can be accessed."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "A B<struct bpf_sock> pointer on success, or B<NULL> in case of failure."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<struct bpf_tcp_sock *bpf_tcp_sock(struct bpf_sock *>I<sk>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper gets a B<struct bpf_tcp_sock> pointer from a B<struct bpf_sock> "
+"pointer."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"A B<struct bpf_tcp_sock> pointer on success, or B<NULL> in case of failure."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_skb_ecn_set_ce(struct sk_buff *>I<skb>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Set ECN (Explicit Congestion Notification) field of IP header to B<CE> "
+"(Congestion Encountered) if current value is B<ECT> (ECN Capable Transport). "
+"Otherwise, do nothing. Works with IPv6 and IPv4."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"1 if the B<CE> flag is set (either by the current helper call or because it "
+"was already present), 0 if it is not set."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<struct bpf_sock *bpf_get_listener_sock(struct bpf_sock *>I<sk>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Return a B<struct bpf_sock> pointer in B<TCP_LISTEN> state. "
+"B<bpf_sk_release>() is unnecessary and not allowed."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<struct bpf_sock *bpf_skc_lookup_tcp(void *>I<ctx>B<, struct bpf_sock_tuple *>I<tuple>B<, u32 >I<tuple_size>B<, u64 >I<netns>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This function is identical to B<bpf_sk_lookup_tcp>(), except that it also "
+"returns timewait or request sockets. Use B<bpf_sk_fullsock>() or "
+"B<bpf_tcp_sock>() to access the full structure."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_tcp_check_syncookie(void *>I<sk>B<, void *>I<iph>B<, u32 >I<iph_len>B<, struct tcphdr *>I<th>B<, u32 >I<th_len>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Check whether I<iph> and I<th> contain a valid SYN cookie ACK for the "
+"listening socket in I<sk>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"I<iph> points to the start of the IPv4 or IPv6 header, while I<iph_len> "
+"contains B<sizeof>(B<struct iphdr>) or B<sizeof>(B<struct ipv6hdr>)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"I<th> points to the start of the TCP header, while I<th_len> contains the "
+"length of the TCP header (at least B<sizeof>(B<struct tcphdr>))."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"0 if I<iph> and I<th> are a valid SYN cookie ACK, or a negative error "
+"otherwise."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_sysctl_get_name(struct bpf_sysctl *>I<ctx>B<, char *>I<buf>B<, size_t >I<buf_len>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Get name of sysctl in /proc/sys/ and copy it into provided by program buffer "
+"I<buf> of size I<buf_len>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid "The buffer is always NUL terminated, unless it\\(aqs zero-sized."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"If I<flags> is zero, full name (e.g. \"net/ipv4/tcp_mem\") is copied. Use "
+"B<BPF_F_SYSCTL_BASE_NAME> flag to copy base name only (e.g. \"tcp_mem\")."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Number of character copied (not including the trailing NUL)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"B<-E2BIG> if the buffer wasn\\(aqt big enough (I<buf> will contain truncated "
+"name in this case)."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_sysctl_get_current_value(struct bpf_sysctl *>I<ctx>B<, char *>I<buf>B<, size_t >I<buf_len>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Get current value of sysctl as it is presented in /proc/sys (incl. newline, "
+"etc), and copy it as a string into provided by program buffer I<buf> of size "
+"I<buf_len>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The whole value is copied, no matter what file position user space issued e."
+"g. sys_read at."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<-EINVAL> if current value was unavailable, e.g. because sysctl is "
+"uninitialized and read returns -EIO for it."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_sysctl_get_new_value(struct bpf_sysctl *>I<ctx>B<, char *>I<buf>B<, size_t >I<buf_len>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Get new value being written by user space to sysctl (before the actual write "
+"happens) and copy it as a string into provided by program buffer I<buf> of "
+"size I<buf_len>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "User space may write new value at file position E<gt> 0."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-EINVAL> if sysctl is being read."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_sysctl_set_new_value(struct bpf_sysctl *>I<ctx>B<, const char *>I<buf>B<, size_t >I<buf_len>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Override new value being written by user space to sysctl with value provided "
+"by program in buffer I<buf> of size I<buf_len>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"I<buf> should contain a string in same form as provided by user space on "
+"sysctl write."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"User space may write new value at file position E<gt> 0. To override the "
+"whole sysctl value file position should be set to zero."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "0 on success."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-E2BIG> if the I<buf_len> is too big."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_strtol(const char *>I<buf>B<, size_t >I<buf_len>B<, u64 >I<flags>B<, long *>I<res>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Convert the initial part of the string from buffer I<buf> of size I<buf_len> "
+"to a long integer according to the given base and save the result in "
+"I<res>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"The string may begin with an arbitrary amount of white space (as determined "
+"by B<isspace>(3)) followed by a single optional \\(aqB<->\\(aq sign."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Five least significant bits of I<flags> encode base, other bits are "
+"currently unused."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Base must be either 8, 10, 16 or 0 to detect it automatically similar to "
+"user space B<strtol>(3)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Number of characters consumed on success. Must be positive but no more than "
+"I<buf_len>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<-EINVAL> if no valid digits were found or unsupported base was provided."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-ERANGE> if resulting value was out of range."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_strtoul(const char *>I<buf>B<, size_t >I<buf_len>B<, u64 >I<flags>B<, unsigned long *>I<res>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Convert the initial part of the string from buffer I<buf> of size I<buf_len> "
+"to an unsigned long integer according to the given base and save the result "
+"in I<res>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The string may begin with an arbitrary amount of white space (as determined "
+"by B<isspace>(3))."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Base must be either 8, 10, 16 or 0 to detect it automatically similar to "
+"user space B<strtoul>(3)."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<void *bpf_sk_storage_get(struct bpf_map *>I<map>B<, void *>I<sk>B<, void *>I<value>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Get a bpf-local-storage from a I<sk>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Logically, it could be thought of getting the value from a I<map> with I<sk> "
+"as the B<key>\\&. From this perspective, the usage is not much different "
+"from B<bpf_map_lookup_elem>(I<map>, B<&>I<sk>) except this helper enforces "
+"the key must be a full socket and the map must be a "
+"B<BPF_MAP_TYPE_SK_STORAGE> also."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"Underneath, the value is stored locally at I<sk> instead of the I<map>\\&. "
+"The I<map> is used as the bpf-local-storage \"type\". The bpf-local-storage "
+"\"type\" (i.e. the I<map>) is searched against all bpf-local-storages "
+"residing at I<sk>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"I<sk> is a kernel B<struct sock> pointer for LSM program. I<sk> is a "
+"B<struct bpf_sock> pointer for other program types."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"An optional I<flags> (B<BPF_SK_STORAGE_GET_F_CREATE>) can be used such that "
+"a new bpf-local-storage will be created if one does not exist. I<value> can "
+"be used together with B<BPF_SK_STORAGE_GET_F_CREATE> to specify the initial "
+"value of a bpf-local-storage. If I<value> is B<NULL>, the new bpf-local-"
+"storage will be zero initialized."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "A bpf-local-storage pointer is returned on success."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<NULL> if not found or there was an error in adding a new bpf-local-storage."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_sk_storage_delete(struct bpf_map *>I<map>B<, void *>I<sk>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Delete a bpf-local-storage from a I<sk>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<-ENOENT> if the bpf-local-storage cannot be found. B<-EINVAL> if sk is "
+"not a fullsock (e.g. a request_sock)."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_send_signal(u32 >I<sig>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"Send signal I<sig> to the process of the current task. The signal may be "
+"delivered to any of this process\\(aqs threads."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "0 on success or successfully queued."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-EBUSY> if work queue under nmi is full."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-EINVAL> if I<sig> is invalid."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-EPERM> if no permission to send the I<sig>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-EAGAIN> if bpf program can try again."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<s64 bpf_tcp_gen_syncookie(void *>I<sk>B<, void *>I<iph>B<, u32 >I<iph_len>B<, struct tcphdr *>I<th>B<, u32 >I<th_len>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Try to issue a SYN cookie for the packet with corresponding IP/TCP headers, "
+"I<iph> and I<th>, on the listening socket in I<sk>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"I<th> points to the start of the TCP header, while I<th_len> contains the "
+"length of the TCP header with options (at least B<sizeof>(B<struct tcphdr>))."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"On success, lower 32 bits hold the generated SYN cookie in followed by 16 "
+"bits which hold the MSS value for that cookie, and the top 16 bits are "
+"unused."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "On failure, the returned value is one of the following:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-EINVAL> SYN cookie cannot be issued due to error"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-ENOENT> SYN cookie should not be issued (no SYN flood)"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-EOPNOTSUPP> kernel configuration does not enable SYN cookies"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-EPROTONOSUPPORT> IP packet version is not 4 or 6"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_skb_output(void *>I<ctx>B<, struct bpf_map *>I<map>B<, u64 >I<flags>B<, void *>I<data>B<, u64 >I<size>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "I<ctx> is a pointer to in-kernel struct sk_buff."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper is similar to B<bpf_perf_event_output>() but restricted to "
+"raw_tracepoint bpf programs."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_probe_read_user(void *>I<dst>B<, u32 >I<size>B<, const void *>I<unsafe_ptr>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Safely attempt to read I<size> bytes from user space address I<unsafe_ptr> "
+"and store the data in I<dst>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_probe_read_kernel(void *>I<dst>B<, u32 >I<size>B<, const void *>I<unsafe_ptr>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Safely attempt to read I<size> bytes from kernel space address I<unsafe_ptr> "
+"and store the data in I<dst>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_probe_read_user_str(void *>I<dst>B<, u32 >I<size>B<, const void *>I<unsafe_ptr>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Copy a NUL terminated string from an unsafe user address I<unsafe_ptr> to "
+"I<dst>\\&. The I<size> should include the terminating NUL byte. In case the "
+"string length is smaller than I<size>, the target is not padded with further "
+"NUL bytes. If the string length is larger than I<size>, just I<size>-1 bytes "
+"are copied and the last byte is set to NUL."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"On success, returns the number of bytes that were written, including the "
+"terminal NUL. This makes this helper useful in tracing programs for reading "
+"strings, and more importantly to get its length at runtime. See the "
+"following snippet:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"^\".ft C$\n"
+"SEC(\"kprobe/sys_open\")\n"
+"void bpf_sys_open(struct pt_regs *ctx)\n"
+"{\n"
+" char buf[PATHLEN]; // PATHLEN is defined to 256\n"
+" int res;\n"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+#, no-wrap
+msgid ""
+" res = bpf_probe_read_user_str(buf, sizeof(buf),\n"
+" ctx-E<gt>di);\n"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid ""
+" // Consume buf, for example push it to\n"
+" // userspace via bpf_perf_event_output(); we\n"
+" // can use res (the string length) as event\n"
+" // size, after checking its boundaries.\n"
+"}\n"
+"^\".ft P$\n"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"In comparison, using B<bpf_probe_read_user>() helper here instead to read "
+"the string would require to estimate the length at compile time, and would "
+"often result in copying more memory than necessary."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Another useful use case is when parsing individual process arguments or "
+"individual environment variables navigating I<current>B<-E<gt>mm-"
+"E<gt>arg_start> and I<current>B<-E<gt>mm-E<gt>env_start>: using this helper "
+"and the return value, one can quickly iterate at the right offset of the "
+"memory area."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"On success, the strictly positive length of the output string, including the "
+"trailing NUL character. On error, a negative value."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_probe_read_kernel_str(void *>I<dst>B<, u32 >I<size>B<, const void *>I<unsafe_ptr>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Copy a NUL terminated string from an unsafe kernel address I<unsafe_ptr> to "
+"I<dst>\\&. Same semantics as with B<bpf_probe_read_user_str>() apply."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_tcp_send_ack(void *>I<tp>B<, u32 >I<rcv_nxt>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Send out a tcp-ack. I<tp> is the in-kernel struct B<tcp_sock>\\&. "
+"I<rcv_nxt> is the ack_seq to be sent out."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_send_signal_thread(u32 >I<sig>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Send signal I<sig> to the thread corresponding to the current task."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_jiffies64(void)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Obtain the 64bit jiffies"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "The 64 bit jiffies"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_read_branch_records(struct bpf_perf_event_data *>I<ctx>B<, void *>I<buf>B<, u32 >I<size>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"For an eBPF program attached to a perf event, retrieve the branch records "
+"(B<struct perf_branch_entry>) associated to I<ctx> and store it in the "
+"buffer pointed by I<buf> up to size I<size> bytes."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"On success, number of bytes written to I<buf>\\&. On error, a negative value."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The I<flags> can be set to B<BPF_F_GET_BRANCH_RECORDS_SIZE> to instead "
+"return the number of bytes required to store all the branch entries. If this "
+"flag is set, I<buf> may be NULL."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<-EINVAL> if arguments invalid or B<size> not a multiple of "
+"B<sizeof>(B<struct perf_branch_entry>)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-ENOENT> if architecture does not support branch records."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_get_ns_current_pid_tgid(u64 >I<dev>B<, u64 >I<ino>B<, struct bpf_pidns_info *>I<nsdata>B<, u32 >I<size>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Returns 0 on success, values for I<pid> and I<tgid> as seen from the current "
+"I<namespace> will be returned in I<nsdata>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "0 on success, or one of the following in case of failure:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"B<-EINVAL> if dev and inum supplied don\\(aqt match dev_t and inode number "
+"with nsfs of current task, or if dev conversion to dev_t lost high bits."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-ENOENT> if pidns does not exists for the current task."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_xdp_output(void *>I<ctx>B<, struct bpf_map *>I<map>B<, u64 >I<flags>B<, void *>I<data>B<, u64 >I<size>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "I<ctx> is a pointer to in-kernel struct xdp_buff."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper is similar to B<bpf_perf_eventoutput>() but restricted to "
+"raw_tracepoint bpf programs."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_get_netns_cookie(void *>I<ctx>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Retrieve the cookie (generated by the kernel) of the network namespace the "
+"input I<ctx> is associated with. The network namespace cookie remains stable "
+"for its lifetime and provides a global identifier that can be assumed "
+"unique. If I<ctx> is NULL, then the helper returns the cookie for the "
+"initial network namespace. The cookie itself is very similar to that of "
+"B<bpf_get_socket_cookie>() helper, but for network namespaces instead of "
+"sockets."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "A 8-byte long opaque number."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_get_current_ancestor_cgroup_id(int >I<ancestor_level>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Return id of cgroup v2 that is ancestor of the cgroup associated with the "
+"current task at the I<ancestor_level>\\&. The root cgroup is at "
+"I<ancestor_level> zero and each step down the hierarchy increments the "
+"level. If I<ancestor_level> == level of cgroup associated with the current "
+"task, then return value will be the same as that of "
+"B<bpf_get_current_cgroup_id>()."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The helper is useful to implement policies based on cgroups that are upper "
+"in hierarchy than immediate cgroup associated with the current task."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The format of returned id and helper limitations are same as in "
+"B<bpf_get_current_cgroup_id>()."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_sk_assign(struct sk_buff *>I<skb>B<, void *>I<sk>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Helper is overloaded depending on BPF program type. This description applies "
+"to B<BPF_PROG_TYPE_SCHED_CLS> and B<BPF_PROG_TYPE_SCHED_ACT> programs."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Assign the I<sk> to the I<skb>\\&. When combined with appropriate routing "
+"configuration to receive the packet towards the socket, will cause I<skb> to "
+"be delivered to the specified socket. Subsequent redirection of I<skb> via "
+"B<bpf_redirect>(), B<bpf_clone_redirect>() or other methods outside of BPF "
+"may interfere with successful delivery to the socket."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "This operation is only valid from TC ingress path."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "The I<flags> argument must be zero."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "0 on success, or a negative error in case of failure:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-EINVAL> if specified I<flags> are not supported."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-ENOENT> if the socket is unavailable for assignment."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-ENETUNREACH> if the socket is unreachable (wrong netns)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<-EOPNOTSUPP> if the operation is not supported, for example a call from "
+"outside of TC ingress."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-ESOCKTNOSUPPORT> if the socket type is not supported (reuseport)."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_sk_assign(struct bpf_sk_lookup *>I<ctx>B<, struct bpf_sock *>I<sk>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Helper is overloaded depending on BPF program type. This description applies "
+"to B<BPF_PROG_TYPE_SK_LOOKUP> programs."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Select the I<sk> as a result of a socket lookup."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"For the operation to succeed passed socket must be compatible with the "
+"packet description provided by the I<ctx> object."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"L4 protocol (B<IPPROTO_TCP> or B<IPPROTO_UDP>) must be an exact match. While "
+"IP family (B<AF_INET> or B<AF_INET6>) must be compatible, that is IPv6 "
+"sockets that are not v6-only can be selected for IPv4 packets."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Only TCP listeners and UDP unconnected sockets can be selected. I<sk> can "
+"also be NULL to reset any previous selection."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "I<flags> argument can combination of following values:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<BPF_SK_LOOKUP_F_REPLACE> to override the previous socket selection, "
+"potentially done by a BPF program that ran before us."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<BPF_SK_LOOKUP_F_NO_REUSEPORT> to skip load-balancing within reuseport "
+"group for the socket being selected."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "On success I<ctx-E<gt>sk> will point to the selected socket."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "0 on success, or a negative errno in case of failure."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<-EAFNOSUPPORT> if socket family (I<sk-E<gt>family>) is not compatible with "
+"packet family (I<ctx-E<gt>family>)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<-EEXIST> if socket has been already selected, potentially by another "
+"program, and B<BPF_SK_LOOKUP_F_REPLACE> flag was not specified."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-EINVAL> if unsupported flags were specified."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"B<-EPROTOTYPE> if socket L4 protocol (I<sk-E<gt>protocol>) doesn\\(aqt match "
+"packet protocol (I<ctx-E<gt>protocol>)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<-ESOCKTNOSUPPORT> if socket is not in allowed state (TCP listening or UDP "
+"unconnected)."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_ktime_get_boot_ns(void)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Return the time elapsed since system boot, in nanoseconds. Does include the "
+"time the system was suspended. See: B<clock_gettime>(B<CLOCK_BOOTTIME>)"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_seq_printf(struct seq_file *>I<m>B<, const char *>I<fmt>B<, u32 >I<fmt_size>B<, const void *>I<data>B<, u32 >I<data_len>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<bpf_seq_printf>() uses seq_file B<seq_printf>() to print out the format "
+"string. The I<m> represents the seq_file. The I<fmt> and I<fmt_size> are "
+"for the format string itself. The I<data> and I<data_len> are format string "
+"arguments. The I<data> are a B<u64> array and corresponding format string "
+"values are stored in the array. For strings and pointers where pointees are "
+"accessed, only the pointer values are stored in the I<data> array. The "
+"I<data_len> is the size of I<data> in bytes - must be a multiple of 8."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Formats B<%s>, B<%p{i,I}{4,6}> requires to read kernel memory. Reading "
+"kernel memory may fail due to either invalid address or valid address but "
+"requiring a major memory fault. If reading kernel memory fails, the string "
+"for B<%s> will be an empty string, and the ip address for B<%p{i,I}{4,6}> "
+"will be 0. Not returning error to bpf program is consistent with what "
+"B<bpf_trace_printk>() does for now."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<-EBUSY> if per-CPU memory copy buffer is busy, can try again by returning "
+"1 from bpf program."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<-EINVAL> if arguments are invalid, or if I<fmt> is invalid/unsupported."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-E2BIG> if I<fmt> contains too many format specifiers."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<-EOVERFLOW> if an overflow happened: The same object will be tried again."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_seq_write(struct seq_file *>I<m>B<, const void *>I<data>B<, u32 >I<len>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<bpf_seq_write>() uses seq_file B<seq_write>() to write the data. The I<m> "
+"represents the seq_file. The I<data> and I<len> represent the data to write "
+"in bytes."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_sk_cgroup_id(void *>I<sk>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Return the cgroup v2 id of the socket I<sk>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"I<sk> must be a non-B<NULL> pointer to a socket, e.g. one returned from "
+"B<bpf_sk_lookup_xxx>(), B<bpf_sk_fullsock>(), etc. The format of returned id "
+"is same as in B<bpf_skb_cgroup_id>()."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper is available only if the kernel was compiled with the "
+"B<CONFIG_SOCK_CGROUP_DATA> configuration option."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_sk_ancestor_cgroup_id(void *>I<sk>B<, int >I<ancestor_level>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Return id of cgroup v2 that is ancestor of cgroup associated with the I<sk> "
+"at the I<ancestor_level>\\&. The root cgroup is at I<ancestor_level> zero "
+"and each step down the hierarchy increments the level. If I<ancestor_level> "
+"== level of cgroup associated with I<sk>, then return value will be same as "
+"that of B<bpf_sk_cgroup_id>()."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The helper is useful to implement policies based on cgroups that are upper "
+"in hierarchy than immediate cgroup associated with I<sk>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The format of returned id and helper limitations are same as in "
+"B<bpf_sk_cgroup_id>()."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_ringbuf_output(void *>I<ringbuf>B<, void *>I<data>B<, u64 >I<size>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Copy I<size> bytes from I<data> into a ring buffer I<ringbuf>\\&. If "
+"B<BPF_RB_NO_WAKEUP> is specified in I<flags>, no notification of new data "
+"availability is sent. If B<BPF_RB_FORCE_WAKEUP> is specified in I<flags>, "
+"notification of new data availability is sent unconditionally. If B<0> is "
+"specified in I<flags>, an adaptive notification of new data availability is "
+"sent."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"An adaptive notification is a notification sent whenever the user-space "
+"process has caught up and consumed all available payloads. In case the user-"
+"space process is still processing a previous payload, then no notification "
+"is needed as it will process the newly added payload automatically."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<void *bpf_ringbuf_reserve(void *>I<ringbuf>B<, u64 >I<size>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Reserve I<size> bytes of payload in a ring buffer I<ringbuf>\\&. I<flags> "
+"must be 0."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Valid pointer with I<size> bytes of memory available; NULL, otherwise."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<void bpf_ringbuf_submit(void *>I<data>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Submit reserved ring buffer sample, pointed to by I<data>\\&. If "
+"B<BPF_RB_NO_WAKEUP> is specified in I<flags>, no notification of new data "
+"availability is sent. If B<BPF_RB_FORCE_WAKEUP> is specified in I<flags>, "
+"notification of new data availability is sent unconditionally. If B<0> is "
+"specified in I<flags>, an adaptive notification of new data availability is "
+"sent."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"See \\(aqbpf_ringbuf_output()\\(aq for the definition of adaptive "
+"notification."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Nothing. Always succeeds."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<void bpf_ringbuf_discard(void *>I<data>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Discard reserved ring buffer sample, pointed to by I<data>\\&. If "
+"B<BPF_RB_NO_WAKEUP> is specified in I<flags>, no notification of new data "
+"availability is sent. If B<BPF_RB_FORCE_WAKEUP> is specified in I<flags>, "
+"notification of new data availability is sent unconditionally. If B<0> is "
+"specified in I<flags>, an adaptive notification of new data availability is "
+"sent."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_ringbuf_query(void *>I<ringbuf>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Query various characteristics of provided ring buffer. What exactly is "
+"queries is determined by I<flags>:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<BPF_RB_AVAIL_DATA>: Amount of data not yet consumed."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<BPF_RB_RING_SIZE>: The size of ring buffer."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<BPF_RB_CONS_POS>: Consumer position (can wrap around)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<BPF_RB_PROD_POS>: Producer(s) position (can wrap around)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Data returned is just a momentary snapshot of actual values and could be "
+"inaccurate, so this facility should be used to power heuristics and for "
+"reporting, not to make 100% correct calculation."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Requested value, or 0, if I<flags> are not recognized."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_csum_level(struct sk_buff *>I<skb>B<, u64 >I<level>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Change the skbs checksum level by one layer up or down, or reset it entirely "
+"to none in order to have the stack perform checksum validation. The level is "
+"applicable to the following protocols: TCP, UDP, GRE, SCTP, FCOE. For "
+"example, a decap of | ETH | IP | UDP | GUE | IP | TCP | into | ETH | IP | "
+"TCP | through B<bpf_skb_adjust_room>() helper with passing in "
+"B<BPF_F_ADJ_ROOM_NO_CSUM_RESET> flag would require one call to "
+"B<bpf_csum_level>() with B<BPF_CSUM_LEVEL_DEC> since the UDP header is "
+"removed. Similarly, an encap of the latter into the former could be "
+"accompanied by a helper call to B<bpf_csum_level>() with "
+"B<BPF_CSUM_LEVEL_INC> if the skb is still intended to be processed in higher "
+"layers of the stack instead of just egressing at tc."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "There are three supported level settings at this time:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<BPF_CSUM_LEVEL_INC>: Increases skb-E<gt>csum_level for skbs with "
+"CHECKSUM_UNNECESSARY."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<BPF_CSUM_LEVEL_DEC>: Decreases skb-E<gt>csum_level for skbs with "
+"CHECKSUM_UNNECESSARY."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<BPF_CSUM_LEVEL_RESET>: Resets skb-E<gt>csum_level to 0 and sets "
+"CHECKSUM_NONE to force checksum validation by the stack."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<BPF_CSUM_LEVEL_QUERY>: No-op, returns the current skb-E<gt>csum_level."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"0 on success, or a negative error in case of failure. In the case of "
+"B<BPF_CSUM_LEVEL_QUERY>, the current skb-E<gt>csum_level is returned or the "
+"error code -EACCES in case the skb is not subject to CHECKSUM_UNNECESSARY."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<struct tcp6_sock *bpf_skc_to_tcp6_sock(void *>I<sk>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Dynamically cast a I<sk> pointer to a I<tcp6_sock> pointer."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "I<sk> if casting is valid, or B<NULL> otherwise."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<struct tcp_sock *bpf_skc_to_tcp_sock(void *>I<sk>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Dynamically cast a I<sk> pointer to a I<tcp_sock> pointer."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<struct tcp_timewait_sock *bpf_skc_to_tcp_timewait_sock(void *>I<sk>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Dynamically cast a I<sk> pointer to a I<tcp_timewait_sock> pointer."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<struct tcp_request_sock *bpf_skc_to_tcp_request_sock(void *>I<sk>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Dynamically cast a I<sk> pointer to a I<tcp_request_sock> pointer."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<struct udp6_sock *bpf_skc_to_udp6_sock(void *>I<sk>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Dynamically cast a I<sk> pointer to a I<udp6_sock> pointer."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_get_task_stack(struct task_struct *>I<task>B<, void *>I<buf>B<, u32 >I<size>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Return a user or a kernel stack in bpf program provided buffer. To achieve "
+"this, the helper needs I<task>, which is a valid pointer to B<struct "
+"task_struct>\\&. To store the stacktrace, the bpf program provides I<buf> "
+"with a nonnegative I<size>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Collect buildid+offset instead of ips for user stack, only valid if "
+"B<BPF_F_USER_STACK> is also specified."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<bpf_get_task_stack>() can collect up to B<PERF_MAX_STACK_DEPTH> both "
+"kernel and user frames, subject to sufficient large buffer size. Note that "
+"this limit can be controlled with the B<sysctl> program, and that it should "
+"be manually increased in order to profile long user stacks (such as stacks "
+"for Java programs). To do so, use:"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_load_hdr_opt(struct bpf_sock_ops *>I<skops>B<, void *>I<searchby_res>B<, u32 >I<len>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Load header option. Support reading a particular TCP header option for bpf "
+"program (B<BPF_PROG_TYPE_SOCK_OPS>)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"If I<flags> is 0, it will search the option from the I<skops>B<-"
+"E<gt>skb_data>\\&. The comment in B<struct bpf_sock_ops> has details on "
+"what skb_data contains under different I<skops>B<-E<gt>op>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The first byte of the I<searchby_res> specifies the kind that it wants to "
+"search."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"If the searching kind is an experimental kind (i.e. 253 or 254 according to "
+"RFC6994). It also needs to specify the \"magic\" which is either 2 bytes or "
+"4 bytes. It then also needs to specify the size of the magic by using the "
+"2nd byte which is \"kind-length\" of a TCP header option and the \"kind-"
+"length\" also includes the first 2 bytes \"kind\" and \"kind-length\" itself "
+"as a normal TCP header option also does."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"For example, to search experimental kind 254 with 2 byte magic 0xeB9F, the "
+"searchby_res should be [ 254, 4, 0xeB, 0x9F, 0, 0, .... 0 ]."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"To search for the standard window scale option (3), the I<searchby_res> "
+"should be [ 3, 0, 0, .... 0 ]. Note, kind-length must be 0 for regular "
+"option."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Searching for No-Op (0) and End-of-Option-List (1) are not supported."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"I<len> must be at least 2 bytes which is the minimal size of a header option."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Supported flags:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<BPF_LOAD_HDR_OPT_TCP_SYN> to search from the saved_syn packet or the just-"
+"received syn packet."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"E<gt> 0 when found, the header option is copied to I<searchby_res>\\&. The "
+"return value is the total length copied. On failure, a negative error code "
+"is returned:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-EINVAL> if a parameter is invalid."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-ENOMSG> if the option is not found."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<-ENOENT> if no syn packet is available when B<BPF_LOAD_HDR_OPT_TCP_SYN> is "
+"used."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<-ENOSPC> if there is not enough space. Only I<len> number of bytes are "
+"copied."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-EFAULT> on failure to parse the header options in the packet."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<-EPERM> if the helper cannot be used under the current I<skops>B<-"
+"E<gt>op>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_store_hdr_opt(struct bpf_sock_ops *>I<skops>B<, const void *>I<from>B<, u32 >I<len>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Store header option. The data will be copied from buffer I<from> with "
+"length I<len> to the TCP header."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The buffer I<from> should have the whole option that includes the kind, kind-"
+"length, and the actual option data. The I<len> must be at least kind-length "
+"long. The kind-length does not have to be 4 byte aligned. The kernel will "
+"take care of the padding and setting the 4 bytes aligned value to th-"
+"E<gt>doff."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper will check for duplicated option by searching the same option in "
+"the outgoing skb."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper can only be called during B<BPF_SOCK_OPS_WRITE_HDR_OPT_CB>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "0 on success, or negative error in case of failure:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-EINVAL> If param is invalid."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<-ENOSPC> if there is not enough space in the header. Nothing has been "
+"written"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-EEXIST> if the option already exists."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-EFAULT> on failure to parse the existing header options."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_reserve_hdr_opt(struct bpf_sock_ops *>I<skops>B<, u32 >I<len>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Reserve I<len> bytes for the bpf header option. The space will be used by "
+"B<bpf_store_hdr_opt>() later in B<BPF_SOCK_OPS_WRITE_HDR_OPT_CB>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"If B<bpf_reserve_hdr_opt>() is called multiple times, the total number of "
+"bytes will be reserved."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper can only be called during B<BPF_SOCK_OPS_HDR_OPT_LEN_CB>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-ENOSPC> if there is not enough space in the header."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<void *bpf_inode_storage_get(struct bpf_map *>I<map>B<, void *>I<inode>B<, void *>I<value>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Get a bpf_local_storage from an I<inode>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Logically, it could be thought of as getting the value from a I<map> with "
+"I<inode> as the B<key>\\&. From this perspective, the usage is not much "
+"different from B<bpf_map_lookup_elem>(I<map>, B<&>I<inode>) except this "
+"helper enforces the key must be an inode and the map must also be a "
+"B<BPF_MAP_TYPE_INODE_STORAGE>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"Underneath, the value is stored locally at I<inode> instead of the "
+"I<map>\\&. The I<map> is used as the bpf-local-storage \"type\". The bpf-"
+"local-storage \"type\" (i.e. the I<map>) is searched against all "
+"bpf_local_storage residing at I<inode>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"An optional I<flags> (B<BPF_LOCAL_STORAGE_GET_F_CREATE>) can be used such "
+"that a new bpf_local_storage will be created if one does not exist. "
+"I<value> can be used together with B<BPF_LOCAL_STORAGE_GET_F_CREATE> to "
+"specify the initial value of a bpf_local_storage. If I<value> is B<NULL>, "
+"the new bpf_local_storage will be zero initialized."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "A bpf_local_storage pointer is returned on success."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<NULL> if not found or there was an error in adding a new bpf_local_storage."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<int bpf_inode_storage_delete(struct bpf_map *>I<map>B<, void *>I<inode>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Delete a bpf_local_storage from an I<inode>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-ENOENT> if the bpf_local_storage cannot be found."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_d_path(struct path *>I<path>B<, char *>I<buf>B<, u32 >I<sz>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Return full path for given B<struct path> object, which needs to be the "
+"kernel BTF I<path> object. The path is returned in the provided buffer "
+"I<buf> of size I<sz> and is zero terminated."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_copy_from_user(void *>I<dst>B<, u32 >I<size>B<, const void *>I<user_ptr>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Read I<size> bytes from user space address I<user_ptr> and store the data in "
+"I<dst>\\&. This is a wrapper of B<copy_from_user>()."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_snprintf_btf(char *>I<str>B<, u32 >I<str_size>B<, struct btf_ptr *>I<ptr>B<, u32 >I<btf_ptr_size>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Use BTF to store a string representation of I<ptr>-E<gt>ptr in I<str>, using "
+"I<ptr>-E<gt>type_id. This value should specify the type that I<ptr>-"
+"E<gt>ptr points to. LLVM __builtin_btf_type_id(type, 1) can be used to look "
+"up vmlinux BTF type ids. Traversing the data structure using BTF, the type "
+"information and values are stored in the first I<str_size> - 1 bytes of "
+"I<str>\\&. Safe copy of the pointer data is carried out to avoid kernel "
+"crashes during operation. Smaller types can use string space on the stack; "
+"larger programs can use map data to store the string representation."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The string can be subsequently shared with userspace via "
+"bpf_perf_event_output() or ring buffer interfaces. bpf_trace_printk() is to "
+"be avoided as it places too small a limit on string size to be useful."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "I<flags> is a combination of"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<BTF_F_COMPACT>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "no formatting around type information"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<BTF_F_NONAME>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "no struct/union member names/types"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<BTF_F_PTR_RAW>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"show raw (unobfuscated) pointer values; equivalent to printk specifier %px."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<BTF_F_ZERO>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"show zero-valued struct/union members; they are not displayed by default"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The number of bytes that were written (or would have been written if output "
+"had to be truncated due to string size), or a negative error in cases of "
+"failure."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_seq_printf_btf(struct seq_file *>I<m>B<, struct btf_ptr *>I<ptr>B<, u32 >I<ptr_size>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Use BTF to write to seq_write a string representation of I<ptr>-E<gt>ptr, "
+"using I<ptr>-E<gt>type_id as per bpf_snprintf_btf(). I<flags> are identical "
+"to those used for bpf_snprintf_btf."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "0 on success or a negative error in case of failure."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_skb_cgroup_classid(struct sk_buff *>I<skb>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"See B<bpf_get_cgroup_classid>() for the main description. This helper "
+"differs from B<bpf_get_cgroup_classid>() in that the cgroup v1 net_cls class "
+"is retrieved only from the I<skb>\\(aqs associated socket instead of the "
+"current process."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_redirect_neigh(u32 >I<ifindex>B<, struct bpf_redir_neigh *>I<params>B<, int >I<plen>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Redirect the packet to another net device of index I<ifindex> and fill in L2 "
+"addresses from neighboring subsystem. This helper is somewhat similar to "
+"B<bpf_redirect>(), except that it populates L2 addresses as well, meaning, "
+"internally, the helper relies on the neighbor lookup for the L2 address of "
+"the nexthop."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"The helper will perform a FIB lookup based on the skb\\(aqs networking "
+"header to get the address of the next hop, unless this is supplied by the "
+"caller in the I<params> argument. The I<plen> argument indicates the len of "
+"I<params> and should be set to 0 if I<params> is NULL."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The I<flags> argument is reserved and must be 0. The helper is currently "
+"only supported for tc BPF program types, and enabled for IPv4 and IPv6 "
+"protocols."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The helper returns B<TC_ACT_REDIRECT> on success or B<TC_ACT_SHOT> on error."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<void *bpf_per_cpu_ptr(const void *>I<percpu_ptr>B<, u32 >I<cpu>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"Take a pointer to a percpu ksym, I<percpu_ptr>, and return a pointer to the "
+"percpu kernel variable on I<cpu>\\&. A ksym is an extern variable decorated "
+"with \\(aq__ksym\\(aq. For ksym, there is a global var (either static or "
+"global) defined of the same name in the kernel. The ksym is percpu if the "
+"global var is percpu. The returned pointer points to the global percpu var "
+"on I<cpu>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"bpf_per_cpu_ptr() has the same semantic as per_cpu_ptr() in the kernel, "
+"except that bpf_per_cpu_ptr() may return NULL. This happens if I<cpu> is "
+"larger than nr_cpu_ids. The caller of bpf_per_cpu_ptr() must check the "
+"returned value."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"A pointer pointing to the kernel percpu variable on I<cpu>, or NULL, if "
+"I<cpu> is invalid."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<void *bpf_this_cpu_ptr(const void *>I<percpu_ptr>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"Take a pointer to a percpu ksym, I<percpu_ptr>, and return a pointer to the "
+"percpu kernel variable on this cpu. See the description of \\(aqksym\\(aq in "
+"B<bpf_per_cpu_ptr>()."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"bpf_this_cpu_ptr() has the same semantic as this_cpu_ptr() in the kernel. "
+"Different from B<bpf_per_cpu_ptr>(), it would never return NULL."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "A pointer pointing to the kernel percpu variable on this cpu."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_redirect_peer(u32 >I<ifindex>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"Redirect the packet to another net device of index I<ifindex>\\&. This "
+"helper is somewhat similar to B<bpf_redirect>(), except that the redirection "
+"happens to the I<ifindex>\\(aq peer device and the netns switch takes place "
+"from ingress to ingress without going through the CPU\\(aqs backlog queue."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The I<flags> argument is reserved and must be 0. The helper is currently "
+"only supported for tc BPF program types at the ingress hook and for veth "
+"device types. The peer device must reside in a different network namespace."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<void *bpf_task_storage_get(struct bpf_map *>I<map>B<, struct task_struct *>I<task>B<, void *>I<value>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Get a bpf_local_storage from the I<task>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Logically, it could be thought of as getting the value from a I<map> with "
+"I<task> as the B<key>\\&. From this perspective, the usage is not much "
+"different from B<bpf_map_lookup_elem>(I<map>, B<&>I<task>) except this "
+"helper enforces the key must be a task_struct and the map must also be a "
+"B<BPF_MAP_TYPE_TASK_STORAGE>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"Underneath, the value is stored locally at I<task> instead of the "
+"I<map>\\&. The I<map> is used as the bpf-local-storage \"type\". The bpf-"
+"local-storage \"type\" (i.e. the I<map>) is searched against all "
+"bpf_local_storage residing at I<task>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_task_storage_delete(struct bpf_map *>I<map>B<, struct task_struct *>I<task>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Delete a bpf_local_storage from a I<task>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<struct task_struct *bpf_get_current_task_btf(void)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"Return a BTF pointer to the \"current\" task. This pointer can also be used "
+"in helpers that accept an I<ARG_PTR_TO_BTF_ID> of type I<task_struct>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Pointer to the current task."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_bprm_opts_set(struct linux_binprm *>I<bprm>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Set or clear certain options on I<bprm>:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<BPF_F_BPRM_SECUREEXEC> Set the secureexec bit which sets the B<AT_SECURE> "
+"auxv for glibc. The bit is cleared if the flag is not specified."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-EINVAL> if invalid I<flags> are passed, zero otherwise."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_ktime_get_coarse_ns(void)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Return a coarse-grained version of the time elapsed since system boot, in "
+"nanoseconds. Does not include time the system was suspended."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "See: B<clock_gettime>(B<CLOCK_MONOTONIC_COARSE>)"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_ima_inode_hash(struct inode *>I<inode>B<, void *>I<dst>B<, u32 >I<size>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"Returns the stored IMA hash of the I<inode> (if it\\(aqs available). If the "
+"hash is larger than I<size>, then only I<size> bytes will be copied to I<dst>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The B<hash_algo> is returned on success, B<-EOPNOTSUP> if IMA is disabled or "
+"B<-EINVAL> if invalid arguments are passed."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<struct socket *bpf_sock_from_file(struct file *>I<file>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "If the given file represents a socket, returns the associated socket."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"A pointer to a struct socket on success or NULL if the file is not a socket."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_check_mtu(void *>I<ctx>B<, u32 >I<ifindex>B<, u32 *>I<mtu_len>B<, s32 >I<len_diff>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Check packet size against exceeding MTU of net device (based on "
+"I<ifindex>). This helper will likely be used in combination with helpers "
+"that adjust/change the packet size."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The argument I<len_diff> can be used for querying with a planned size "
+"change. This allows to check MTU prior to changing packet ctx. Providing a "
+"I<len_diff> adjustment that is larger than the actual packet size (resulting "
+"in negative packet size) will in principle not exceed the MTU, which is why "
+"it is not considered a failure. Other BPF helpers are needed for performing "
+"the planned size change; therefore the responsibility for catching a "
+"negative packet size belongs in those helpers."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"Specifying I<ifindex> zero means the MTU check is performed against the "
+"current net device. This is practical if this isn\\(aqt used prior to "
+"redirect."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"On input I<mtu_len> must be a valid pointer, else verifier will reject BPF "
+"program. If the value I<mtu_len> is initialized to zero then the ctx packet "
+"size is use. When value I<mtu_len> is provided as input this specify the L3 "
+"length that the MTU check is done against. Remember XDP and TC length "
+"operate at L2, but this value is L3 as this correlate to MTU and IP-header "
+"tot_len values which are L3 (similar behavior as bpf_fib_lookup)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The Linux kernel route table can configure MTUs on a more specific per route "
+"level, which is not provided by this helper. For route level MTU checks use "
+"the B<bpf_fib_lookup>() helper."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"I<ctx> is either B<struct xdp_md> for XDP programs or B<struct sk_buff> for "
+"tc cls_act programs."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The I<flags> argument can be a combination of one or more of the following "
+"values:"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<BPF_MTU_CHK_SEGS>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This flag will only works for I<ctx> B<struct sk_buff>\\&. If packet "
+"context contains extra packet segment buffers (often knows as GSO skb), then "
+"MTU check is harder to check at this point, because in transmit path it is "
+"possible for the skb packet to get re-segmented (depending on net device "
+"features). This could still be a MTU violation, so this flag enables "
+"performing MTU check against segments, with a different violation return "
+"code to tell it apart. Check cannot use len_diff."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"On return I<mtu_len> pointer contains the MTU value of the net device. "
+"Remember the net device configured MTU is the L3 size, which is returned "
+"here and XDP and TC length operate at L2. Helper take this into account for "
+"you, but remember when using MTU value in your BPF-code."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "0 on success, and populate MTU value in I<mtu_len> pointer."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "E<lt> 0 if any input argument is invalid (I<mtu_len> not updated)"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"MTU violations return positive values, but also populate MTU value in "
+"I<mtu_len> pointer, as this can be needed for implementing PMTU handing:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<BPF_MTU_CHK_RET_FRAG_NEEDED>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<BPF_MTU_CHK_RET_SEGS_TOOBIG>"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_for_each_map_elem(struct bpf_map *>I<map>B<, void *>I<callback_fn>B<, void *>I<callback_ctx>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"For each element in B<map>, call B<callback_fn> function with B<map>, "
+"B<callback_ctx> and other map-specific parameters. The B<callback_fn> "
+"should be a static function and the B<callback_ctx> should be a pointer to "
+"the stack. The B<flags> is used to control certain aspects of the helper. "
+"Currently, the B<flags> must be 0."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The following are a list of supported map types and their respective "
+"expected callback signatures:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"BPF_MAP_TYPE_HASH, BPF_MAP_TYPE_PERCPU_HASH, BPF_MAP_TYPE_LRU_HASH, "
+"BPF_MAP_TYPE_LRU_PERCPU_HASH, BPF_MAP_TYPE_ARRAY, BPF_MAP_TYPE_PERCPU_ARRAY"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"long (*callback_fn)(struct bpf_map *map, const void *key, void *value, void "
+"*ctx);"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"For per_cpu maps, the map_value is the value on the cpu where the bpf_prog "
+"is running."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"If B<callback_fn> return 0, the helper will continue to the next element. If "
+"return value is 1, the helper will skip the rest of elements and return. "
+"Other return values are not used now."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The number of traversed map elements for success, B<-EINVAL> for invalid "
+"B<flags>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_snprintf(char *>I<str>B<, u32 >I<str_size>B<, const char *>I<fmt>B<, u64 *>I<data>B<, u32 >I<data_len>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Outputs a string into the B<str> buffer of size B<str_size> based on a "
+"format string stored in a read-only map pointed by B<fmt>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Each format specifier in B<fmt> corresponds to one u64 element in the "
+"B<data> array. For strings and pointers where pointees are accessed, only "
+"the pointer values are stored in the I<data> array. The I<data_len> is the "
+"size of I<data> in bytes - must be a multiple of 8."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Formats B<%s> and B<%p{i,I}{4,6}> require to read kernel memory. Reading "
+"kernel memory may fail due to either invalid address or valid address but "
+"requiring a major memory fault. If reading kernel memory fails, the string "
+"for B<%s> will be an empty string, and the ip address for B<%p{i,I}{4,6}> "
+"will be 0. Not returning error to bpf program is consistent with what "
+"B<bpf_trace_printk>() does for now."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The strictly positive length of the formatted string, including the trailing "
+"zero character. If the return value is greater than B<str_size>, B<str> "
+"contains a truncated string, guaranteed to be zero-terminated except when "
+"B<str_size> is 0."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Or B<-EBUSY> if the per-CPU memory copy buffer is busy."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_sys_bpf(u32 >I<cmd>B<, void *>I<attr>B<, u32 >I<attr_size>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Execute bpf syscall with given arguments."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "A syscall result."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_btf_find_by_name_kind(char *>I<name>B<, int >I<name_sz>B<, u32 >I<kind>B<, int >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"Find BTF type with given name and kind in vmlinux BTF or in module\\(aqs "
+"BTFs."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Returns btf_id and btf_obj_fd in lower and upper 32 bits."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_sys_close(u32 >I<fd>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Execute close syscall for given FD."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_timer_init(struct bpf_timer *>I<timer>B<, struct bpf_map *>I<map>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Initialize the timer. First 4 bits of I<flags> specify clockid. Only "
+"CLOCK_MONOTONIC, CLOCK_REALTIME, CLOCK_BOOTTIME are allowed. All other bits "
+"of I<flags> are reserved. The verifier will reject the program if I<timer> "
+"is not from the same I<map>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"0 on success. B<-EBUSY> if I<timer> is already initialized. B<-EINVAL> if "
+"invalid I<flags> are passed. B<-EPERM> if I<timer> is in a map that "
+"doesn\\(aqt have any user references. The user space should either hold a "
+"file descriptor to a map with timers or pin such map in bpffs. When map is "
+"unpinned or file descriptor is closed all timers in the map will be "
+"cancelled and freed."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_timer_set_callback(struct bpf_timer *>I<timer>B<, void *>I<callback_fn>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Configure the timer to call I<callback_fn> static function."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"0 on success. B<-EINVAL> if I<timer> was not initialized with "
+"bpf_timer_init() earlier. B<-EPERM> if I<timer> is in a map that "
+"doesn\\(aqt have any user references. The user space should either hold a "
+"file descriptor to a map with timers or pin such map in bpffs. When map is "
+"unpinned or file descriptor is closed all timers in the map will be "
+"cancelled and freed."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_timer_start(struct bpf_timer *>I<timer>B<, u64 >I<nsecs>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"Set timer expiration N nanoseconds from the current time. The configured "
+"callback will be invoked in soft irq context on some cpu and will not repeat "
+"unless another bpf_timer_start() is made. In such case the next invocation "
+"can migrate to a different cpu. Since struct bpf_timer is a field inside "
+"map element the map owns the timer. The bpf_timer_set_callback() will "
+"increment refcnt of BPF program to make sure that callback_fn code stays "
+"valid. When user space reference to a map reaches zero all timers in a map "
+"are cancelled and corresponding program\\(aqs refcnts are decremented. This "
+"is done to make sure that Ctrl-C of a user process doesn\\(aqt leave any "
+"timers running. If map is pinned in bpffs the callback_fn can re-arm itself "
+"indefinitely. bpf_map_update/delete_elem() helpers and user space sys_bpf "
+"commands cancel and free the timer in the given map element. The map can "
+"contain timers that invoke callback_fn-s from different programs. The same "
+"callback_fn can serve different timers from different maps if key/value "
+"layout matches across maps. Every bpf_timer_set_callback() can have "
+"different callback_fn."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"0 on success. B<-EINVAL> if I<timer> was not initialized with "
+"bpf_timer_init() earlier or invalid I<flags> are passed."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_timer_cancel(struct bpf_timer *>I<timer>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Cancel the timer and wait for callback_fn to finish if it was running."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"0 if the timer was not active. 1 if the timer was active. B<-EINVAL> if "
+"I<timer> was not initialized with bpf_timer_init() earlier. B<-EDEADLK> if "
+"callback_fn tried to call bpf_timer_cancel() on its own timer which would "
+"have led to a deadlock otherwise."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_get_func_ip(void *>I<ctx>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Get address of the traced function (for tracing and kprobe programs)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Address of the traced function. 0 for kprobes placed within the function "
+"(not at the entry)."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_get_attach_cookie(void *>I<ctx>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Get bpf_cookie value provided (optionally) during the program attachment. It "
+"might be different for each individual attachment, even if BPF program "
+"itself is the same. Expects BPF program context I<ctx> as a first argument."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<Supported for the following program types:>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "kprobe/uprobe;"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "tracepoint;"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "perf_event."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Value specified by user at BPF link creation/attachment time or 0, if it was "
+"not specified."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_task_pt_regs(struct task_struct *>I<task>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Get the struct pt_regs associated with B<task>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "A pointer to struct pt_regs."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_get_branch_snapshot(void *>I<entries>B<, u32 >I<size>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Get branch trace from hardware engines like Intel LBR. The hardware engine "
+"is stopped shortly after the helper is called. Therefore, the user need to "
+"filter branch entries based on the actual use case. To capture branch trace "
+"before the trigger point of the BPF program, the helper should be called at "
+"the beginning of the BPF program."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The data is stored as struct perf_branch_entry into output buffer "
+"I<entries>\\&. I<size> is the size of I<entries> in bytes. I<flags> is "
+"reserved for now and must be zero."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-EINVAL> if I<flags> is not zero."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_trace_vprintk(const char *>I<fmt>B<, u32 >I<fmt_size>B<, const void *>I<data>B<, u32 >I<data_len>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Behaves like B<bpf_trace_printk>() helper, but takes an array of u64 to "
+"format and can handle more format args as a result."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Arguments are to be used as in B<bpf_seq_printf>() helper."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<struct unix_sock *bpf_skc_to_unix_sock(void *>I<sk>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Dynamically cast a I<sk> pointer to a I<unix_sock> pointer."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_kallsyms_lookup_name(const char *>I<name>B<, int >I<name_sz>B<, int >I<flags>B<, u64 *>I<res>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Get the address of a kernel symbol, returned in I<res>\\&. I<res> is set to "
+"0 if the symbol is not found."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "On success, zero. On error, a negative value."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-EINVAL> if string I<name> is not the same size as I<name_sz>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-ENOENT> if symbol is not found."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-EPERM> if caller does not have permission to obtain kernel address."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_find_vma(struct task_struct *>I<task>B<, u64 >I<addr>B<, void *>I<callback_fn>B<, void *>I<callback_ctx>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Find vma of I<task> that contains I<addr>, call I<callback_fn> function with "
+"I<task>, I<vma>, and I<callback_ctx>\\&. The I<callback_fn> should be a "
+"static function and the I<callback_ctx> should be a pointer to the stack. "
+"The I<flags> is used to control certain aspects of the helper. Currently, "
+"the I<flags> must be 0."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "The expected callback signature is"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"long (*callback_fn)(struct task_struct *task, struct vm_area_struct *vma, "
+"void *callback_ctx);"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"0 on success. B<-ENOENT> if I<task-E<gt>mm> is NULL, or no vma contains "
+"I<addr>\\&. B<-EBUSY> if failed to try lock mmap_lock. B<-EINVAL> for "
+"invalid B<flags>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_loop(u32 >I<nr_loops>B<, void *>I<callback_fn>B<, void *>I<callback_ctx>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"For B<nr_loops>, call B<callback_fn> function with B<callback_ctx> as the "
+"context parameter. The B<callback_fn> should be a static function and the "
+"B<callback_ctx> should be a pointer to the stack. The B<flags> is used to "
+"control certain aspects of the helper. Currently, the B<flags> must be 0. "
+"Currently, nr_loops is limited to 1 E<lt>E<lt> 23 (~8 million) loops."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "long (*callback_fn)(u32 index, void *ctx);"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"where B<index> is the current index in the loop. The index is zero-indexed."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"If B<callback_fn> returns 0, the helper will continue to the next loop. If "
+"return value is 1, the helper will skip the rest of the loops and return. "
+"Other return values are not used now, and will be rejected by the verifier."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The number of loops performed, B<-EINVAL> for invalid B<flags>, B<-E2BIG> if "
+"B<nr_loops> exceeds the maximum number of loops."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_strncmp(const char *>I<s1>B<, u32 >I<s1_sz>B<, const char *>I<s2>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"Do strncmp() between B<s1> and B<s2>\\&. B<s1> doesn\\(aqt need to be null-"
+"terminated and B<s1_sz> is the maximum storage size of B<s1>\\&. B<s2> must "
+"be a read-only string."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"An integer less than, equal to, or greater than zero if the first B<s1_sz> "
+"bytes of B<s1> is found to be less than, to match, or be greater than "
+"B<s2>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_get_func_arg(void *>I<ctx>B<, u32 >I<n>B<, u64 *>I<value>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Get B<n>-th argument register (zero based) of the traced function (for "
+"tracing programs) returned in B<value>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"0 on success. B<-EINVAL> if n E<gt>= argument register count of traced "
+"function."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_get_func_ret(void *>I<ctx>B<, u64 *>I<value>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Get return value of the traced function (for tracing programs) in "
+"B<value>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"0 on success. B<-EOPNOTSUPP> for tracing programs other than "
+"BPF_TRACE_FEXIT or BPF_MODIFY_RETURN."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_get_func_arg_cnt(void *>I<ctx>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Get number of registers of the traced function (for tracing programs) where "
+"function arguments are stored in these registers."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "The number of argument registers of the traced function."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<int bpf_get_retval(void)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"Get the BPF program\\(aqs return value that will be returned to the upper "
+"layers."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"This helper is currently supported by cgroup programs and only by the hooks "
+"where BPF program\\(aqs return value is returned to the userspace via errno."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid "The BPF program\\(aqs return value."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<int bpf_set_retval(int >I<retval>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"Set the BPF program\\(aqs return value that will be returned to the upper "
+"layers."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"Note that there is the following corner case where the program exports an "
+"error via bpf_set_retval but signals success via \\(aqreturn 1\\(aq:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "bpf_set_retval(-EPERM); return 1;"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"In this case, the BPF program\\(aqs return value will use helper\\(aqs -"
+"EPERM. This still holds true for cgroup/bind{4,6} which supports extra "
+"\\(aqreturn 3\\(aq success case."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_xdp_get_buff_len(struct xdp_buff *>I<xdp_md>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Get the total size of a given xdp buff (linear and paged area)"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "The total size of a given xdp buffer."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_xdp_load_bytes(struct xdp_buff *>I<xdp_md>B<, u32 >I<offset>B<, void *>I<buf>B<, u32 >I<len>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This helper is provided as an easy way to load data from a xdp buffer. It "
+"can be used to load I<len> bytes from I<offset> from the frame associated to "
+"I<xdp_md>, into the buffer pointed by I<buf>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_xdp_store_bytes(struct xdp_buff *>I<xdp_md>B<, u32 >I<offset>B<, void *>I<buf>B<, u32 >I<len>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Store I<len> bytes from buffer I<buf> into the frame associated to "
+"I<xdp_md>, at I<offset>\\&."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_copy_from_user_task(void *>I<dst>B<, u32 >I<size>B<, const void *>I<user_ptr>B<, struct task_struct *>I<tsk>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"Read I<size> bytes from user space address I<user_ptr> in I<tsk>\\(aqs "
+"address space, and stores the data in I<dst>\\&. I<flags> is not used yet "
+"and is provided for future extensibility. This helper can only be used by "
+"sleepable programs."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"0 on success, or a negative error in case of failure. On error I<dst> buffer "
+"is zeroed out."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_skb_set_tstamp(struct sk_buff *>I<skb>B<, u64 >I<tstamp>B<, u32 >I<tstamp_type>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Change the __sk_buff-E<gt>tstamp_type to I<tstamp_type> and set I<tstamp> to "
+"the __sk_buff-E<gt>tstamp together."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"If there is no need to change the __sk_buff-E<gt>tstamp_type, the tstamp "
+"value can be directly written to __sk_buff-E<gt>tstamp instead."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"BPF_SKB_TSTAMP_DELIVERY_MONO is the only tstamp that will be kept during "
+"bpf_redirect_*(). A non zero I<tstamp> must be used with the "
+"BPF_SKB_TSTAMP_DELIVERY_MONO I<tstamp_type>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"A BPF_SKB_TSTAMP_UNSPEC I<tstamp_type> can only be used with a zero "
+"I<tstamp>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Only IPv4 and IPv6 skb-E<gt>protocol are supported."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This function is most useful when it needs to set a mono delivery time to "
+"__sk_buff-E<gt>tstamp and then bpf_redirect_*() to the egress of an iface. "
+"For example, changing the (rcv) timestamp in __sk_buff-E<gt>tstamp at "
+"ingress to a mono delivery time and then bpf_redirect_*() to I<\\"
+"%sch_fq@phy-dev>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"0 on success. B<-EINVAL> for invalid input B<-EOPNOTSUPP> for unsupported "
+"protocol"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_ima_file_hash(struct file *>I<file>B<, void *>I<dst>B<, u32 >I<size>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Returns a calculated IMA hash of the I<file>\\&. If the hash is larger than "
+"I<size>, then only I<size> bytes will be copied to I<dst>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The B<hash_algo> is returned on success, B<-EOPNOTSUP> if the hash "
+"calculation failed or B<-EINVAL> if invalid arguments are passed."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<void *bpf_kptr_xchg(void *>I<map_value>B<, void *>I<ptr>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Exchange kptr at pointer I<map_value> with I<ptr>, and return the old value. "
+"I<ptr> can be NULL, otherwise it must be a referenced pointer which will be "
+"released when this helper is called."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The old value of kptr (which can be NULL). The returned pointer if not NULL, "
+"is a reference which must be released using its corresponding release "
+"function, or moved into a BPF map before program exit."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<void *bpf_map_lookup_percpu_elem(struct bpf_map *>I<map>B<, const void *>I<key>B<, u32 >I<cpu>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Perform a lookup in I<percpu map> for an entry associated to I<key> on "
+"I<cpu>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Map value associated to I<key> on I<cpu>, or B<NULL> if no entry was found "
+"or I<cpu> is invalid."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<struct mptcp_sock *bpf_skc_to_mptcp_sock(void *>I<sk>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Dynamically cast a I<sk> pointer to a I<mptcp_sock> pointer."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_dynptr_from_mem(void *>I<data>B<, u32 >I<size>B<, u64 >I<flags>B<, struct bpf_dynptr *>I<ptr>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Get a dynptr to local memory I<data>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"I<data> must be a ptr to a map value. The maximum I<size> supported is "
+"DYNPTR_MAX_SIZE. I<flags> is currently unused."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"0 on success, -E2BIG if the size exceeds DYNPTR_MAX_SIZE, -EINVAL if flags "
+"is not 0."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_ringbuf_reserve_dynptr(void *>I<ringbuf>B<, u32 >I<size>B<, u64 >I<flags>B<, struct bpf_dynptr *>I<ptr>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Reserve I<size> bytes of payload in a ring buffer I<ringbuf> through the "
+"dynptr interface. I<flags> must be 0."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Please note that a corresponding bpf_ringbuf_submit_dynptr or "
+"bpf_ringbuf_discard_dynptr must be called on I<ptr>, even if the reservation "
+"fails. This is enforced by the verifier."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<void bpf_ringbuf_submit_dynptr(struct bpf_dynptr *>I<ptr>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Submit reserved ring buffer sample, pointed to by I<data>, through the "
+"dynptr interface. This is a no-op if the dynptr is invalid/null."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"For more information on I<flags>, please see \\(aqbpf_ringbuf_submit\\(aq."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<void bpf_ringbuf_discard_dynptr(struct bpf_dynptr *>I<ptr>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Discard reserved ring buffer sample through the dynptr interface. This is a "
+"no-op if the dynptr is invalid/null."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"For more information on I<flags>, please see \\(aqbpf_ringbuf_discard\\(aq."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_dynptr_read(void *>I<dst>B<, u32 >I<len>B<, const struct bpf_dynptr *>I<src>B<, u32 >I<offset>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Read I<len> bytes from I<src> into I<dst>, starting from I<offset> into "
+"I<src>\\&. I<flags> is currently unused."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"0 on success, -E2BIG if I<offset> + I<len> exceeds the length of "
+"I<src>\\(aqs data, -EINVAL if I<src> is an invalid dynptr or if I<flags> is "
+"not 0."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_dynptr_write(const struct bpf_dynptr *>I<dst>B<, u32 >I<offset>B<, void *>I<src>B<, u32 >I<len>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Write I<len> bytes from I<src> into I<dst>, starting from I<offset> into "
+"I<dst>\\&. I<flags> is currently unused."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"0 on success, -E2BIG if I<offset> + I<len> exceeds the length of "
+"I<dst>\\(aqs data, -EINVAL if I<dst> is an invalid dynptr or if I<dst> is a "
+"read-only dynptr or if I<flags> is not 0."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+#, no-wrap
+msgid "B<void *bpf_dynptr_data(const struct bpf_dynptr *>I<ptr>B<, u32 >I<offset>B<, u32 >I<len>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "Get a pointer to the underlying dynptr data."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"I<len> must be a statically known value. The returned data slice is "
+"invalidated whenever the dynptr is invalidated."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Pointer to the underlying dynptr data, NULL if the dynptr is read-only, if "
+"the dynptr is invalid, or if the offset and length is out of bounds."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<s64 bpf_tcp_raw_gen_syncookie_ipv4(struct iphdr *>I<iph>B<, struct tcphdr *>I<th>B<, u32 >I<th_len>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Try to issue a SYN cookie for the packet with corresponding IPv4/TCP "
+"headers, I<iph> and I<th>, without depending on a listening socket."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "I<iph> points to the IPv4 header."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-EINVAL> if I<th_len> is invalid."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<s64 bpf_tcp_raw_gen_syncookie_ipv6(struct ipv6hdr *>I<iph>B<, struct tcphdr *>I<th>B<, u32 >I<th_len>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Try to issue a SYN cookie for the packet with corresponding IPv6/TCP "
+"headers, I<iph> and I<th>, without depending on a listening socket."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "I<iph> points to the IPv6 header."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-EPROTONOSUPPORT> if CONFIG_IPV6 is not builtin."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_tcp_raw_check_syncookie_ipv4(struct iphdr *>I<iph>B<, struct tcphdr *>I<th>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Check whether I<iph> and I<th> contain a valid SYN cookie ACK without "
+"depending on a listening socket."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "I<th> points to the TCP header."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "0 if I<iph> and I<th> are a valid SYN cookie ACK."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "B<-EACCES> if the SYN cookie is not valid."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_tcp_raw_check_syncookie_ipv6(struct ipv6hdr *>I<iph>B<, struct tcphdr *>I<th>B<)>"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<u64 bpf_ktime_get_tai_ns(void)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"A nonsettable system-wide clock derived from wall-clock time but ignoring "
+"leap seconds. This clock does not experience discontinuities and backwards "
+"jumps caused by NTP inserting leap seconds as CLOCK_REALTIME does."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "See: B<clock_gettime>(B<CLOCK_TAI>)"
+msgstr ""
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_user_ringbuf_drain(struct bpf_map *>I<map>B<, void *>I<callback_fn>B<, void *>I<ctx>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Drain samples from the specified user ring buffer, and invoke the provided "
+"callback for each such sample:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid "long (*callback_fn)(const struct bpf_dynptr *dynptr, void *ctx);"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"If B<callback_fn> returns 0, the helper will continue to try and drain the "
+"next sample, up to a maximum of BPF_MAX_USER_RINGBUF_SAMPLES samples. If the "
+"return value is 1, the helper will skip the rest of the samples and return. "
+"Other return values are not used now, and will be rejected by the verifier."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The number of drained samples if no error was encountered while draining "
+"samples, or 0 if no samples were present in the ring buffer. If a user-space "
+"producer was epoll-waiting on this map, and at least one sample was drained, "
+"they will receive an event notification notifying them of available space in "
+"the ring buffer. If the BPF_RB_NO_WAKEUP flag is passed to this function, no "
+"wakeup notification will be sent. If the BPF_RB_FORCE_WAKEUP flag is passed, "
+"a wakeup notification will be sent even if no sample was drained."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<-EBUSY> if the ring buffer is contended, and another calling context was "
+"concurrently draining the ring buffer."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<-EINVAL> if user-space is not properly tracking the ring buffer due to the "
+"producer position not being aligned to 8 bytes, a sample not being aligned "
+"to 8 bytes, or the producer position not matching the advertised length of a "
+"sample."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<-E2BIG> if user-space has tried to publish a sample which is larger than "
+"the size of the ring buffer, or which cannot fit within a struct bpf_dynptr."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+#, no-wrap
+msgid "B<void *bpf_cgrp_storage_get(struct bpf_map *>I<map>B<, struct cgroup *>I<cgroup>B<, void *>I<value>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid "Get a bpf_local_storage from the I<cgroup>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"Logically, it could be thought of as getting the value from a I<map> with "
+"I<cgroup> as the B<key>\\&. From this perspective, the usage is not much "
+"different from B<bpf_map_lookup_elem>(I<map>, B<&>I<cgroup>) except this "
+"helper enforces the key must be a cgroup struct and the map must also be a "
+"B<BPF_MAP_TYPE_CGRP_STORAGE>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"In reality, the local-storage value is embedded directly inside of the "
+"I<cgroup> object itself, rather than being located in the "
+"B<BPF_MAP_TYPE_CGRP_STORAGE> map. When the local-storage value is queried "
+"for some I<map> on a I<cgroup> object, the kernel will perform an O(n) "
+"iteration over all of the live local-storage values for that I<cgroup> "
+"object until the local-storage value for the I<map> is found."
+msgstr ""
+
+#. type: TP
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+#, no-wrap
+msgid "B<long bpf_cgrp_storage_delete(struct bpf_map *>I<map>B<, struct cgroup *>I<cgroup>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid "Delete a bpf_local_storage from a I<cgroup>\\&."
+msgstr ""
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "EXAMPLES"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Example usage for most of the eBPF helpers listed in this manual page are "
+"available within the Linux kernel sources, at the following locations:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "I<samples/bpf/>"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid "I<tools/testing/selftests/bpf/>"
+msgstr ""
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "LICENSE"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+msgid ""
+"eBPF programs can have an associated license, passed along with the bytecode "
+"instructions to the kernel when the programs are loaded. The format for that "
+"string is identical to the one in use for kernel modules (Dual licenses, "
+"such as \"Dual BSD/GPL\", may be used). Some helper functions are only "
+"accessible to programs that are compatible with the GNU Privacy License "
+"(GPL)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"In order to use such helpers, the eBPF program must be loaded with the "
+"correct license string passed (via B<attr>) to the B<bpf>() system call, and "
+"this generally translates into the C source code of the program containing a "
+"line similar to the following:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide opensuse-tumbleweed
+#, no-wrap
+msgid ""
+"^\".ft C$\n"
+"char ____license[] __attribute__((section(\"license\"), used)) = \"GPL\";\n"
+"^\".ft P$\n"
+msgstr ""
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "IMPLEMENTATION"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"This manual page is an effort to document the existing eBPF helper "
+"functions. But as of this writing, the BPF sub-system is under heavy "
+"development. New eBPF program or map types are added, along with new helper "
+"functions. Some helpers are occasionally made available for additional "
+"program types. So in spite of the efforts of the community, this page might "
+"not be up-to-date. If you want to check by yourself what helper functions "
+"exist in your kernel, or what types of programs they can support, here are "
+"some files among the kernel tree that you may be interested in:"
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"I<include/uapi/linux/bpf.h> is the main BPF header. It contains the full "
+"list of all helper functions, as well as many other BPF definitions "
+"including most of the flags, structs or constants used by the helpers."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"I<net/core/filter.c> contains the definition of most network-related helper "
+"functions, and the list of program types from which they can be used."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"I<kernel/trace/bpf_trace.c> is the equivalent for most tracing program-"
+"related helpers."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"I<kernel/bpf/verifier.c> contains the functions used to check that valid "
+"types of eBPF maps are used with a given helper function."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"I<kernel/bpf/> directory contains other files in which additional helpers "
+"are defined (for cgroups, sockmaps, etc.)."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"The bpftool utility can be used to probe the availability of helper "
+"functions on the system (as well as supported program and map types, and a "
+"number of other parameters). To do so, run B<bpftool feature probe> (see "
+"B<bpftool-feature>(8) for details). Add the B<unprivileged> keyword to list "
+"features available to unprivileged users."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Compatibility between helper functions and program types can generally be "
+"found in the files where helper functions are defined. Look for the B<struct "
+"bpf_func_proto> objects and for functions returning them: these functions "
+"contain a list of helpers that a given program type can call. Note that the "
+"B<default:> label of the B<switch ... case> used to filter helpers can call "
+"other functions, themselves allowing access to additional helpers. The "
+"requirement for GPL license is also in those B<struct bpf_func_proto>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Compatibility between helper functions and map types can be found in the "
+"B<check_map_func_compatibility>() function in file I<kernel/bpf/verifier."
+"c>\\&."
+msgstr ""
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"Helper functions that invalidate the checks on B<data> and B<data_end> "
+"pointers for network processing are listed in function "
+"B<bpf_helper_changes_pkt_data>() in file I<net/core/filter.c>\\&."
+msgstr ""
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+#, no-wrap
+msgid "SEE ALSO"
+msgstr ""
+
+#. Generated by docutils manpage writer.
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: opensuse-tumbleweed
+msgid ""
+"B<bpf>(2), B<bpftool>(8), B<cgroups>(7), B<ip>(8), B<perf_event_open>(2), "
+"B<sendmsg>(2), B<socket>(7), B<tc-bpf>(8)"
+msgstr ""
+
+#. type: TH
+#: debian-bookworm
+#, no-wrap
+msgid "2022-09-26"
+msgstr ""
+
+#. type: TH
+#: debian-bookworm
+#, no-wrap
+msgid "Linux v6.1"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"The extended Berkeley Packet Filter (eBPF) subsystem consists in programs "
+"written in a pseudo-assembly language, then attached to one of the several "
+"kernel hooks and run in reaction of specific events. This framework differs "
+"from the older, \\[dq]classic\\[dq] BPF (or \\[dq]cBPF\\[dq]) in several "
+"aspects, one of them being the ability to call special functions (or "
+"\\[dq]helpers\\[dq]) from within a program. These functions are restricted "
+"to a white-list of helpers defined in the kernel."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"This helper is a \\[dq]printk()-like\\[dq] facility for debugging. It prints "
+"a message defined by format I<fmt> (of size I<fmt_size>) to file I</sys/"
+"kernel/debug/tracing/trace> from DebugFS, if available. It can take up to "
+"three additional B<u64> arguments (as an eBPF helpers, the total number of "
+"arguments is limited to five)."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+#, no-wrap
+msgid ""
+"^\".ft C$\n"
+"telnet-470 [001] .N.. 419421.045894: 0x00000001: E<lt>formatted msgE<gt>\n"
+"^\".ft P$\n"
+msgstr ""
+
+#. type: IP
+#: debian-bookworm
+#, no-wrap
+msgid "\\[bu]"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid "B<E<lt>formatted msgE<gt>> is the message formatted with I<fmt>\\&."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"Also, note that B<bpf_trace_printk>() is slow, and should only be used for "
+"debugging purposes. For this reason, a notice block (spanning several lines) "
+"is printed to kernel logs and states that the helper should not be used "
+"\\[dq]for production use\\[dq] the first time this helper is used (or more "
+"precisely, when B<trace_printk>() buffers are allocated). For passing values "
+"to user space, perf events should be preferred."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"This special helper is used to trigger a \\[dq]tail call\\[dq], or in other "
+"words, to jump into another eBPF program. The same stack frame is used (but "
+"values on stack and in registers for the caller are not accessible to the "
+"callee). This mechanism allows for program chaining, either for raising the "
+"maximum number of available eBPF instructions, or to execute given programs "
+"in conditional blocks. For security reasons, there is an upper limit to the "
+"number of successive tail calls that can be performed."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"This helper is only available is the kernel was compiled with the "
+"B<CONFIG_CGROUP_NET_CLASSID> configuration option set to \\[dq]B<y>\\[dq] or "
+"to \\[dq]B<m>\\[dq]."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"The B<struct bpf_tunnel_key> is an object that generalizes the principal "
+"parameters used by various tunneling protocols into a single struct. This "
+"way, it can be used to easily make a decision based on the contents of the "
+"encapsulation header, \\[dq]summarized\\[dq] in this struct. In particular, "
+"it holds the IP address of the remote end (IPv4 or IPv6, depending on the "
+"case) in I<key>B<-E<gt>remote_ipv4> or I<key>B<-E<gt>remote_ipv6>\\&. Also, "
+"this struct exposes the I<key>B<-E<gt>tunnel_id>, which is generally mapped "
+"to a VNI (Virtual Network Identifier), making it programmable together with "
+"the B<bpf_skb_set_tunnel_key>() helper."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"Let\\[aq]s imagine that the following code is part of a program attached to "
+"the TC ingress interface, on one end of a GRE tunnel, and is supposed to "
+"filter out all messages coming from remote ends with IPv4 address other than "
+"10.0.0.1:"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"This interface can also be used with all encapsulation devices that can "
+"operate in \\[dq]collect metadata\\[dq] mode: instead of having one network "
+"device per specific configuration, the \\[dq]collect metadata\\[dq] mode "
+"only requires a single device where the configuration can be extracted from "
+"this helper."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"Since Linux 4.7, usage of this helper has mostly been replaced by "
+"\\[dq]direct packet access\\[dq], enabling packet data to be manipulated "
+"with I<skb>B<-E<gt>data> and I<skb>B<-E<gt>data_end> pointing respectively "
+"to the first byte of packet data and to the byte after the last byte of "
+"packet data. However, it remains useful if one wishes to read large "
+"quantities of data at once from a packet into the eBPF stack."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"This helper can be used with encapsulation devices that can operate in "
+"\\[dq]collect metadata\\[dq] mode (please refer to the related note in the "
+"description of B<bpf_skb_get_tunnel_key>() for more details). A particular "
+"example where this can be used is in combination with the Geneve "
+"encapsulation protocol, where it allows for pushing (with "
+"B<bpf_skb_get_tunnel_opt>() helper) and retrieving arbitrary TLVs (Type-"
+"Length-Value headers) from the eBPF program. This allows for full "
+"customization of these headers."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"B<SOL_SOCKET>, which supports the following I<optname>s: B<SO_RCVBUF>, "
+"B<SO_SNDBUF>, B<SO_MAX_PACING_RATE>, B<SO_PRIORITY>, B<SO_RCVLOWAT>, "
+"B<SO_MARK>, B<SO_BINDTODEVICE>, B<SO_KEEPALIVE>\\&."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"B<IPPROTO_TCP>, which supports the following I<optname>s: B<TCP_CONGESTION>, "
+"B<TCP_BPF_IW>, B<TCP_BPF_SNDCWND_CLAMP>, B<TCP_SAVE_SYN>, B<TCP_KEEPIDLE>, "
+"B<TCP_KEEPINTVL>, B<TCP_KEEPCNT>, B<TCP_SYNCNT>, B<TCP_USER_TIMEOUT>, "
+"B<TCP_NOTSENT_LOWAT>\\&."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid "B<IPPROTO_IPV6>, which supports I<optname> B<IPV6_TCLASS>\\&."
+msgstr ""
+
+#. type: TP
+#: debian-bookworm
+#, no-wrap
+msgid "B<long bpf_redirect_map(struct bpf_map *>I<map>B<, u32 >I<key>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"See also B<bpf_redirect>(), which only supports redirecting to an ifindex, "
+"but doesn\\[aq]t require a map to do so."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"This helper actually implements a subset of B<getsockopt()>\\&. It supports "
+"the following I<level>s:"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid "B<IPPROTO_TCP>, which supports I<optname> B<TCP_CONGESTION>\\&."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"This helper works for IPv4 and IPv6, TCP and UDP sockets. The domain "
+"(I<addr>B<-E<gt>sa_family>) must be B<AF_INET> (or B<AF_INET6>). It\\[aq]s "
+"advised to pass zero port (B<sin_port> or B<sin6_port>) which triggers "
+"IP_BIND_ADDRESS_NO_PORT-like behavior and lets the kernel efficiently pick "
+"up an unused port as long as 4-tuple is unique. Passing non-zero port might "
+"lead to degraded performance."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"Retrieve the XFRM state (IP transform framework, see also B<ip-xfrm(8)>) at "
+"I<index> in XFRM \\[dq]security path\\[dq] for I<skb>\\&."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"I<file_offset> is an offset relative to the beginning of the executable or "
+"shared object file backing the vma which the I<ip> falls in. It is I<not> an "
+"offset relative to that object\\[aq]s base address. Accordingly, it must be "
+"adjusted by adding (sh_addr - sh_offset), where sh_{addr,offset} correspond "
+"to the executable section containing I<file_offset> in the object, for "
+"comparisons to symbols\\[aq] st_value to be valid."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid "Base offset to load data from is I<skb>\\[aq]s mac header."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid "Base offset to load data from is I<skb>\\[aq]s network header."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"In general, \\[dq]direct packet access\\[dq] is the preferred method to "
+"access packet data, however, this helper is in particular useful in socket "
+"filters where I<skb>B<-E<gt>data> does not always point to the start of the "
+"mac header and where \\[dq]direct packet access\\[dq] is not available."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"This helper is only available is the kernel was compiled with the "
+"B<CONFIG_BPF_LIRC_MODE2> configuration option set to \\[dq]B<y>\\[dq]."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid "The buffer is always NUL terminated, unless it\\[aq]s zero-sized."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"If I<flags> is zero, full name (e.g. \\[dq]net/ipv4/tcp_mem\\[dq]) is "
+"copied. Use B<BPF_F_SYSCTL_BASE_NAME> flag to copy base name only (e.g. "
+"\\[dq]tcp_mem\\[dq])."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"B<-E2BIG> if the buffer wasn\\[aq]t big enough (I<buf> will contain "
+"truncated name in this case)."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"The string may begin with an arbitrary amount of white space (as determined "
+"by B<isspace>(3)) followed by a single optional \\[aq]B<->\\[aq] sign."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"Underneath, the value is stored locally at I<sk> instead of the I<map>\\&. "
+"The I<map> is used as the bpf-local-storage \\[dq]type\\[dq]. The bpf-local-"
+"storage \\[dq]type\\[dq] (i.e. the I<map>) is searched against all bpf-local-"
+"storages residing at I<sk>\\&."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"Send signal I<sig> to the process of the current task. The signal may be "
+"delivered to any of this process\\[aq]s threads."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+#, no-wrap
+msgid ""
+"^\".ft C$\n"
+"SEC(\\[dq]kprobe/sys_open\\[dq])\n"
+"void bpf_sys_open(struct pt_regs *ctx)\n"
+"{\n"
+" char buf[PATHLEN]; // PATHLEN is defined to 256\n"
+" int res = bpf_probe_read_user_str(buf, sizeof(buf),\n"
+" ctx-E<gt>di);\n"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"B<-EINVAL> if dev and inum supplied don\\[aq]t match dev_t and inode number "
+"with nsfs of current task, or if dev conversion to dev_t lost high bits."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"B<-EPROTOTYPE> if socket L4 protocol (I<sk-E<gt>protocol>) doesn\\[aq]t "
+"match packet protocol (I<ctx-E<gt>protocol>)."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"See \\[aq]bpf_ringbuf_output()\\[aq] for the definition of adaptive "
+"notification."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"If the searching kind is an experimental kind (i.e. 253 or 254 according to "
+"RFC6994). It also needs to specify the \\[dq]magic\\[dq] which is either 2 "
+"bytes or 4 bytes. It then also needs to specify the size of the magic by "
+"using the 2nd byte which is \\[dq]kind-length\\[dq] of a TCP header option "
+"and the \\[dq]kind-length\\[dq] also includes the first 2 bytes "
+"\\[dq]kind\\[dq] and \\[dq]kind-length\\[dq] itself as a normal TCP header "
+"option also does."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"Underneath, the value is stored locally at I<inode> instead of the "
+"I<map>\\&. The I<map> is used as the bpf-local-storage \\[dq]type\\[dq]. "
+"The bpf-local-storage \\[dq]type\\[dq] (i.e. the I<map>) is searched against "
+"all bpf_local_storage residing at I<inode>\\&."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"See B<bpf_get_cgroup_classid>() for the main description. This helper "
+"differs from B<bpf_get_cgroup_classid>() in that the cgroup v1 net_cls class "
+"is retrieved only from the I<skb>\\[aq]s associated socket instead of the "
+"current process."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"The helper will perform a FIB lookup based on the skb\\[aq]s networking "
+"header to get the address of the next hop, unless this is supplied by the "
+"caller in the I<params> argument. The I<plen> argument indicates the len of "
+"I<params> and should be set to 0 if I<params> is NULL."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"Take a pointer to a percpu ksym, I<percpu_ptr>, and return a pointer to the "
+"percpu kernel variable on I<cpu>\\&. A ksym is an extern variable decorated "
+"with \\[aq]__ksym\\[aq]. For ksym, there is a global var (either static or "
+"global) defined of the same name in the kernel. The ksym is percpu if the "
+"global var is percpu. The returned pointer points to the global percpu var "
+"on I<cpu>\\&."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"Take a pointer to a percpu ksym, I<percpu_ptr>, and return a pointer to the "
+"percpu kernel variable on this cpu. See the description of \\[aq]ksym\\[aq] "
+"in B<bpf_per_cpu_ptr>()."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"Redirect the packet to another net device of index I<ifindex>\\&. This "
+"helper is somewhat similar to B<bpf_redirect>(), except that the redirection "
+"happens to the I<ifindex>\\[aq] peer device and the netns switch takes place "
+"from ingress to ingress without going through the CPU\\[aq]s backlog queue."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"Underneath, the value is stored locally at I<task> instead of the "
+"I<map>\\&. The I<map> is used as the bpf-local-storage \\[dq]type\\[dq]. "
+"The bpf-local-storage \\[dq]type\\[dq] (i.e. the I<map>) is searched against "
+"all bpf_local_storage residing at I<task>\\&."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"Return a BTF pointer to the \\[dq]current\\[dq] task. This pointer can also "
+"be used in helpers that accept an I<ARG_PTR_TO_BTF_ID> of type "
+"I<task_struct>\\&."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"Returns the stored IMA hash of the I<inode> (if it\\[aq]s available). If "
+"the hash is larger than I<size>, then only I<size> bytes will be copied to "
+"I<dst>"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"Specifying I<ifindex> zero means the MTU check is performed against the "
+"current net device. This is practical if this isn\\[aq]t used prior to "
+"redirect."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"Find BTF type with given name and kind in vmlinux BTF or in module\\[aq]s "
+"BTFs."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"0 on success. B<-EBUSY> if I<timer> is already initialized. B<-EINVAL> if "
+"invalid I<flags> are passed. B<-EPERM> if I<timer> is in a map that "
+"doesn\\[aq]t have any user references. The user space should either hold a "
+"file descriptor to a map with timers or pin such map in bpffs. When map is "
+"unpinned or file descriptor is closed all timers in the map will be "
+"cancelled and freed."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"0 on success. B<-EINVAL> if I<timer> was not initialized with "
+"bpf_timer_init() earlier. B<-EPERM> if I<timer> is in a map that "
+"doesn\\[aq]t have any user references. The user space should either hold a "
+"file descriptor to a map with timers or pin such map in bpffs. When map is "
+"unpinned or file descriptor is closed all timers in the map will be "
+"cancelled and freed."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"Set timer expiration N nanoseconds from the current time. The configured "
+"callback will be invoked in soft irq context on some cpu and will not repeat "
+"unless another bpf_timer_start() is made. In such case the next invocation "
+"can migrate to a different cpu. Since struct bpf_timer is a field inside "
+"map element the map owns the timer. The bpf_timer_set_callback() will "
+"increment refcnt of BPF program to make sure that callback_fn code stays "
+"valid. When user space reference to a map reaches zero all timers in a map "
+"are cancelled and corresponding program\\[aq]s refcnts are decremented. This "
+"is done to make sure that Ctrl-C of a user process doesn\\[aq]t leave any "
+"timers running. If map is pinned in bpffs the callback_fn can re-arm itself "
+"indefinitely. bpf_map_update/delete_elem() helpers and user space sys_bpf "
+"commands cancel and free the timer in the given map element. The map can "
+"contain timers that invoke callback_fn-s from different programs. The same "
+"callback_fn can serve different timers from different maps if key/value "
+"layout matches across maps. Every bpf_timer_set_callback() can have "
+"different callback_fn."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"Do strncmp() between B<s1> and B<s2>\\&. B<s1> doesn\\[aq]t need to be null-"
+"terminated and B<s1_sz> is the maximum storage size of B<s1>\\&. B<s2> must "
+"be a read-only string."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"Get the BPF program\\[aq]s return value that will be returned to the upper "
+"layers."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"This helper is currently supported by cgroup programs and only by the hooks "
+"where BPF program\\[aq]s return value is returned to the userspace via errno."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid "The BPF program\\[aq]s return value."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"Set the BPF program\\[aq]s return value that will be returned to the upper "
+"layers."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"Note that there is the following corner case where the program exports an "
+"error via bpf_set_retval but signals success via \\[aq]return 1\\[aq]:"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"In this case, the BPF program\\[aq]s return value will use helper\\[aq]s -"
+"EPERM. This still holds true for cgroup/bind{4,6} which supports extra "
+"\\[aq]return 3\\[aq] success case."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"Read I<size> bytes from user space address I<user_ptr> in I<tsk>\\[aq]s "
+"address space, and stores the data in I<dst>\\&. I<flags> is not used yet "
+"and is provided for future extensibility. This helper can only be used by "
+"sleepable programs."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"For more information on I<flags>, please see \\[aq]bpf_ringbuf_submit\\[aq]."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"For more information on I<flags>, please see \\[aq]bpf_ringbuf_discard\\[aq]."
+msgstr ""
+
+#. type: TP
+#: debian-bookworm
+#, no-wrap
+msgid "B<long bpf_dynptr_read(void *>I<dst>B<, u32 >I<len>B<, struct bpf_dynptr *>I<src>B<, u32 >I<offset>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"0 on success, -E2BIG if I<offset> + I<len> exceeds the length of "
+"I<src>\\[aq]s data, -EINVAL if I<src> is an invalid dynptr or if I<flags> is "
+"not 0."
+msgstr ""
+
+#. type: TP
+#: debian-bookworm
+#, no-wrap
+msgid "B<long bpf_dynptr_write(struct bpf_dynptr *>I<dst>B<, u32 >I<offset>B<, void *>I<src>B<, u32 >I<len>B<, u64 >I<flags>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"0 on success, -E2BIG if I<offset> + I<len> exceeds the length of "
+"I<dst>\\[aq]s data, -EINVAL if I<dst> is an invalid dynptr or if I<dst> is a "
+"read-only dynptr or if I<flags> is not 0."
+msgstr ""
+
+#. type: TP
+#: debian-bookworm
+#, no-wrap
+msgid "B<void *bpf_dynptr_data(struct bpf_dynptr *>I<ptr>B<, u32 >I<offset>B<, u32 >I<len>B<)>"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid "long (*callback_fn)(struct bpf_dynptr *dynptr, void *ctx);"
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+msgid ""
+"eBPF programs can have an associated license, passed along with the bytecode "
+"instructions to the kernel when the programs are loaded. The format for that "
+"string is identical to the one in use for kernel modules (Dual licenses, "
+"such as \\[dq]Dual BSD/GPL\\[dq], may be used). Some helper functions are "
+"only accessible to programs that are compatible with the GNU Privacy License "
+"(GPL)."
+msgstr ""
+
+#. type: Plain text
+#: debian-bookworm
+#, no-wrap
+msgid ""
+"^\".ft C$\n"
+"char ____license[] __attribute__((section(\\[dq]license\\[dq]), used)) = \\[dq]GPL\\[dq];\n"
+"^\".ft P$\n"
+msgstr ""