mirror of
https://github.com/xdp-project/bpf-examples.git
synced 2024-05-06 15:54:53 +00:00
Load and pin the tc-bpf program in pping.c using libbpf, and only attach the pinned program using iproute. That way, can use features that are not supported by the old iproute loader, even if iproute does not have libbpf support. To support this change, extend bpf_egress_loader with option to load pinned program. Additionally, remove configure script and parts of Makefile that are no longer needed. Furthermore, remove multiple definitions of ts_start map, and place singular definition in pping_helpers.h which is included by both BPF programs. Also, some minor fixes based on Toke's review. Signed-off-by: Simon Sundberg <simon.sundberg@kau.se>
101 lines
2.5 KiB
Bash
101 lines
2.5 KiB
Bash
#
|
|
# Common parameter parsing used by scripts in this directory
|
|
# - Depending on bash 3 (or higher) syntax
|
|
#
|
|
# Author: Jesper Dangaaard Brouer <netoptimizer@brouer.com>
|
|
# License: GPLv2
|
|
#
|
|
# Modified by Simon Sundberg <simon.sundberg@kau.se> to add support
|
|
# of optional section (--sec) option or attaching a pinned program
|
|
#
|
|
|
|
function usage() {
|
|
echo ""
|
|
echo "Usage: $0 [-vh] --dev ethX"
|
|
echo " -d | --dev : (\$DEV) Interface/device (required)"
|
|
echo " -v | --verbose : (\$VERBOSE) verbose"
|
|
echo " --remove : (\$REMOVE) Remove the rules"
|
|
echo " --dry-run : (\$DRYRUN) Dry-run only (echo tc commands)"
|
|
echo " -s | --stats : (\$STATS_ONLY) Call statistics command"
|
|
echo " -l | --list : (\$LIST) List setup after setup"
|
|
echo " --file | --obj : (\$BPF_OBJ) BPF-object file to load"
|
|
echo " --sec : (\$SEC) Section of BPF-object to load"
|
|
echo " --pinned : (\$PIN_PROG) Path to pinned program to attach"
|
|
echo ""
|
|
}
|
|
|
|
# Using external program "getopt" to get --long-options
|
|
OPTIONS=$(getopt -o vshd:l \
|
|
--long verbose,dry-run,remove,stats,list,help,dev:,file:,obj:,sec:,pinned: -- "$@")
|
|
if (( $? != 0 )); then
|
|
usage
|
|
err 2 "Error calling getopt"
|
|
fi
|
|
eval set -- "$OPTIONS"
|
|
|
|
## --- Parse command line arguments / parameters ---
|
|
while true; do
|
|
case "$1" in
|
|
-d | --dev ) # device
|
|
export DEV=$2
|
|
info "Device set to: DEV=$DEV" >&2
|
|
shift 2
|
|
;;
|
|
--file | --obj )
|
|
export BPF_OBJ=$2
|
|
info "BPF-object file: $BPF_OBJ" >&2
|
|
shift 2
|
|
;;
|
|
--sec )
|
|
export SEC=$2
|
|
info "Section to load: $SEC" >&2
|
|
shift 2
|
|
;;
|
|
--pinned )
|
|
export PIN_PROG=$2
|
|
info "Pinned program path: $PIN_PROG" >&2
|
|
shift 2
|
|
;;
|
|
-v | --verbose)
|
|
export VERBOSE=yes
|
|
# info "Verbose mode: VERBOSE=$VERBOSE" >&2
|
|
shift
|
|
;;
|
|
--dry-run )
|
|
export DRYRUN=yes
|
|
export VERBOSE=yes
|
|
info "Dry-run mode: enable VERBOSE and don't call TC" >&2
|
|
shift
|
|
;;
|
|
--remove )
|
|
export REMOVE=yes
|
|
shift
|
|
;;
|
|
-s | --stats )
|
|
export STATS_ONLY=yes
|
|
shift
|
|
;;
|
|
-l | --list )
|
|
export LIST=yes
|
|
shift
|
|
;;
|
|
-- )
|
|
shift
|
|
break
|
|
;;
|
|
-h | --help )
|
|
usage;
|
|
exit 0
|
|
;;
|
|
* )
|
|
shift
|
|
break
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ -z "$DEV" ]; then
|
|
usage
|
|
err 2 "Please specify net_device (\$DEV)"
|
|
fi
|