mirror of
https://github.com/torvalds/linux.git
synced 2026-01-12 00:42:35 +08:00
selftests: netdevsim: add carrier state consistency test
This commit adds a test case for netdevsim carrier state consistency. Specifically, the added test verifies the carrier state during the following operations: 1. Unlink two netdevsims 2. ifdown one netdevsim, then ifup again 3. Link the netdevsims again 4. ifdown one netdevsim, then ifup again These steps verifies that the carrier is UP iff two netdevsims are linked and ifuped. Signed-off-by: Yohei Kojima <yk@y-koj.net> Link: https://patch.msgid.link/481e2729e53b6074ebfc0ad85764d8feb244de8c.1767624906.git.yk@y-koj.net Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
d83dddffe1
commit
75df712cdd
@@ -52,6 +52,39 @@ cleanup_ns()
|
||||
ip netns del nssv
|
||||
}
|
||||
|
||||
is_carrier_up()
|
||||
{
|
||||
local netns="$1"
|
||||
local nsim_dev="$2"
|
||||
|
||||
test "$(ip netns exec "$netns" \
|
||||
cat /sys/class/net/"$nsim_dev"/carrier 2>/dev/null)" -eq 1
|
||||
}
|
||||
|
||||
assert_carrier_up()
|
||||
{
|
||||
local netns="$1"
|
||||
local nsim_dev="$2"
|
||||
|
||||
if ! is_carrier_up "$netns" "$nsim_dev"; then
|
||||
echo "$nsim_dev's carrier should be UP, but it isn't"
|
||||
cleanup_ns
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
assert_carrier_down()
|
||||
{
|
||||
local netns="$1"
|
||||
local nsim_dev="$2"
|
||||
|
||||
if is_carrier_up "$netns" "$nsim_dev"; then
|
||||
echo "$nsim_dev's carrier should be DOWN, but it isn't"
|
||||
cleanup_ns
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
###
|
||||
### Code start
|
||||
###
|
||||
@@ -113,6 +146,32 @@ if [ $? -eq 0 ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# netdevsim carrier state consistency checking
|
||||
assert_carrier_up nssv "$NSIM_DEV_1_NAME"
|
||||
assert_carrier_up nscl "$NSIM_DEV_2_NAME"
|
||||
|
||||
echo "$NSIM_DEV_1_FD:$NSIM_DEV_1_IFIDX" > "$NSIM_DEV_SYS_UNLINK"
|
||||
|
||||
assert_carrier_down nssv "$NSIM_DEV_1_NAME"
|
||||
assert_carrier_down nscl "$NSIM_DEV_2_NAME"
|
||||
|
||||
ip netns exec nssv ip link set dev "$NSIM_DEV_1_NAME" down
|
||||
ip netns exec nssv ip link set dev "$NSIM_DEV_1_NAME" up
|
||||
|
||||
assert_carrier_down nssv "$NSIM_DEV_1_NAME"
|
||||
assert_carrier_down nscl "$NSIM_DEV_2_NAME"
|
||||
|
||||
echo "$NSIM_DEV_1_FD:$NSIM_DEV_1_IFIDX $NSIM_DEV_2_FD:$NSIM_DEV_2_IFIDX" > $NSIM_DEV_SYS_LINK
|
||||
|
||||
assert_carrier_up nssv "$NSIM_DEV_1_NAME"
|
||||
assert_carrier_up nscl "$NSIM_DEV_2_NAME"
|
||||
|
||||
ip netns exec nssv ip link set dev "$NSIM_DEV_1_NAME" down
|
||||
ip netns exec nssv ip link set dev "$NSIM_DEV_1_NAME" up
|
||||
|
||||
assert_carrier_up nssv "$NSIM_DEV_1_NAME"
|
||||
assert_carrier_up nscl "$NSIM_DEV_2_NAME"
|
||||
|
||||
# send/recv packets
|
||||
|
||||
tmp_file=$(mktemp)
|
||||
|
||||
Reference in New Issue
Block a user