cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

ip6_forward_instats_vrf.sh (3092B)


      1#!/bin/bash
      2# SPDX-License-Identifier: GPL-2.0
      3
      4# Test ipv6 stats on the incoming if when forwarding with VRF
      5
      6ALL_TESTS="
      7	ipv6_ping
      8	ipv6_in_too_big_err
      9	ipv6_in_hdr_err
     10	ipv6_in_addr_err
     11	ipv6_in_discard
     12"
     13
     14NUM_NETIFS=4
     15source lib.sh
     16
     17h1_create()
     18{
     19	simple_if_init $h1 2001:1:1::2/64
     20	ip -6 route add vrf v$h1 2001:1:2::/64 via 2001:1:1::1
     21}
     22
     23h1_destroy()
     24{
     25	ip -6 route del vrf v$h1 2001:1:2::/64 via 2001:1:1::1
     26	simple_if_fini $h1 2001:1:1::2/64
     27}
     28
     29router_create()
     30{
     31	vrf_create router
     32	__simple_if_init $rtr1 router 2001:1:1::1/64
     33	__simple_if_init $rtr2 router 2001:1:2::1/64
     34	mtu_set $rtr2 1280
     35}
     36
     37router_destroy()
     38{
     39	mtu_restore $rtr2
     40	__simple_if_fini $rtr2 2001:1:2::1/64
     41	__simple_if_fini $rtr1 2001:1:1::1/64
     42	vrf_destroy router
     43}
     44
     45h2_create()
     46{
     47	simple_if_init $h2 2001:1:2::2/64
     48	ip -6 route add vrf v$h2 2001:1:1::/64 via 2001:1:2::1
     49	mtu_set $h2 1280
     50}
     51
     52h2_destroy()
     53{
     54	mtu_restore $h2
     55	ip -6 route del vrf v$h2 2001:1:1::/64 via 2001:1:2::1
     56	simple_if_fini $h2 2001:1:2::2/64
     57}
     58
     59setup_prepare()
     60{
     61	h1=${NETIFS[p1]}
     62	rtr1=${NETIFS[p2]}
     63
     64	rtr2=${NETIFS[p3]}
     65	h2=${NETIFS[p4]}
     66
     67	vrf_prepare
     68	h1_create
     69	router_create
     70	h2_create
     71
     72	forwarding_enable
     73}
     74
     75cleanup()
     76{
     77	pre_cleanup
     78
     79	forwarding_restore
     80
     81	h2_destroy
     82	router_destroy
     83	h1_destroy
     84	vrf_cleanup
     85}
     86
     87ipv6_in_too_big_err()
     88{
     89	RET=0
     90
     91	local t0=$(ipv6_stats_get $rtr1 Ip6InTooBigErrors)
     92	local vrf_name=$(master_name_get $h1)
     93
     94	# Send too big packets
     95	ip vrf exec $vrf_name \
     96		$PING6 -s 1300 2001:1:2::2 -c 1 -w $PING_TIMEOUT &> /dev/null
     97
     98	local t1=$(ipv6_stats_get $rtr1 Ip6InTooBigErrors)
     99	test "$((t1 - t0))" -ne 0
    100	check_err $?
    101	log_test "Ip6InTooBigErrors"
    102}
    103
    104ipv6_in_hdr_err()
    105{
    106	RET=0
    107
    108	local t0=$(ipv6_stats_get $rtr1 Ip6InHdrErrors)
    109	local vrf_name=$(master_name_get $h1)
    110
    111	# Send packets with hop limit 1, easiest with traceroute6 as some ping6
    112	# doesn't allow hop limit to be specified
    113	ip vrf exec $vrf_name \
    114		$TROUTE6 2001:1:2::2 &> /dev/null
    115
    116	local t1=$(ipv6_stats_get $rtr1 Ip6InHdrErrors)
    117	test "$((t1 - t0))" -ne 0
    118	check_err $?
    119	log_test "Ip6InHdrErrors"
    120}
    121
    122ipv6_in_addr_err()
    123{
    124	RET=0
    125
    126	local t0=$(ipv6_stats_get $rtr1 Ip6InAddrErrors)
    127	local vrf_name=$(master_name_get $h1)
    128
    129	# Disable forwarding temporary while sending the packet
    130	sysctl -qw net.ipv6.conf.all.forwarding=0
    131	ip vrf exec $vrf_name \
    132		$PING6 2001:1:2::2 -c 1 -w $PING_TIMEOUT &> /dev/null
    133	sysctl -qw net.ipv6.conf.all.forwarding=1
    134
    135	local t1=$(ipv6_stats_get $rtr1 Ip6InAddrErrors)
    136	test "$((t1 - t0))" -ne 0
    137	check_err $?
    138	log_test "Ip6InAddrErrors"
    139}
    140
    141ipv6_in_discard()
    142{
    143	RET=0
    144
    145	local t0=$(ipv6_stats_get $rtr1 Ip6InDiscards)
    146	local vrf_name=$(master_name_get $h1)
    147
    148	# Add a policy to discard
    149	ip xfrm policy add dst 2001:1:2::2/128 dir fwd action block
    150	ip vrf exec $vrf_name \
    151		$PING6 2001:1:2::2 -c 1 -w $PING_TIMEOUT &> /dev/null
    152	ip xfrm policy del dst 2001:1:2::2/128 dir fwd
    153
    154	local t1=$(ipv6_stats_get $rtr1 Ip6InDiscards)
    155	test "$((t1 - t0))" -ne 0
    156	check_err $?
    157	log_test "Ip6InDiscards"
    158}
    159ipv6_ping()
    160{
    161	RET=0
    162
    163	ping6_test $h1 2001:1:2::2
    164}
    165
    166trap cleanup EXIT
    167
    168setup_prepare
    169setup_wait
    170tests_run
    171
    172exit $EXIT_STATUS