1*53632e11SMartin KaFai Lau // SPDX-License-Identifier: GPL-2.0 2*53632e11SMartin KaFai Lau /* Copyright (c) 2020 Facebook */ 3*53632e11SMartin KaFai Lau 4*53632e11SMartin KaFai Lau #include <vmlinux.h> 5*53632e11SMartin KaFai Lau #include <bpf/bpf_tracing.h> 6*53632e11SMartin KaFai Lau #include <bpf/bpf_helpers.h> 7*53632e11SMartin KaFai Lau 8*53632e11SMartin KaFai Lau struct { 9*53632e11SMartin KaFai Lau __uint(type, BPF_MAP_TYPE_SK_STORAGE); 10*53632e11SMartin KaFai Lau __uint(map_flags, BPF_F_NO_PREALLOC); 11*53632e11SMartin KaFai Lau __type(key, int); 12*53632e11SMartin KaFai Lau __type(value, int); 13*53632e11SMartin KaFai Lau } sk_stg_map SEC(".maps"); 14*53632e11SMartin KaFai Lau 15*53632e11SMartin KaFai Lau SEC("fentry/bpf_sk_storage_free") BPF_PROG(trace_bpf_sk_storage_free,struct sock * sk)16*53632e11SMartin KaFai Lauint BPF_PROG(trace_bpf_sk_storage_free, struct sock *sk) 17*53632e11SMartin KaFai Lau { 18*53632e11SMartin KaFai Lau int *value; 19*53632e11SMartin KaFai Lau 20*53632e11SMartin KaFai Lau value = bpf_sk_storage_get(&sk_stg_map, sk, 0, 21*53632e11SMartin KaFai Lau BPF_SK_STORAGE_GET_F_CREATE); 22*53632e11SMartin KaFai Lau 23*53632e11SMartin KaFai Lau if (value) 24*53632e11SMartin KaFai Lau *value = 1; 25*53632e11SMartin KaFai Lau 26*53632e11SMartin KaFai Lau return 0; 27*53632e11SMartin KaFai Lau } 28*53632e11SMartin KaFai Lau 29*53632e11SMartin KaFai Lau char _license[] SEC("license") = "GPL"; 30