mirror of
				https://github.com/xdp-project/bpf-examples.git
				synced 2024-05-06 15:54:53 +00:00 
			
		
		
		
	Split and rename files so there is one userspace program (pping) and two kernel-space ones (one for XDP and one for TC-BPF). Copy the shell script for loading the TC-BPF program from traffic-pacing-edt folder, but add support for loading a specific section. The XDP and TC-BPF programs do not share the ts_start map, so program does not work. Signed-off-by: Simon Sundberg <simon.sundberg@kau.se>
		
			
				
	
	
		
			91 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.2 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
 | |
| 
 | |
| 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 ""
 | |
| }
 | |
| 
 | |
| # 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: -- "$@")
 | |
| 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
 | |
|           ;;
 | |
|         -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
 |