mirror of
https://github.com/xdp-project/bpf-examples.git
synced 2024-05-06 15:54:53 +00:00
Add shell script for easier loading TC BPF egress program
Signed-off-by: Jesper Dangaard Brouer <[email protected]>
This commit is contained in:
committed by
Jesper Dangaard Brouer
parent
984faedafb
commit
f8546bbbce
Executable
+58
@@ -0,0 +1,58 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
#
|
||||
basedir=`dirname $0`
|
||||
source ${basedir}/functions.sh
|
||||
|
||||
root_check_run_with_sudo "$@"
|
||||
|
||||
export TC=/sbin/tc
|
||||
VERBOSE=1
|
||||
|
||||
DEV=$1
|
||||
if [[ -z "$DEV" ]]; then
|
||||
err 1 "Must specify DEV as argument"
|
||||
fi
|
||||
|
||||
# TODO: take this as input
|
||||
BPF_OBJ=edt_pacer01.o
|
||||
|
||||
info "Applying TC-BPF egress setup on device: $DEV with object file: $BPF_OBJ"
|
||||
|
||||
function tc_init_clsact()
|
||||
{
|
||||
local device=${1:-$DEV}
|
||||
shift
|
||||
|
||||
# TODO: find method that avoids flushing (all users)
|
||||
|
||||
# Also deletes all filters
|
||||
call_tc_allow_fail qdisc del dev "$device" clsact 2> /dev/null
|
||||
|
||||
# Load qdisc clsact which allow us to attach BPF-progs as TC filters
|
||||
call_tc qdisc add dev "$device" clsact
|
||||
}
|
||||
|
||||
function tc_egress_bpf_attach()
|
||||
{
|
||||
local device=${1:-$DEV}
|
||||
local objfile=${2:-$BPF_OBJ}
|
||||
shift 2
|
||||
|
||||
# TODO: Handle selecting program 'sec'
|
||||
call_tc filter add dev "$device" pref 2 handle 2 \
|
||||
egress bpf da obj "$objfile"
|
||||
}
|
||||
|
||||
function tc_egress_list()
|
||||
{
|
||||
local device=${1:-$DEV}
|
||||
|
||||
call_tc filter show dev "$device" egress
|
||||
}
|
||||
|
||||
tc_init_clsact $DEV
|
||||
tc_egress_bpf_attach $DEV $BPF_OBJ
|
||||
|
||||
info "Listing egress filter on device"
|
||||
tc_egress_list $DEV
|
||||
Reference in New Issue
Block a user