| #!/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 |