-
Notifications
You must be signed in to change notification settings - Fork 118
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
selftests/bpf: Add test cases to test narrower ctx field loads
Add test cases in test_verifier and test_progs. Negative tests are added in test_verifier as well. The test in test_progs will compare the value of narrower ctx field load result vs. the masked value of normal full-field load result, and will fail if they are not the same. Acked-by: Daniel Borkmann <daniel@iogearbox.net> Signed-off-by: Yonghong Song <yhs@fb.com> Signed-off-by: David S. Miller <davem@davemloft.net>
- Loading branch information
1 parent
31fd858
commit 18f3d6b
Showing
4 changed files
with
234 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
/* Copyright (c) 2017 Facebook | ||
* | ||
* This program is free software; you can redistribute it and/or | ||
* modify it under the terms of version 2 of the GNU General Public | ||
* License as published by the Free Software Foundation. | ||
*/ | ||
#include <stddef.h> | ||
#include <string.h> | ||
#include <linux/bpf.h> | ||
#include <linux/pkt_cls.h> | ||
#include "bpf_helpers.h" | ||
|
||
int _version SEC("version") = 1; | ||
|
||
#define TEST_FIELD(TYPE, FIELD, MASK) \ | ||
{ \ | ||
TYPE tmp = *(volatile TYPE *)&skb->FIELD; \ | ||
if (tmp != ((*(volatile __u32 *)&skb->FIELD) & MASK)) \ | ||
return TC_ACT_SHOT; \ | ||
} | ||
|
||
SEC("test1") | ||
int process(struct __sk_buff *skb) | ||
{ | ||
TEST_FIELD(__u8, len, 0xFF); | ||
TEST_FIELD(__u16, len, 0xFFFF); | ||
TEST_FIELD(__u32, len, 0xFFFFFFFF); | ||
TEST_FIELD(__u16, protocol, 0xFFFF); | ||
TEST_FIELD(__u32, protocol, 0xFFFFFFFF); | ||
TEST_FIELD(__u8, hash, 0xFF); | ||
TEST_FIELD(__u16, hash, 0xFFFF); | ||
TEST_FIELD(__u32, hash, 0xFFFFFFFF); | ||
|
||
return TC_ACT_OK; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters