brintos

brintos / linux-shallow public Read only

0
0
Text · 1.1 KiB · 92b65a4 Raw
51 lines · c
1// SPDX-License-Identifier: GPL-2.02#include <linux/bpf.h>3#include <bpf/bpf_helpers.h>4 5struct {6	__uint(type, BPF_MAP_TYPE_DEVMAP);7	__uint(key_size, sizeof(__u32));8	__uint(value_size, sizeof(struct bpf_devmap_val));9	__uint(max_entries, 4);10} dm_ports SEC(".maps");11 12SEC("xdp")13int xdp_redir_prog(struct xdp_md *ctx)14{15	return bpf_redirect_map(&dm_ports, 0, 0);16}17 18/* invalid program on DEVMAP entry;19 * SEC name means expected attach type not set20 */21SEC("xdp")22int xdp_dummy_prog(struct xdp_md *ctx)23{24	return XDP_PASS;25}26 27/* valid program on DEVMAP entry via SEC name;28 * has access to egress and ingress ifindex29 */30SEC("xdp/devmap")31int xdp_dummy_dm(struct xdp_md *ctx)32{33	char fmt[] = "devmap redirect: dev %u -> dev %u len %u\n";34	void *data_end = (void *)(long)ctx->data_end;35	void *data = (void *)(long)ctx->data;36	unsigned int len = data_end - data;37 38	bpf_trace_printk(fmt, sizeof(fmt),39			 ctx->ingress_ifindex, ctx->egress_ifindex, len);40 41	return XDP_PASS;42}43 44SEC("xdp.frags/devmap")45int xdp_dummy_dm_frags(struct xdp_md *ctx)46{47	return XDP_PASS;48}49 50char _license[] SEC("license") = "GPL";51