summaryrefslogtreecommitdiff
path: root/tools/testing/selftests/bpf/sockmap_parse_prog.c
diff options
context:
space:
mode:
authorJohn Fastabend <john.fastabend@gmail.com>2018-03-18 12:57:31 -0700
committerDaniel Borkmann <daniel@iogearbox.net>2018-03-19 21:14:39 +0100
commit82a8616889d506cb690cfc0afb2ccadda120461d (patch)
tree69830c783d9c4b3ee6d7857fabbd9f0b89ac58af /tools/testing/selftests/bpf/sockmap_parse_prog.c
parent015632bb30daaaee64e1bcac07570860e0bf3092 (diff)
downloadlinux-82a8616889d506cb690cfc0afb2ccadda120461d.tar.gz
linux-82a8616889d506cb690cfc0afb2ccadda120461d.tar.bz2
linux-82a8616889d506cb690cfc0afb2ccadda120461d.zip
bpf: add map tests for BPF_PROG_TYPE_SK_MSG
Add map tests to attach BPF_PROG_TYPE_SK_MSG types to a sockmap. Signed-off-by: John Fastabend <john.fastabend@gmail.com> Acked-by: David S. Miller <davem@davemloft.net> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Diffstat (limited to 'tools/testing/selftests/bpf/sockmap_parse_prog.c')
-rw-r--r--tools/testing/selftests/bpf/sockmap_parse_prog.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/tools/testing/selftests/bpf/sockmap_parse_prog.c b/tools/testing/selftests/bpf/sockmap_parse_prog.c
index a1dec2b6d9c5..0f92858f6226 100644
--- a/tools/testing/selftests/bpf/sockmap_parse_prog.c
+++ b/tools/testing/selftests/bpf/sockmap_parse_prog.c
@@ -20,14 +20,25 @@ int bpf_prog1(struct __sk_buff *skb)
__u32 lport = skb->local_port;
__u32 rport = skb->remote_port;
__u8 *d = data;
+ __u32 len = (__u32) data_end - (__u32) data;
+ int err;
- if (data + 10 > data_end)
- return skb->len;
+ if (data + 10 > data_end) {
+ err = bpf_skb_pull_data(skb, 10);
+ if (err)
+ return SK_DROP;
+
+ data_end = (void *)(long)skb->data_end;
+ data = (void *)(long)skb->data;
+ if (data + 10 > data_end)
+ return SK_DROP;
+ }
/* This write/read is a bit pointless but tests the verifier and
* strparser handler for read/write pkt data and access into sk
* fields.
*/
+ d = data;
d[7] = 1;
return skb->len;
}