xref: /aosp_15_r20/external/ltp/testcases/network/mpls/mpls02.sh (revision 49cdfc7efb34551c7342be41a7384b9c40d7cab7)
1*49cdfc7eSAndroid Build Coastguard Worker#!/bin/sh
2*49cdfc7eSAndroid Build Coastguard Worker# SPDX-License-Identifier: GPL-2.0-or-later
3*49cdfc7eSAndroid Build Coastguard Worker# Copyright (c) 2018 Oracle and/or its affiliates. All Rights Reserved.
4*49cdfc7eSAndroid Build Coastguard Worker
5*49cdfc7eSAndroid Build Coastguard WorkerTST_SETUP="setup"
6*49cdfc7eSAndroid Build Coastguard WorkerTST_TESTFUNC="do_test"
7*49cdfc7eSAndroid Build Coastguard WorkerTST_CLEANUP="cleanup"
8*49cdfc7eSAndroid Build Coastguard Worker
9*49cdfc7eSAndroid Build Coastguard Workercleanup()
10*49cdfc7eSAndroid Build Coastguard Worker{
11*49cdfc7eSAndroid Build Coastguard Worker	ip route del $ip_rmt/$mask > /dev/null 2>&1
12*49cdfc7eSAndroid Build Coastguard Worker	tst_rhost_run -c "ip route del $ip_loc/$mask" > /dev/null
13*49cdfc7eSAndroid Build Coastguard Worker
14*49cdfc7eSAndroid Build Coastguard Worker	[ -n "$ip_loc" ] && ip addr del $ip_loc/$mask dev lo > /dev/null 2>&1
15*49cdfc7eSAndroid Build Coastguard Worker	[ -n "$ip_rmt" ] && tst_rhost_run -c "ip addr del $ip_rmt/$mask dev lo" > \
16*49cdfc7eSAndroid Build Coastguard Worker					      /dev/null 2>&1
17*49cdfc7eSAndroid Build Coastguard Worker
18*49cdfc7eSAndroid Build Coastguard Worker	mpls_cleanup
19*49cdfc7eSAndroid Build Coastguard Worker}
20*49cdfc7eSAndroid Build Coastguard Worker
21*49cdfc7eSAndroid Build Coastguard Workersetup()
22*49cdfc7eSAndroid Build Coastguard Worker{
23*49cdfc7eSAndroid Build Coastguard Worker	mpls_setup 61
24*49cdfc7eSAndroid Build Coastguard Worker
25*49cdfc7eSAndroid Build Coastguard Worker	ip_loc=$(tst_ipaddr_un)
26*49cdfc7eSAndroid Build Coastguard Worker	ip_rmt=$(tst_ipaddr_un rhost)
27*49cdfc7eSAndroid Build Coastguard Worker	[ -n "$TST_IPV6" ] && mask=128 || mask=32
28*49cdfc7eSAndroid Build Coastguard Worker
29*49cdfc7eSAndroid Build Coastguard Worker	ROD ip addr add $ip_loc/$mask dev lo
30*49cdfc7eSAndroid Build Coastguard Worker	ROD ip route add $ip_rmt/$mask encap mpls 50 via inet$TST_IPV6 $(tst_ipaddr rhost)
31*49cdfc7eSAndroid Build Coastguard Worker	ROD ip -f mpls route add 60 dev lo
32*49cdfc7eSAndroid Build Coastguard Worker
33*49cdfc7eSAndroid Build Coastguard Worker	tst_rhost_run -s -c "ip addr add $ip_rmt/$mask dev lo"
34*49cdfc7eSAndroid Build Coastguard Worker	tst_rhost_run -s -c "ip route add $ip_loc/$mask encap mpls 60 via inet$TST_IPV6 $(tst_ipaddr)"
35*49cdfc7eSAndroid Build Coastguard Worker	tst_rhost_run -s -c "ip -f mpls route add 50 dev lo"
36*49cdfc7eSAndroid Build Coastguard Worker}
37*49cdfc7eSAndroid Build Coastguard Worker
38*49cdfc7eSAndroid Build Coastguard Workerdo_test()
39*49cdfc7eSAndroid Build Coastguard Worker{
40*49cdfc7eSAndroid Build Coastguard Worker	local type=$2
41*49cdfc7eSAndroid Build Coastguard Worker	local max_size=$TST_NET_MAX_PKT
42*49cdfc7eSAndroid Build Coastguard Worker
43*49cdfc7eSAndroid Build Coastguard Worker	if [ "$type" = "icmp" ]; then
44*49cdfc7eSAndroid Build Coastguard Worker		tst_ping -I $ip_loc -H $ip_rmt -s "10 100 1000 2000 $max_size"
45*49cdfc7eSAndroid Build Coastguard Worker	else
46*49cdfc7eSAndroid Build Coastguard Worker		tst_netload -S $ip_loc -H $ip_rmt -T $type -n 10 -N 10
47*49cdfc7eSAndroid Build Coastguard Worker		tst_netload -S $ip_loc -H $ip_rmt -T $type -A $max_size
48*49cdfc7eSAndroid Build Coastguard Worker	fi
49*49cdfc7eSAndroid Build Coastguard Worker}
50*49cdfc7eSAndroid Build Coastguard Worker
51*49cdfc7eSAndroid Build Coastguard Worker. mpls_lib.sh
52*49cdfc7eSAndroid Build Coastguard Workertst_run
53