aboutsummaryrefslogtreecommitdiffstats
path: root/examples/bpf/bpf_tailcall.c
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2017-11-26 08:25:14 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2017-11-26 08:25:14 +0000
commite4637bd9ed150244a906bc8b080f649034b68c8f (patch)
tree4a56d9683737ec68d8f0e5615abfea118eec6426 /examples/bpf/bpf_tailcall.c
parent1934149f47ee4dfe2b22258c2e18f55a510b5889 (diff)
parent2d868b48b2f313deb4853e8ac5047d05132969c5 (diff)
downloadplatform_external_iproute2-e4637bd9ed150244a906bc8b080f649034b68c8f.tar.gz
platform_external_iproute2-e4637bd9ed150244a906bc8b080f649034b68c8f.tar.bz2
platform_external_iproute2-e4637bd9ed150244a906bc8b080f649034b68c8f.zip
Change-Id: Ic9de3ebd76d093ed177a6197aee2a9beaed4a247
Diffstat (limited to 'examples/bpf/bpf_tailcall.c')
-rw-r--r--examples/bpf/bpf_tailcall.c41
1 files changed, 29 insertions, 12 deletions
diff --git a/examples/bpf/bpf_tailcall.c b/examples/bpf/bpf_tailcall.c
index 040790d0..1a30426c 100644
--- a/examples/bpf/bpf_tailcall.c
+++ b/examples/bpf/bpf_tailcall.c
@@ -26,20 +26,40 @@
* classifier behaviour.
*/
-BPF_PROG_ARRAY(jmp_tc, FOO, PIN_OBJECT_NS, MAX_JMP_SIZE);
-BPF_PROG_ARRAY(jmp_ex, BAR, PIN_OBJECT_NS, 1);
-
-BPF_ARRAY4(map_sh, 0, PIN_OBJECT_NS, 1);
+struct bpf_elf_map __section_maps jmp_tc = {
+ .type = BPF_MAP_TYPE_PROG_ARRAY,
+ .id = FOO,
+ .size_key = sizeof(uint32_t),
+ .size_value = sizeof(uint32_t),
+ .pinning = PIN_OBJECT_NS,
+ .max_elem = MAX_JMP_SIZE,
+};
+
+struct bpf_elf_map __section_maps jmp_ex = {
+ .type = BPF_MAP_TYPE_PROG_ARRAY,
+ .id = BAR,
+ .size_key = sizeof(uint32_t),
+ .size_value = sizeof(uint32_t),
+ .pinning = PIN_OBJECT_NS,
+ .max_elem = 1,
+};
+
+struct bpf_elf_map __section_maps map_sh = {
+ .type = BPF_MAP_TYPE_ARRAY,
+ .size_key = sizeof(uint32_t),
+ .size_value = sizeof(uint32_t),
+ .pinning = PIN_OBJECT_NS,
+ .max_elem = 1,
+};
__section_tail(FOO, ENTRY_0)
int cls_case1(struct __sk_buff *skb)
{
- char fmt[] = "case1: map-val: %d from:%u\n";
int key = 0, *val;
val = map_lookup_elem(&map_sh, &key);
if (val)
- trace_printk(fmt, sizeof(fmt), *val, skb->cb[0]);
+ printt("case1: map-val: %d from:%u\n", *val, skb->cb[0]);
skb->cb[0] = ENTRY_0;
tail_call(skb, &jmp_ex, ENTRY_0);
@@ -50,12 +70,11 @@ int cls_case1(struct __sk_buff *skb)
__section_tail(FOO, ENTRY_1)
int cls_case2(struct __sk_buff *skb)
{
- char fmt[] = "case2: map-val: %d from:%u\n";
int key = 0, *val;
val = map_lookup_elem(&map_sh, &key);
if (val)
- trace_printk(fmt, sizeof(fmt), *val, skb->cb[0]);
+ printt("case2: map-val: %d from:%u\n", *val, skb->cb[0]);
skb->cb[0] = ENTRY_1;
tail_call(skb, &jmp_tc, ENTRY_0);
@@ -66,12 +85,11 @@ int cls_case2(struct __sk_buff *skb)
__section_tail(BAR, ENTRY_0)
int cls_exit(struct __sk_buff *skb)
{
- char fmt[] = "exit: map-val: %d from:%u\n";
int key = 0, *val;
val = map_lookup_elem(&map_sh, &key);
if (val)
- trace_printk(fmt, sizeof(fmt), *val, skb->cb[0]);
+ printt("exit: map-val: %d from:%u\n", *val, skb->cb[0]);
/* Termination point. */
return BPF_H_DEFAULT;
@@ -80,7 +98,6 @@ int cls_exit(struct __sk_buff *skb)
__section_cls_entry
int cls_entry(struct __sk_buff *skb)
{
- char fmt[] = "fallthrough\n";
int key = 0, *val;
/* For transferring state, we can use skb->cb[0] ... skb->cb[4]. */
@@ -92,7 +109,7 @@ int cls_entry(struct __sk_buff *skb)
tail_call(skb, &jmp_tc, skb->hash & (MAX_JMP_SIZE - 1));
}
- trace_printk(fmt, sizeof(fmt));
+ printt("fallthrough\n");
return BPF_H_DEFAULT;
}