75 lines · c
1// SPDX-License-Identifier: GPL-2.02 3#include "bpf_tracing_net.h"4#include <bpf/bpf_helpers.h>5#include <bpf/bpf_tracing.h>6 7char _license[] SEC("license") = "GPL";8 9int ca1_cnt = 0;10int ca2_cnt = 0;11 12SEC("struct_ops")13void BPF_PROG(ca_update_1_init, struct sock *sk)14{15 ca1_cnt++;16}17 18SEC("struct_ops")19void BPF_PROG(ca_update_2_init, struct sock *sk)20{21 ca2_cnt++;22}23 24SEC("struct_ops")25void BPF_PROG(ca_update_cong_control, struct sock *sk,26 const struct rate_sample *rs)27{28}29 30SEC("struct_ops")31__u32 BPF_PROG(ca_update_ssthresh, struct sock *sk)32{33 return tcp_sk(sk)->snd_ssthresh;34}35 36SEC("struct_ops")37__u32 BPF_PROG(ca_update_undo_cwnd, struct sock *sk)38{39 return tcp_sk(sk)->snd_cwnd;40}41 42SEC(".struct_ops.link")43struct tcp_congestion_ops ca_update_1 = {44 .init = (void *)ca_update_1_init,45 .cong_control = (void *)ca_update_cong_control,46 .ssthresh = (void *)ca_update_ssthresh,47 .undo_cwnd = (void *)ca_update_undo_cwnd,48 .name = "tcp_ca_update",49};50 51SEC(".struct_ops.link")52struct tcp_congestion_ops ca_update_2 = {53 .init = (void *)ca_update_2_init,54 .cong_control = (void *)ca_update_cong_control,55 .ssthresh = (void *)ca_update_ssthresh,56 .undo_cwnd = (void *)ca_update_undo_cwnd,57 .name = "tcp_ca_update",58};59 60SEC(".struct_ops.link")61struct tcp_congestion_ops ca_wrong = {62 .cong_control = (void *)ca_update_cong_control,63 .ssthresh = (void *)ca_update_ssthresh,64 .undo_cwnd = (void *)ca_update_undo_cwnd,65 .name = "tcp_ca_wrong",66};67 68SEC(".struct_ops")69struct tcp_congestion_ops ca_no_link = {70 .cong_control = (void *)ca_update_cong_control,71 .ssthresh = (void *)ca_update_ssthresh,72 .undo_cwnd = (void *)ca_update_undo_cwnd,73 .name = "tcp_ca_no_link",74};75