Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1#ifndef __BPF_KFUNCS__
2#define __BPF_KFUNCS__
3
4struct bpf_sock_addr_kern;
5
6/* Description
7 * Initializes an skb-type dynptr
8 * Returns
9 * Error code
10 */
11extern int bpf_dynptr_from_skb(struct __sk_buff *skb, __u64 flags,
12 struct bpf_dynptr *ptr__uninit) __ksym __weak;
13
14/* Description
15 * Initializes an xdp-type dynptr
16 * Returns
17 * Error code
18 */
19extern int bpf_dynptr_from_xdp(struct xdp_md *xdp, __u64 flags,
20 struct bpf_dynptr *ptr__uninit) __ksym __weak;
21
22extern int bpf_dynptr_from_skb_meta(struct __sk_buff *skb, __u64 flags,
23 struct bpf_dynptr *ptr__uninit) __ksym __weak;
24
25/* Description
26 * Obtain a read-only pointer to the dynptr's data
27 * Returns
28 * Either a direct pointer to the dynptr data or a pointer to the user-provided
29 * buffer if unable to obtain a direct pointer
30 */
31extern void *bpf_dynptr_slice(const struct bpf_dynptr *ptr, __u64 offset,
32 void *buffer, __u64 buffer__szk) __ksym __weak;
33
34/* Description
35 * Obtain a read-write pointer to the dynptr's data
36 * Returns
37 * Either a direct pointer to the dynptr data or a pointer to the user-provided
38 * buffer if unable to obtain a direct pointer
39 */
40extern void *bpf_dynptr_slice_rdwr(const struct bpf_dynptr *ptr, __u64 offset, void *buffer,
41 __u64 buffer__szk) __ksym __weak;
42
43extern int bpf_dynptr_adjust(const struct bpf_dynptr *ptr, __u64 start, __u64 end) __ksym __weak;
44extern bool bpf_dynptr_is_null(const struct bpf_dynptr *ptr) __ksym __weak;
45extern bool bpf_dynptr_is_rdonly(const struct bpf_dynptr *ptr) __ksym __weak;
46extern __u64 bpf_dynptr_size(const struct bpf_dynptr *ptr) __ksym __weak;
47extern int bpf_dynptr_clone(const struct bpf_dynptr *ptr, struct bpf_dynptr *clone__init) __ksym __weak;
48
49/* Description
50 * Modify the address of a AF_UNIX sockaddr.
51 * Returns
52 * -EINVAL if the address size is too big or, 0 if the sockaddr was successfully modified.
53 */
54extern int bpf_sock_addr_set_sun_path(struct bpf_sock_addr_kern *sa_kern,
55 const __u8 *sun_path, __u32 sun_path__sz) __ksym;
56
57/* Description
58 * Allocate and configure a reqsk and link it with a listener and skb.
59 * Returns
60 * Error code
61 */
62struct sock;
63struct bpf_tcp_req_attrs;
64extern int bpf_sk_assign_tcp_reqsk(struct __sk_buff *skb, struct sock *sk,
65 struct bpf_tcp_req_attrs *attrs, int attrs__sz) __ksym;
66
67void *bpf_cast_to_kern_ctx(void *) __ksym;
68
69extern void *bpf_rdonly_cast(const void *obj, __u32 btf_id) __ksym __weak;
70
71extern int bpf_get_file_xattr(struct file *file, const char *name,
72 struct bpf_dynptr *value_ptr) __ksym;
73extern int bpf_get_fsverity_digest(struct file *file, struct bpf_dynptr *digest_ptr) __ksym;
74
75extern struct bpf_key *bpf_lookup_user_key(__s32 serial, __u64 flags) __ksym;
76extern struct bpf_key *bpf_lookup_system_key(__u64 id) __ksym;
77extern void bpf_key_put(struct bpf_key *key) __ksym;
78extern int bpf_verify_pkcs7_signature(struct bpf_dynptr *data_ptr,
79 struct bpf_dynptr *sig_ptr,
80 struct bpf_key *trusted_keyring) __ksym;
81
82struct dentry;
83/* Description
84 * Returns xattr of a dentry
85 * Returns
86 * Error code
87 */
88extern int bpf_get_dentry_xattr(struct dentry *dentry, const char *name,
89 struct bpf_dynptr *value_ptr) __ksym __weak;
90
91extern int bpf_set_dentry_xattr(struct dentry *dentry, const char *name__str,
92 const struct bpf_dynptr *value_p, int flags) __ksym __weak;
93extern int bpf_remove_dentry_xattr(struct dentry *dentry, const char *name__str) __ksym __weak;
94
95#endif