mirror of
https://github.com/netdata/libbpf.git
synced 2026-03-24 10:19:07 +08:00
sync: auto-generate latest BPF helpers
Latest changes to BPF helper definitions.
This commit is contained in:
committed by
Andrii Nakryiko
parent
712f6587c9
commit
18b55bc136
@@ -1146,8 +1146,8 @@ static long (*bpf_probe_read_str)(void *dst, __u32 size, const void *unsafe_ptr)
|
||||
* identifier that can be assumed unique.
|
||||
*
|
||||
* Returns
|
||||
* A 8-byte long non-decreasing number on success, or 0 if the
|
||||
* socket field is missing inside *skb*.
|
||||
* A 8-byte long unique number on success, or 0 if the socket
|
||||
* field is missing inside *skb*.
|
||||
*/
|
||||
static __u64 (*bpf_get_socket_cookie)(void *ctx) = (void *) 46;
|
||||
|
||||
@@ -1799,6 +1799,9 @@ static long (*bpf_skb_load_bytes_relative)(const void *skb, __u32 offset, void *
|
||||
* * 0 on success (packet is forwarded, nexthop neighbor exists)
|
||||
* * > 0 one of **BPF_FIB_LKUP_RET_** codes explaining why the
|
||||
* packet is not forwarded or needs assist from full stack
|
||||
*
|
||||
* If lookup fails with BPF_FIB_LKUP_RET_FRAG_NEEDED, then the MTU
|
||||
* was exceeded and output params->mtu_result contains the MTU.
|
||||
*/
|
||||
static long (*bpf_fib_lookup)(void *ctx, struct bpf_fib_lookup *params, int plen, __u32 flags) = (void *) 69;
|
||||
|
||||
@@ -3731,4 +3734,102 @@ static long (*bpf_ima_inode_hash)(struct inode *inode, void *dst, __u32 size) =
|
||||
*/
|
||||
static struct socket *(*bpf_sock_from_file)(struct file *file) = (void *) 162;
|
||||
|
||||
/*
|
||||
* bpf_check_mtu
|
||||
*
|
||||
* Check ctx packet size against exceeding MTU of net device (based
|
||||
* on *ifindex*). This helper will likely be used in combination
|
||||
* with helpers that adjust/change the packet size.
|
||||
*
|
||||
* The argument *len_diff* can be used for querying with a planned
|
||||
* size change. This allows to check MTU prior to changing packet
|
||||
* ctx. Providing an *len_diff* adjustment that is larger than the
|
||||
* actual packet size (resulting in negative packet size) will in
|
||||
* principle not exceed the MTU, why it is not considered a
|
||||
* failure. Other BPF-helpers are needed for performing the
|
||||
* planned size change, why the responsability for catch a negative
|
||||
* packet size belong in those helpers.
|
||||
*
|
||||
* Specifying *ifindex* zero means the MTU check is performed
|
||||
* against the current net device. This is practical if this isn't
|
||||
* used prior to redirect.
|
||||
*
|
||||
* 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 **bpf_fib_lookup**\ ()
|
||||
* helper.
|
||||
*
|
||||
* *ctx* is either **struct xdp_md** for XDP programs or
|
||||
* **struct sk_buff** for tc cls_act programs.
|
||||
*
|
||||
* The *flags* argument can be a combination of one or more of the
|
||||
* following values:
|
||||
*
|
||||
* **BPF_MTU_CHK_SEGS**
|
||||
* This flag will only works for *ctx* **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.
|
||||
*
|
||||
* On return *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 TX length operate at L2.
|
||||
* Helper take this into account for you, but remember when using
|
||||
* MTU value in your BPF-code. On input *mtu_len* must be a valid
|
||||
* pointer and be initialized (to zero), else verifier will reject
|
||||
* BPF program.
|
||||
*
|
||||
*
|
||||
* Returns
|
||||
* * 0 on success, and populate MTU value in *mtu_len* pointer.
|
||||
*
|
||||
* * < 0 if any input argument is invalid (*mtu_len* not updated)
|
||||
*
|
||||
* MTU violations return positive values, but also populate MTU
|
||||
* value in *mtu_len* pointer, as this can be needed for
|
||||
* implementing PMTU handing:
|
||||
*
|
||||
* * **BPF_MTU_CHK_RET_FRAG_NEEDED**
|
||||
* * **BPF_MTU_CHK_RET_SEGS_TOOBIG**
|
||||
*/
|
||||
static long (*bpf_check_mtu)(void *ctx, __u32 ifindex, __u32 *mtu_len, __s32 len_diff, __u64 flags) = (void *) 163;
|
||||
|
||||
/*
|
||||
* bpf_for_each_map_elem
|
||||
*
|
||||
* For each element in **map**, call **callback_fn** function with
|
||||
* **map**, **callback_ctx** and other map-specific parameters.
|
||||
* The **callback_fn** should be a static function and
|
||||
* the **callback_ctx** should be a pointer to the stack.
|
||||
* The **flags** is used to control certain aspects of the helper.
|
||||
* Currently, the **flags** must be 0.
|
||||
*
|
||||
* The following are a list of supported map types and their
|
||||
* respective expected callback signatures:
|
||||
*
|
||||
* 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
|
||||
*
|
||||
* long (\*callback_fn)(struct bpf_map \*map, const void \*key, void \*value, void \*ctx);
|
||||
*
|
||||
* For per_cpu maps, the map_value is the value on the cpu where the
|
||||
* bpf_prog is running.
|
||||
*
|
||||
* If **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.
|
||||
*
|
||||
*
|
||||
* Returns
|
||||
* The number of traversed map elements for success, **-EINVAL** for
|
||||
* invalid **flags**.
|
||||
*/
|
||||
static long (*bpf_for_each_map_elem)(void *map, void *callback_fn, void *callback_ctx, __u64 flags) = (void *) 164;
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user