blob: 3c516dd07cafd0215f1f3ed28cfea6e8bf42d9d4 [file] [log] [blame]
Martin KaFai Lau6ac99e82019-04-26 16:39:39 -07001/* SPDX-License-Identifier: GPL-2.0 */
2/* Copyright (c) 2019 Facebook */
3#ifndef _BPF_SK_STORAGE_H
4#define _BPF_SK_STORAGE_H
5
KP Singhf836a562020-08-25 20:29:15 +02006#include <linux/rculist.h>
7#include <linux/list.h>
8#include <linux/hash.h>
KP Singh4cc9ce42020-08-25 20:29:14 +02009#include <linux/types.h>
10#include <linux/spinlock.h>
KP Singhf836a562020-08-25 20:29:15 +020011#include <linux/bpf.h>
12#include <net/sock.h>
13#include <uapi/linux/sock_diag.h>
14#include <uapi/linux/btf.h>
KP Singh450af8d2020-08-25 20:29:16 +020015#include <linux/bpf_local_storage.h>
KP Singh4cc9ce42020-08-25 20:29:14 +020016
Martin KaFai Lau6ac99e82019-04-26 16:39:39 -070017struct sock;
18
19void bpf_sk_storage_free(struct sock *sk);
20
21extern const struct bpf_func_proto bpf_sk_storage_get_proto;
22extern const struct bpf_func_proto bpf_sk_storage_delete_proto;
23
KP Singhf836a562020-08-25 20:29:15 +020024struct bpf_local_storage_elem;
Martin KaFai Lau1ed4d922020-02-25 15:04:21 -080025struct bpf_sk_storage_diag;
26struct sk_buff;
27struct nlattr;
28struct sock;
29
Stanislav Fomichev8f51dfc2019-08-14 10:37:49 -070030#ifdef CONFIG_BPF_SYSCALL
31int bpf_sk_storage_clone(const struct sock *sk, struct sock *newsk);
Martin KaFai Lau1ed4d922020-02-25 15:04:21 -080032struct bpf_sk_storage_diag *
33bpf_sk_storage_diag_alloc(const struct nlattr *nla_stgs);
34void bpf_sk_storage_diag_free(struct bpf_sk_storage_diag *diag);
35int bpf_sk_storage_diag_put(struct bpf_sk_storage_diag *diag,
36 struct sock *sk, struct sk_buff *skb,
37 int stg_array_type,
38 unsigned int *res_diag_size);
Stanislav Fomichev8f51dfc2019-08-14 10:37:49 -070039#else
40static inline int bpf_sk_storage_clone(const struct sock *sk,
41 struct sock *newsk)
42{
43 return 0;
44}
Martin KaFai Lau1ed4d922020-02-25 15:04:21 -080045static inline struct bpf_sk_storage_diag *
46bpf_sk_storage_diag_alloc(const struct nlattr *nla)
47{
48 return NULL;
49}
50static inline void bpf_sk_storage_diag_free(struct bpf_sk_storage_diag *diag)
51{
52}
53static inline int bpf_sk_storage_diag_put(struct bpf_sk_storage_diag *diag,
54 struct sock *sk, struct sk_buff *skb,
55 int stg_array_type,
56 unsigned int *res_diag_size)
57{
58 return 0;
59}
Stanislav Fomichev8f51dfc2019-08-14 10:37:49 -070060#endif
61
Martin KaFai Lau6ac99e82019-04-26 16:39:39 -070062#endif /* _BPF_SK_STORAGE_H */