}
"""
b = BPF(text=text)
- b.attach_kprobe(event="__vfs_read", fn_name="trace_read_entry")
+ try:
+ b.attach_kprobe(event="__vfs_read", fn_name="trace_read_entry")
+ except Exception:
+ print('Current kernel does not have __vfs_read, try vfs_read instead')
+ b.attach_kprobe(event="vfs_read", fn_name="trace_read_entry")
def test_printk_f(self):
text = """
BPF_HASH(fwd_map, struct FwdKey, struct FwdLeaf, 1);
// array
-struct ConfigKey {
- u32 index;
-};
struct ConfigLeaf {
u32 bpfdev_ip;
u32 slave_ip;
};
-BPF_TABLE("array", struct ConfigKey, struct ConfigLeaf, config_map, 1);
+BPF_TABLE("array", u32, struct ConfigLeaf, config_map, 1);
// hash
struct MacaddrKey {
// make sure configured
u32 slave_ip;
- struct ConfigKey cfg_key = {.index = 0};
+ u32 cfg_key = 0;
struct ConfigLeaf *cfg_leaf = config_map.lookup(&cfg_key);
if (cfg_leaf) {
slave_ip = cfg_leaf->slave_ip;
u64 src_mac;
u64 dst_mac;
- struct ConfigKey cfg_key = {.index = 0};
+ u32 cfg_key = 0;
struct ConfigLeaf *cfg_leaf = config_map.lookup(&cfg_key);
if (cfg_leaf) {
struct MacaddrKey mac_key = {.ip = cfg_leaf->bpfdev_ip};
shutil.copy(libz_path, b"/tmp")
libz = ctypes.CDLL("/tmp/libz.so.1")
- time.sleep(1)
+ time.sleep(3)
libz.zlibVersion()
time.sleep(5)
os._exit(0)
b = bcc.BPF(text=text)
b.attach_uprobe(name=libname, sym=symname, fn_name="count", pid=child_pid)
b.attach_uretprobe(name=libname, sym=symname, fn_name="count", pid=child_pid)
- time.sleep(1)
+ time.sleep(5)
self.assertEqual(b["stats"][ctypes.c_int(0)].value, 2)
b.detach_uretprobe(name=libname, sym=symname, pid=child_pid)
b.detach_uprobe(name=libname, sym=symname, pid=child_pid)