Slide 19
Slide 19 text
ҙ ༻ڥʹΑͬͯॻ͖ํ͕एׯҟͳΔ
2018-11-28 Internet Week 2018
BoF 19
#include
#include "bpf_helpers.h"
struct bpf_map_def SEC("maps") counter = {
.type = BPF_MAP_TYPE_ARRAY,
.key_size = sizeof(__u32),
.value_size = sizeof(__u64),
.max_entries = XDP_REDIRECT + 1,
};
SEC("prog")
int xdp_prog(struct xdp_md *ctx) {
__u64 data_len = ctx->data_end - ctx->data;
int action = XDP_DROP;
long *value = bpf_map_lookup_elem(&counter, &action);
if (value)
*value += data_len; // non-atomic
return action;
}
BPF_ARRAY(counter, u64, XDP_REDIRECT + 1);
int xdp_prog(struct xdp_md *ctx) {
u64 data_len = ctx->data_end - ctx->data;
int action = XDP_DROP;
// non-atomic
counter.increment(action, data_len);
return action;
}
BCC
iproute2 + bpf_helpers.h
• include
• Mapsyntax sugar