1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* Copyright (c) 2019 Facebook */ 3 #ifndef _BPF_SK_STORAGE_H 4 #define _BPF_SK_STORAGE_H 5 6 struct sock; 7 8 void bpf_sk_storage_free(struct sock *sk); 9 10 extern const struct bpf_func_proto bpf_sk_storage_get_proto; 11 extern const struct bpf_func_proto bpf_sk_storage_delete_proto; 12 13 struct bpf_sk_storage_diag; 14 struct sk_buff; 15 struct nlattr; 16 struct sock; 17 18 #ifdef CONFIG_BPF_SYSCALL 19 int bpf_sk_storage_clone(const struct sock *sk, struct sock *newsk); 20 struct bpf_sk_storage_diag * 21 bpf_sk_storage_diag_alloc(const struct nlattr *nla_stgs); 22 void bpf_sk_storage_diag_free(struct bpf_sk_storage_diag *diag); 23 int bpf_sk_storage_diag_put(struct bpf_sk_storage_diag *diag, 24 struct sock *sk, struct sk_buff *skb, 25 int stg_array_type, 26 unsigned int *res_diag_size); 27 #else 28 static inline int bpf_sk_storage_clone(const struct sock *sk, 29 struct sock *newsk) 30 { 31 return 0; 32 } 33 static inline struct bpf_sk_storage_diag * 34 bpf_sk_storage_diag_alloc(const struct nlattr *nla) 35 { 36 return NULL; 37 } 38 static inline void bpf_sk_storage_diag_free(struct bpf_sk_storage_diag *diag) 39 { 40 } 41 static inline int bpf_sk_storage_diag_put(struct bpf_sk_storage_diag *diag, 42 struct sock *sk, struct sk_buff *skb, 43 int stg_array_type, 44 unsigned int *res_diag_size) 45 { 46 return 0; 47 } 48 #endif 49 50 #endif /* _BPF_SK_STORAGE_H */ 51