blob: f0258e50482665b2738fde113c58070a223f5749 [file] [log] [blame]
Brenden Blanco09e77f72015-06-16 00:21:57 -07001#!/usr/bin/env python
2# Copyright (c) PLUMgrid, Inc.
3# Licensed under the Apache License, Version 2.0 (the "License")
4
5from bpf import BPF
6from pyroute2 import IPRoute
7
Brenden Blanco09e77f72015-06-16 00:21:57 -07008ipr = IPRoute()
9
10text = """
11int hello(struct __sk_buff *skb) {
12 return 1;
13}
14"""
15
16try:
17 b = BPF(text=text, debug=0)
18 fn = b.load_func("hello", BPF.SCHED_CLS)
19 ipr.link_create(ifname="t1a", kind="veth", peer="t1b")
20 idx = ipr.link_lookup(ifname="t1a")[0]
21
22 ipr.tc("add", "ingress", idx, "ffff:")
23 ipr.tc("add-filter", "bpf", idx, ":1", fd=fn.fd,
24 name=fn.name, parent="ffff:", action="ok", classid=1)
25 ipr.tc("add", "sfq", idx, "1:")
26 ipr.tc("add-filter", "bpf", idx, ":1", fd=fn.fd,
27 name=fn.name, parent="1:", action="ok", classid=1)
28finally:
29 if "idx" in locals(): ipr.link_remove(idx)
Yonghong Song8bbf0622015-08-10 11:19:53 -070030print("BPF tc functionality - SCHED_CLS: OK")