forked from iovisor/bcc
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_brb2.c
More file actions
32 lines (28 loc) · 933 Bytes
/
test_brb2.c
File metadata and controls
32 lines (28 loc) · 933 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// Copyright (c) PLUMgrid, Inc.
// Licensed under the Apache License, Version 2.0 (the "License")
#include <bcc/proto.h>
// physical endpoint manager (pem) tables which connects VMs and bridges
// <ifindex_in, ifindex_out>
BPF_TABLE("hash", u32, u32, pem_dest, 256);
// <0, tx_pkts>
BPF_TABLE("array", u32, u32, pem_stats, 1);
int pem(struct __sk_buff *skb) {
u32 ifindex_in, *ifindex_p;
u8 *cursor = 0;
struct ethernet_t *ethernet = cursor_advance(cursor, sizeof(*ethernet));
ifindex_in = skb->ingress_ifindex;
ifindex_p = pem_dest.lookup(&ifindex_in);
if (ifindex_p) {
#if 1
if (ethernet->type == 0x0800 || ethernet->type == 0x0806) {
/* accumulate stats */
u32 index = 0;
u32 *value = pem_stats.lookup(&index);
if (value)
lock_xadd(value, 1);
}
#endif
bpf_clone_redirect(skb, *ifindex_p, 0);
}
return 1;
}