brintos

brintos / linux-shallow public Read only

0
0
Text · 802 B · c2c8f2f Raw
46 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2 3#include <linux/bpf.h>4#include <bpf/bpf_helpers.h>5 6struct inner_map {7	__uint(type, BPF_MAP_TYPE_ARRAY);8	__uint(max_entries, 5);9	__type(key, int);10	__type(value, int);11} inner_map1 SEC(".maps");12 13struct outer_map {14	__uint(type, BPF_MAP_TYPE_HASH_OF_MAPS);15	__uint(max_entries, 3);16	__type(key, int);17	__array(values, struct inner_map);18} outer_map1 SEC(".maps") = {19	.values = {20		[2] = &inner_map1,21	},22};23 24SEC("raw_tp/sys_enter")25int handle__sys_enter(void *ctx)26{27	int outer_key = 2, inner_key = 3;28	int *val;29	void *map;30 31	map = bpf_map_lookup_elem(&outer_map1, &outer_key);32	if (!map)33		return 1;34 35	val = bpf_map_lookup_elem(map, &inner_key);36	if (!val)37		return 1;38 39	if (*val == 1)40		*val = 2;41 42	return 0;43}44 45char _license[] SEC("license") = "GPL";46