1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- #!/bin/bash
- # SPDX-License-Identifier: GPL-2.0
- #
- # Regression tests for the SO_TXTIME interface
- set -e
- readonly DEV="veth0"
- readonly BIN="./so_txtime"
- readonly RAND="$(mktemp -u XXXXXX)"
- readonly NSPREFIX="ns-${RAND}"
- readonly NS1="${NSPREFIX}1"
- readonly NS2="${NSPREFIX}2"
- readonly SADDR4='192.168.1.1'
- readonly DADDR4='192.168.1.2'
- readonly SADDR6='fd::1'
- readonly DADDR6='fd::2'
- cleanup() {
- ip netns del "${NS2}"
- ip netns del "${NS1}"
- }
- trap cleanup EXIT
- # Create virtual ethernet pair between network namespaces
- ip netns add "${NS1}"
- ip netns add "${NS2}"
- ip link add "${DEV}" netns "${NS1}" type veth \
- peer name "${DEV}" netns "${NS2}"
- # Bring the devices up
- ip -netns "${NS1}" link set "${DEV}" up
- ip -netns "${NS2}" link set "${DEV}" up
- # Set fixed MAC addresses on the devices
- ip -netns "${NS1}" link set dev "${DEV}" address 02:02:02:02:02:02
- ip -netns "${NS2}" link set dev "${DEV}" address 06:06:06:06:06:06
- # Add fixed IP addresses to the devices
- ip -netns "${NS1}" addr add 192.168.1.1/24 dev "${DEV}"
- ip -netns "${NS2}" addr add 192.168.1.2/24 dev "${DEV}"
- ip -netns "${NS1}" addr add fd::1/64 dev "${DEV}" nodad
- ip -netns "${NS2}" addr add fd::2/64 dev "${DEV}" nodad
- do_test() {
- local readonly IP="$1"
- local readonly CLOCK="$2"
- local readonly TXARGS="$3"
- local readonly RXARGS="$4"
- if [[ "${IP}" == "4" ]]; then
- local readonly SADDR="${SADDR4}"
- local readonly DADDR="${DADDR4}"
- elif [[ "${IP}" == "6" ]]; then
- local readonly SADDR="${SADDR6}"
- local readonly DADDR="${DADDR6}"
- else
- echo "Invalid IP version ${IP}"
- exit 1
- fi
- local readonly START="$(date +%s%N --date="+ 0.1 seconds")"
- ip netns exec "${NS2}" "${BIN}" -"${IP}" -c "${CLOCK}" -t "${START}" -S "${SADDR}" -D "${DADDR}" "${RXARGS}" -r &
- ip netns exec "${NS1}" "${BIN}" -"${IP}" -c "${CLOCK}" -t "${START}" -S "${SADDR}" -D "${DADDR}" "${TXARGS}"
- wait "$!"
- }
- ip netns exec "${NS1}" tc qdisc add dev "${DEV}" root fq
- do_test 4 mono a,-1 a,-1
- do_test 6 mono a,0 a,0
- do_test 6 mono a,10 a,10
- do_test 4 mono a,10,b,20 a,10,b,20
- do_test 6 mono a,20,b,10 b,20,a,20
- if ip netns exec "${NS1}" tc qdisc replace dev "${DEV}" root etf clockid CLOCK_TAI delta 400000; then
- ! do_test 4 tai a,-1 a,-1
- ! do_test 6 tai a,0 a,0
- do_test 6 tai a,10 a,10
- do_test 4 tai a,10,b,20 a,10,b,20
- do_test 6 tai a,20,b,10 b,10,a,20
- else
- echo "tc ($(tc -V)) does not support qdisc etf. skipping"
- fi
- echo OK. All tests passed
|