1*dfecb0c5SQingfang Deng#!/bin/bash 2*dfecb0c5SQingfang Deng# SPDX-License-Identifier: GPL-2.0 3*dfecb0c5SQingfang Deng# shellcheck disable=SC2153 4*dfecb0c5SQingfang Deng 5*dfecb0c5SQingfang Dengsource ../lib.sh 6*dfecb0c5SQingfang Deng 7*dfecb0c5SQingfang DengIP_SERVER="192.168.200.1" 8*dfecb0c5SQingfang DengIP_CLIENT="192.168.200.2" 9*dfecb0c5SQingfang Deng 10*dfecb0c5SQingfang Dengppp_common_init() { 11*dfecb0c5SQingfang Deng # Package requirements 12*dfecb0c5SQingfang Deng require_command socat 13*dfecb0c5SQingfang Deng require_command pppd 14*dfecb0c5SQingfang Deng require_command iperf3 15*dfecb0c5SQingfang Deng 16*dfecb0c5SQingfang Deng # Check for root privileges 17*dfecb0c5SQingfang Deng if [ "$(id -u)" -ne 0 ];then 18*dfecb0c5SQingfang Deng echo "SKIP: Need root privileges" 19*dfecb0c5SQingfang Deng exit "$ksft_skip" 20*dfecb0c5SQingfang Deng fi 21*dfecb0c5SQingfang Deng 22*dfecb0c5SQingfang Deng # Namespaces 23*dfecb0c5SQingfang Deng setup_ns NS_SERVER NS_CLIENT 24*dfecb0c5SQingfang Deng} 25*dfecb0c5SQingfang Deng 26*dfecb0c5SQingfang Dengppp_check_addr() { 27*dfecb0c5SQingfang Deng dev=$1 28*dfecb0c5SQingfang Deng addr=$2 29*dfecb0c5SQingfang Deng ns=$3 30*dfecb0c5SQingfang Deng ip -netns "$ns" -4 addr show dev "$dev" 2>/dev/null | grep -q "$addr" 31*dfecb0c5SQingfang Deng return $? 32*dfecb0c5SQingfang Deng} 33*dfecb0c5SQingfang Deng 34*dfecb0c5SQingfang Dengppp_test_connectivity() { 35*dfecb0c5SQingfang Deng slowwait 10 ppp_check_addr "ppp0" "$IP_CLIENT" "$NS_CLIENT" 36*dfecb0c5SQingfang Deng 37*dfecb0c5SQingfang Deng ip netns exec "$NS_CLIENT" ping -c 3 "$IP_SERVER" 38*dfecb0c5SQingfang Deng check_err $? 39*dfecb0c5SQingfang Deng 40*dfecb0c5SQingfang Deng ip netns exec "$NS_SERVER" iperf3 -s -1 -D 41*dfecb0c5SQingfang Deng wait_local_port_listen "$NS_SERVER" 5201 tcp 42*dfecb0c5SQingfang Deng 43*dfecb0c5SQingfang Deng ip netns exec "$NS_CLIENT" iperf3 -c "$IP_SERVER" -Z -t 2 44*dfecb0c5SQingfang Deng check_err $? 45*dfecb0c5SQingfang Deng} 46