xref: /aosp_15_r20/external/ltp/testcases/network/mpls/mpls01.sh (revision 49cdfc7efb34551c7342be41a7384b9c40d7cab7)
1#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0-or-later
3# Copyright (c) 2018 Oracle and/or its affiliates. All Rights Reserved.
4
5TST_SETUP="setup"
6TST_TESTFUNC="test"
7TST_CLEANUP="cleanup"
8TST_CNT=3
9TST_MIN_KVER="4.1"
10TST_NEEDS_TMPDIR=1
11TST_NEEDS_ROOT=1
12TST_NEEDS_DRIVERS="mpls_router"
13TST_NEEDS_CMDS="sysctl modprobe"
14
15
16cleanup()
17{
18	ip -f mpls route flush dev lo > /dev/null 2>&1
19	ip -f mpls route flush dev $(tst_iface) > /dev/null 2>&1
20}
21
22setup()
23{
24	ROD modprobe mpls_router
25}
26
27test1()
28{
29	ROD sysctl -q net.mpls.platform_labels=0xfffff
30	ROD ip -f mpls route add 0xffffe dev lo
31	ROD ip -f mpls route show \> /dev/null
32	ROD ip -f mpls route del 0xffffe dev lo
33	tst_res TPASS "added label 0xffffe to lo dev"
34}
35
36test2()
37{
38	ROD sysctl -q net.mpls.platform_labels=0xffffe
39	ip -f mpls route add 0xffffe dev lo > /dev/null 2>&1
40	if [ $? -eq 0 ]; then
41		tst_res TFAIL "can add label that is >= platform_labels"
42		return
43	fi
44
45	tst_res TPASS "can't add label >= platform_lables"
46}
47
48test3()
49{
50	local start=16
51	local end=$((start + NS_TIMES))
52
53	ROD sysctl -q net.mpls.platform_labels=$((end + 1))
54	tst_res TINFO "creating mpls routes with labels from $start..$end"
55	for l in $(seq $start $end); do
56		ROD ip -f mpls route add $l dev $(tst_iface)
57	done
58
59	tst_res TINFO "listing created routes"
60	ROD ip -f mpls route show \> /dev/null
61
62	tst_res TINFO "removing the routes"
63	for l in $(seq $start $end); do
64		ROD ip -f mpls route del $l dev $(tst_iface)
65	done
66	tst_res TPASS "created and removed mpls routes"
67}
68
69. tst_net.sh
70tst_run
71