You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
850 B
31 lines
850 B
#!/usr/bin/env python
|
|
# Copyright (c) PLUMgrid, Inc.
|
|
# Licensed under the Apache License, Version 2.0 (the "License")
|
|
|
|
from bcc import BPF
|
|
from pyroute2 import IPRoute
|
|
|
|
ipr = IPRoute()
|
|
|
|
text = """
|
|
int hello(struct __sk_buff *skb) {
|
|
return 1;
|
|
}
|
|
"""
|
|
|
|
try:
|
|
b = BPF(text=text, debug=0)
|
|
fn = b.load_func("hello", BPF.SCHED_CLS)
|
|
ipr.link_create(ifname="t1a", kind="veth", peer="t1b")
|
|
idx = ipr.link_lookup(ifname="t1a")[0]
|
|
|
|
ipr.tc("add", "ingress", idx, "ffff:")
|
|
ipr.tc("add-filter", "bpf", idx, ":1", fd=fn.fd,
|
|
name=fn.name, parent="ffff:", action="ok", classid=1)
|
|
ipr.tc("add", "sfq", idx, "1:")
|
|
ipr.tc("add-filter", "bpf", idx, ":1", fd=fn.fd,
|
|
name=fn.name, parent="1:", action="ok", classid=1)
|
|
finally:
|
|
if "idx" in locals(): ipr.link_remove(idx)
|
|
print("BPF tc functionality - SCHED_CLS: OK")
|