blob: c7788b546342aeb6bce34d32e3e4906bd48da919 [file] [log] [blame]
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (c) 2018 Oracle and/or its affiliates. All Rights Reserved.
TST_SETUP="setup"
TST_TESTFUNC="test"
TST_CLEANUP="cleanup"
TST_CNT=3
TST_MIN_KVER="4.1"
TST_NEEDS_TMPDIR=1
TST_NEEDS_ROOT=1
TST_NEEDS_DRIVERS="mpls_router"
TST_NEEDS_CMDS="sysctl modprobe"
. tst_net.sh
cleanup()
{
ip -f mpls route flush dev lo > /dev/null 2>&1
ip -f mpls route flush dev $(tst_iface) > /dev/null 2>&1
}
setup()
{
ROD modprobe mpls_router
}
test1()
{
ROD sysctl -q net.mpls.platform_labels=0xfffff
ROD ip -f mpls route add 0xffffe dev lo
ROD ip -f mpls route show \> /dev/null
ROD ip -f mpls route del 0xffffe dev lo
tst_res TPASS "added label 0xffffe to lo dev"
}
test2()
{
ROD sysctl -q net.mpls.platform_labels=0xffffe
ip -f mpls route add 0xffffe dev lo > /dev/null 2>&1
if [ $? -eq 0 ]; then
tst_res TFAIL "can add label that is >= platform_labels"
return
fi
tst_res TPASS "can't add label >= platform_lables"
}
test3()
{
local start=16
local end=$((start + NS_TIMES))
ROD sysctl -q net.mpls.platform_labels=$((end + 1))
tst_res TINFO "creating mpls routes with labels from $start..$end"
for l in $(seq $start $end); do
ROD ip -f mpls route add $l dev $(tst_iface)
done
tst_res TINFO "listing created routes"
ROD ip -f mpls route show \> /dev/null
tst_res TINFO "removing the routes"
for l in $(seq $start $end); do
ROD ip -f mpls route del $l dev $(tst_iface)
done
tst_res TPASS "created and removed mpls routes"
}
tst_run