13b1c420bSYonghong Song // SPDX-License-Identifier: GPL-2.0 23b1c420bSYonghong Song /* Copyright (c) 2020 Facebook */ 33b1c420bSYonghong Song #include "bpf_iter.h" 43b1c420bSYonghong Song #include "bpf_tracing_net.h" 53b1c420bSYonghong Song #include <bpf/bpf_helpers.h> 63b1c420bSYonghong Song #include <bpf/bpf_tracing.h> 73b1c420bSYonghong Song 83b1c420bSYonghong Song char _license[] SEC("license") = "GPL"; 93b1c420bSYonghong Song 103b1c420bSYonghong Song struct { 113b1c420bSYonghong Song __uint(type, BPF_MAP_TYPE_SK_STORAGE); 123b1c420bSYonghong Song __uint(map_flags, BPF_F_NO_PREALLOC); 133b1c420bSYonghong Song __type(key, int); 143b1c420bSYonghong Song __type(value, int); 153b1c420bSYonghong Song } sk_stg_map SEC(".maps"); 163b1c420bSYonghong Song 173b1c420bSYonghong Song __u32 val_sum = 0; 183b1c420bSYonghong Song __u32 ipv6_sk_count = 0; 19*939a1a94SHou Tao __u32 to_add_val = 0; 203b1c420bSYonghong Song 213b1c420bSYonghong Song SEC("iter/bpf_sk_storage_map") rw_bpf_sk_storage_map(struct bpf_iter__bpf_sk_storage_map * ctx)22*939a1a94SHou Taoint rw_bpf_sk_storage_map(struct bpf_iter__bpf_sk_storage_map *ctx) 233b1c420bSYonghong Song { 243b1c420bSYonghong Song struct sock *sk = ctx->sk; 253b1c420bSYonghong Song __u32 *val = ctx->value; 263b1c420bSYonghong Song 27*939a1a94SHou Tao if (sk == NULL || val == NULL) 283b1c420bSYonghong Song return 0; 293b1c420bSYonghong Song 303b1c420bSYonghong Song if (sk->sk_family == AF_INET6) 313b1c420bSYonghong Song ipv6_sk_count++; 323b1c420bSYonghong Song 333b1c420bSYonghong Song val_sum += *val; 34*939a1a94SHou Tao 35*939a1a94SHou Tao *val += to_add_val; 36*939a1a94SHou Tao 37*939a1a94SHou Tao return 0; 38*939a1a94SHou Tao } 39*939a1a94SHou Tao 40*939a1a94SHou Tao SEC("iter/bpf_sk_storage_map") oob_write_bpf_sk_storage_map(struct bpf_iter__bpf_sk_storage_map * ctx)41*939a1a94SHou Taoint oob_write_bpf_sk_storage_map(struct bpf_iter__bpf_sk_storage_map *ctx) 42*939a1a94SHou Tao { 43*939a1a94SHou Tao struct sock *sk = ctx->sk; 44*939a1a94SHou Tao __u32 *val = ctx->value; 45*939a1a94SHou Tao 46*939a1a94SHou Tao if (sk == NULL || val == NULL) 47*939a1a94SHou Tao return 0; 48*939a1a94SHou Tao 49*939a1a94SHou Tao *(val + 1) = 0xdeadbeef; 50*939a1a94SHou Tao 513b1c420bSYonghong Song return 0; 523b1c420bSYonghong Song } 53