#!/bin/bash
# SPDX-License-Identifier: GPL-2.0

# +---------------------------+                +------------------------------+
# |                    vrf-h1 |                |                       vrf-h2 |
# |    + $h1                  |                |    + $h2                     |
# |    | 10.1.1.101/24        |                |    | 10.1.2.101/24           |
# |    | default via 10.1.1.1 |                |    | default via 10.1.2.1    |
# +----|----------------------+                +----|-------------------------+
#      |                                            |
# +----|--------------------------------------------|-------------------------+
# | SW |                                            |                         |
# | +--|--------------------------------------------|-----------------------+ |
# | |  + $swp1                         br1          + $swp2                 | |
# | |     vid 10 pvid untagged                         vid 20 pvid untagged | |
# | |                                                                       | |
# | |  + vx10                                       + vx20                  | |
# | |    local 10.0.0.1                               local 10.0.0.1        | |
# | |    remote 10.0.0.2                              remote 10.0.0.2       | |
# | |    id 1010                                      id 1020               | |
# | |    dstport 4789                                 dstport 4789          | |
# | |    vid 10 pvid untagged                         vid 20 pvid untagged  | |
# | |                                                                       | |
# | |                             + vx4001                                  | |
# | |                               local 10.0.0.1                          | |
# | |                               remote 10.0.0.2                         | |
# | |                               id 104001                               | |
# | |                               dstport 4789                            | |
# | |                               vid 4001 pvid untagged                  | |
# | |                                                                       | |
# | +-----------------------------------+-----------------------------------+ |
# |                                     |                                     |
# | +-----------------------------------|-----------------------------------+ |
# | |                                   |                                   | |
# | |  +--------------------------------+--------------------------------+  | |
# | |  |                                |                                |  | |
# | |  + vlan10                         |                         vlan20 +  | |
# | |  | 10.1.1.11/24                   |                   10.1.2.11/24 |  | |
# | |  |                                |                                |  | |
# | |  + vlan10-v (macvlan)             +             vlan20-v (macvlan) +  | |
# | |    10.1.1.1/24                vlan4001                 10.1.2.1/24    | |
# | |    00:00:5e:00:01:01                             00:00:5e:00:01:01    | |
# | |                               vrf-green                               | |
# | +-----------------------------------------------------------------------+ |
# |                                                                           |
# |    + $rp1                                       +lo                       |
# |    | 192.0.2.1/24                                10.0.0.1/32              |
# +----|----------------------------------------------------------------------+
#      |
# +----|--------------------------------------------------------+
# |    |                            vrf-spine                   |
# |    + $rp2                                                   |
# |      192.0.2.2/24                                           |
# |                                                             |   (maybe) HW
# =============================================================================
# |                                                             |  (likely) SW
# |                                                             |
# |    + v1 (veth)                                              |
# |    | 192.0.3.2/24                                           |
# +----|--------------------------------------------------------+
#      |
# +----|----------------------------------------------------------------------+
# |    + v2 (veth)                                  +lo           NS1 (netns) |
# |      192.0.3.1/24                                10.0.0.2/32              |
# |                                                                           |
# | +-----------------------------------------------------------------------+ |
# | |                               vrf-green                               | |
# | |  + vlan10-v (macvlan)                           vlan20-v (macvlan) +  | |
# | |  | 10.1.1.1/24                                         10.1.2.1/24 |  | |
# | |  | 00:00:5e:00:01:01                             00:00:5e:00:01:01 |  | |
# | |  |                            vlan4001                             |  | |
# | |  + vlan10                         +                         vlan20 +  | |
# | |  | 10.1.1.12/24                   |                   10.1.2.12/24 |  | |
# | |  |                                |                                |  | |
# | |  +--------------------------------+--------------------------------+  | |
# | |                                   |                                   | |
# | +-----------------------------------|-----------------------------------+ |
# |                                     |                                     |
# | +-----------------------------------+-----------------------------------+ |
# | |                                                                       | |
# | |  + vx10                                     + vx20                    | |
# | |    local 10.0.0.2                             local 10.0.0.2          | |
# | |    remote 10.0.0.1                            remote 10.0.0.1         | |
# | |    id 1010                                    id 1020                 | |
# | |    dstport 4789                               dstport 4789            | |
# | |    vid 10 pvid untagged                       vid 20 pvid untagged    | |
# | |                                                                       | |
# | |                             + vx4001                                  | |
# | |                               local 10.0.0.2                          | |
# | |                               remote 10.0.0.1                         | |
# | |                               id 104001                               | |
# | |                               dstport 4789                            | |
# | |                               vid 4001 pvid untagged                  | |
# | |                                                                       | |
# | |  + w1 (veth)                                + w3 (veth)               | |
# | |  | vid 10 pvid untagged          br1        | vid 20 pvid untagged    | |
# | +--|------------------------------------------|-------------------------+ |
# |    |                                          |                           |
# |    |                                          |                           |
# | +--|----------------------+                +--|-------------------------+ |
# | |  |               vrf-h1 |                |  |                  vrf-h2 | |
# | |  + w2 (veth)            |                |  + w4 (veth)               | |
# | |    10.1.1.102/24        |                |    10.1.2.102/24           | |
# | |    default via 10.1.1.1 |                |    default via 10.1.2.1    | |
# | +-------------------------+                +----------------------------+ |
# +---------------------------------------------------------------------------+

ALL_TESTS="
	ping_ipv4
"
NUM_NETIFS=6
source lib.sh

hx_create()
{
	local vrf_name=$1; shift
	local if_name=$1; shift
	local ip_addr=$1; shift
	local gw_ip=$1; shift

	vrf_create $vrf_name
	ip link set dev $if_name master $vrf_name
	ip link set dev $vrf_name up
	ip link set dev $if_name up

	ip address add $ip_addr/24 dev $if_name
	ip neigh replace $gw_ip lladdr 00:00:5e:00:01:01 nud permanent \
		dev $if_name
	ip route add default vrf $vrf_name nexthop via $gw_ip
}
export -f hx_create

hx_destroy()
{
	local vrf_name=$1; shift
	local if_name=$1; shift
	local ip_addr=$1; shift
	local gw_ip=$1; shift

	ip route del default vrf $vrf_name nexthop via $gw_ip
	ip neigh del $gw_ip dev $if_name
	ip address del $ip_addr/24 dev $if_name

	ip link set dev $if_name down
	vrf_destroy $vrf_name
}

h1_create()
{
	hx_create "vrf-h1" $h1 10.1.1.101 10.1.1.1
}

h1_destroy()
{
	hx_destroy "vrf-h1" $h1 10.1.1.101 10.1.1.1
}

h2_create()
{
	hx_create "vrf-h2" $h2 10.1.2.101 10.1.2.1
}

h2_destroy()
{
	hx_destroy "vrf-h2" $h2 10.1.2.101 10.1.2.1
}

switch_create()
{
	ip link add name br1 type bridge vlan_filtering 1 vlan_default_pvid 0 \
		mcast_snooping 0
	# Make sure the bridge uses the MAC address of the local port and not
	# that of the VxLAN's device.
	ip link set dev br1 address $(mac_get $swp1)
	ip link set dev br1 up

	ip link set dev $rp1 up
	ip address add dev $rp1 192.0.2.1/24
	ip route add 10.0.0.2/32 nexthop via 192.0.2.2

	ip link add name vx10 type vxlan id 1010		\
		local 10.0.0.1 remote 10.0.0.2 dstport 4789	\
		nolearning noudpcsum tos inherit ttl 100
	ip link set dev vx10 up

	ip link set dev vx10 master br1
	bridge vlan add vid 10 dev vx10 pvid untagged

	ip link add name vx20 type vxlan id 1020		\
		local 10.0.0.1 remote 10.0.0.2 dstport 4789	\
		nolearning noudpcsum tos inherit ttl 100
	ip link set dev vx20 up

	ip link set dev vx20 master br1
	bridge vlan add vid 20 dev vx20 pvid untagged

	ip link set dev $swp1 master br1
	ip link set dev $swp1 up
	bridge vlan add vid 10 dev $swp1 pvid untagged

	ip link set dev $swp2 master br1
	ip link set dev $swp2 up
	bridge vlan add vid 20 dev $swp2 pvid untagged

	ip link add name vx4001 type vxlan id 104001		\
		local 10.0.0.1 dstport 4789			\
		nolearning noudpcsum tos inherit ttl 100
	ip link set dev vx4001 up

	ip link set dev vx4001 master br1
	bridge vlan add vid 4001 dev vx4001 pvid untagged

	ip address add 10.0.0.1/32 dev lo

	# Create SVIs
	vrf_create "vrf-green"
	ip link set dev vrf-green up

	ip link add link br1 name vlan10 up master vrf-green type vlan id 10
	ip address add 10.1.1.11/24 dev vlan10
	ip link add link vlan10 name vlan10-v up master vrf-green \
		address 00:00:5e:00:01:01 type macvlan mode private
	ip address add 10.1.1.1/24 dev vlan10-v

	ip link add link br1 name vlan20 up master vrf-green type vlan id 20
	ip address add 10.1.2.11/24 dev vlan20
	ip link add link vlan20 name vlan20-v up master vrf-green \
		address 00:00:5e:00:01:01 type macvlan mode private
	ip address add 10.1.2.1/24 dev vlan20-v

	ip link add link br1 name vlan4001 up master vrf-green \
		type vlan id 4001

	bridge vlan add vid 10 dev br1 self
	bridge vlan add vid 20 dev br1 self
	bridge vlan add vid 4001 dev br1 self

	bridge fdb add 00:00:5e:00:01:01 dev br1 self local vlan 10
	bridge fdb add 00:00:5e:00:01:01 dev br1 self local vlan 20
}

switch_destroy()
{
	bridge fdb del 00:00:5e:00:01:01 dev br1 self local vlan 20
	bridge fdb del 00:00:5e:00:01:01 dev br1 self local vlan 10

	bridge vlan del vid 4001 dev br1 self
	bridge vlan del vid 20 dev br1 self
	bridge vlan del vid 10 dev br1 self

	ip link del dev vlan4001

	ip link del dev vlan20

	ip link del dev vlan10

	vrf_destroy "vrf-green"

	ip address del 10.0.0.1/32 dev lo

	bridge vlan del vid 20 dev $swp2
	ip link set dev $swp2 down
	ip link set dev $swp2 nomaster

	bridge vlan del vid 10 dev $swp1
	ip link set dev $swp1 down
	ip link set dev $swp1 nomaster

	bridge vlan del vid 4001 dev vx4001
	ip link set dev vx4001 nomaster

	ip link set dev vx4001 down
	ip link del dev vx4001

	bridge vlan del vid 20 dev vx20
	ip link set dev vx20 nomaster

	ip link set dev vx20 down
	ip link del dev vx20

	bridge vlan del vid 10 dev vx10
	ip link set dev vx10 nomaster

	ip link set dev vx10 down
	ip link del dev vx10

	ip route del 10.0.0.2/32 nexthop via 192.0.2.2
	ip address del dev $rp1 192.0.2.1/24
	ip link set dev $rp1 down

	ip link set dev br1 down
	ip link del dev br1
}

spine_create()
{
	vrf_create "vrf-spine"
	ip link set dev $rp2 master vrf-spine
	ip link set dev v1 master vrf-spine
	ip link set dev vrf-spine up
	ip link set dev $rp2 up
	ip link set dev v1 up

	ip address add 192.0.2.2/24 dev $rp2
	ip address add 192.0.3.2/24 dev v1

	ip route add 10.0.0.1/32 vrf vrf-spine nexthop via 192.0.2.1
	ip route add 10.0.0.2/32 vrf vrf-spine nexthop via 192.0.3.1
}

spine_destroy()
{
	ip route del 10.0.0.2/32 vrf vrf-spine nexthop via 192.0.3.1
	ip route del 10.0.0.1/32 vrf vrf-spine nexthop via 192.0.2.1

	ip address del 192.0.3.2/24 dev v1
	ip address del 192.0.2.2/24 dev $rp2

	ip link set dev v1 down
	ip link set dev $rp2 down
	vrf_destroy "vrf-spine"
}

ns_h1_create()
{
	hx_create "vrf-h1" w2 10.1.1.102 10.1.1.1
}
export -f ns_h1_create

ns_h2_create()
{
	hx_create "vrf-h2" w4 10.1.2.102 10.1.2.1
}
export -f ns_h2_create

ns_switch_create()
{
	ip link add name br1 type bridge vlan_filtering 1 vlan_default_pvid 0 \
		mcast_snooping 0
	ip link set dev br1 up

	ip link set dev v2 up
	ip address add dev v2 192.0.3.1/24
	ip route add 10.0.0.1/32 nexthop via 192.0.3.2

	ip link add name vx10 type vxlan id 1010		\
		local 10.0.0.2 remote 10.0.0.1 dstport 4789	\
		nolearning noudpcsum tos inherit ttl 100
	ip link set dev vx10 up

	ip link set dev vx10 master br1
	bridge vlan add vid 10 dev vx10 pvid untagged

	ip link add name vx20 type vxlan id 1020		\
		local 10.0.0.2 remote 10.0.0.1 dstport 4789	\
		nolearning noudpcsum tos inherit ttl 100
	ip link set dev vx20 up

	ip link set dev vx20 master br1
	bridge vlan add vid 20 dev vx20 pvid untagged

	ip link add name vx4001 type vxlan id 104001		\
		local 10.0.0.2 dstport 4789			\
		nolearning noudpcsum tos inherit ttl 100
	ip link set dev vx4001 up

	ip link set dev vx4001 master br1
	bridge vlan add vid 4001 dev vx4001 pvid untagged

	ip link set dev w1 master br1
	ip link set dev w1 up
	bridge vlan add vid 10 dev w1 pvid untagged

	ip link set dev w3 master br1
	ip link set dev w3 up
	bridge vlan add vid 20 dev w3 pvid untagged

	ip address add 10.0.0.2/32 dev lo

	# Create SVIs
	vrf_create "vrf-green"
	ip link set dev vrf-green up

	ip link add link br1 name vlan10 up master vrf-green type vlan id 10
	ip address add 10.1.1.12/24 dev vlan10
	ip link add link vlan10 name vlan10-v up master vrf-green \
		address 00:00:5e:00:01:01 type macvlan mode private
	ip address add 10.1.1.1/24 dev vlan10-v

	ip link add link br1 name vlan20 up master vrf-green type vlan id 20
	ip address add 10.1.2.12/24 dev vlan20
	ip link add link vlan20 name vlan20-v up master vrf-green \
		address 00:00:5e:00:01:01 type macvlan mode private
	ip address add 10.1.2.1/24 dev vlan20-v

	ip link add link br1 name vlan4001 up master vrf-green \
		type vlan id 4001

	bridge vlan add vid 10 dev br1 self
	bridge vlan add vid 20 dev br1 self
	bridge vlan add vid 4001 dev br1 self

	bridge fdb add 00:00:5e:00:01:01 dev br1 self local vlan 10
	bridge fdb add 00:00:5e:00:01:01 dev br1 self local vlan 20
}
export -f ns_switch_create

ns_init()
{
	ip link add name w1 type veth peer name w2
	ip link add name w3 type veth peer name w4

	ip link set dev lo up

	ns_h1_create
	ns_h2_create
	ns_switch_create
}
export -f ns_init

ns1_create()
{
	ip netns add ns1
	ip link set dev v2 netns ns1
	in_ns ns1 ns_init
}

ns1_destroy()
{
	ip netns exec ns1 ip link set dev v2 netns 1
	ip netns del ns1
}

__l2_vni_init()
{
	local mac1=$1; shift
	local mac2=$1; shift
	local ip1=$1; shift
	local ip2=$1; shift
	local dst=$1; shift

	bridge fdb add $mac1 dev vx10 self master extern_learn static \
		dst $dst vlan 10
	bridge fdb add $mac2 dev vx20 self master extern_learn static \
		dst $dst vlan 20

	ip neigh add $ip1 lladdr $mac1 nud noarp dev vlan10 \
		extern_learn
	ip neigh add $ip2 lladdr $mac2 nud noarp dev vlan20 \
		extern_learn
}
export -f __l2_vni_init

l2_vni_init()
{
	local h1_ns_mac=$(in_ns ns1 mac_get w2)
	local h2_ns_mac=$(in_ns ns1 mac_get w4)
	local h1_mac=$(mac_get $h1)
	local h2_mac=$(mac_get $h2)

	__l2_vni_init $h1_ns_mac $h2_ns_mac 10.1.1.102 10.1.2.102 10.0.0.2
	in_ns ns1 __l2_vni_init $h1_mac $h2_mac 10.1.1.101 10.1.2.101 10.0.0.1
}

__l3_vni_init()
{
	local mac=$1; shift
	local vtep_ip=$1; shift
	local host1_ip=$1; shift
	local host2_ip=$1; shift

	bridge fdb add $mac dev vx4001 self master extern_learn static \
		dst $vtep_ip vlan 4001

	ip neigh add $vtep_ip lladdr $mac nud noarp dev vlan4001 extern_learn

	ip route add $host1_ip/32 vrf vrf-green nexthop via $vtep_ip \
		dev vlan4001 onlink
	ip route add $host2_ip/32 vrf vrf-green nexthop via $vtep_ip \
		dev vlan4001 onlink
}
export -f __l3_vni_init

l3_vni_init()
{
	local vlan4001_ns_mac=$(in_ns ns1 mac_get vlan4001)
	local vlan4001_mac=$(mac_get vlan4001)

	__l3_vni_init $vlan4001_ns_mac 10.0.0.2 10.1.1.102 10.1.2.102
	in_ns ns1 __l3_vni_init $vlan4001_mac 10.0.0.1 10.1.1.101 10.1.2.101
}

setup_prepare()
{
	h1=${NETIFS[p1]}
	swp1=${NETIFS[p2]}

	swp2=${NETIFS[p3]}
	h2=${NETIFS[p4]}

	rp1=${NETIFS[p5]}
	rp2=${NETIFS[p6]}

	vrf_prepare
	forwarding_enable

	h1_create
	h2_create
	switch_create

	ip link add name v1 type veth peer name v2
	spine_create
	ns1_create

	l2_vni_init
	l3_vni_init
}

cleanup()
{
	pre_cleanup

	ns1_destroy
	spine_destroy
	ip link del dev v1

	switch_destroy
	h2_destroy
	h1_destroy

	forwarding_restore
	vrf_cleanup
}

ping_ipv4()
{
	ping_test $h1 10.1.2.101 ": local->local vid 10->vid 20"
	ping_test $h1 10.1.1.102 ": local->remote vid 10->vid 10"
	ping_test $h2 10.1.2.102 ": local->remote vid 20->vid 20"
	ping_test $h1 10.1.2.102 ": local->remote vid 10->vid 20"
	ping_test $h2 10.1.1.102 ": local->remote vid 20->vid 10"
}

trap cleanup EXIT

setup_prepare
setup_wait

tests_run

exit $EXIT_STATUS
