Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/net/mptcp/bpf.c
26282 views
1
// SPDX-License-Identifier: GPL-2.0
2
/* Multipath TCP
3
*
4
* Copyright (c) 2020, Tessares SA.
5
* Copyright (c) 2022, SUSE.
6
*
7
* Author: Nicolas Rybowski <[email protected]>
8
*/
9
10
#define pr_fmt(fmt) "MPTCP: " fmt
11
12
#include <linux/bpf.h>
13
#include "protocol.h"
14
15
struct mptcp_sock *bpf_mptcp_sock_from_subflow(struct sock *sk)
16
{
17
if (sk && sk_fullsock(sk) && sk->sk_protocol == IPPROTO_TCP && sk_is_mptcp(sk))
18
return mptcp_sk(mptcp_subflow_ctx(sk)->conn);
19
20
return NULL;
21
}
22
23
BTF_SET8_START(bpf_mptcp_fmodret_ids)
24
BTF_ID_FLAGS(func, update_socket_protocol)
25
BTF_SET8_END(bpf_mptcp_fmodret_ids)
26
27
static const struct btf_kfunc_id_set bpf_mptcp_fmodret_set = {
28
.owner = THIS_MODULE,
29
.set = &bpf_mptcp_fmodret_ids,
30
};
31
32
static int __init bpf_mptcp_kfunc_init(void)
33
{
34
return register_btf_fmodret_id_set(&bpf_mptcp_fmodret_set);
35
}
36
late_initcall(bpf_mptcp_kfunc_init);
37
38