netns.sh (782c72af567fc2ef09bd7615d0307f24de72c7e0) | netns.sh (20ae1d6aa159eb91a9bf09ff92ccaa94dbea92c2) |
---|---|
1#!/bin/bash 2# SPDX-License-Identifier: GPL-2.0 3# 4# Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. 5# 6# This script tests the below topology: 7# 8# ┌─────────────────────┐ ┌──────────────────────────────────┐ ┌─────────────────────┐ --- 599 unchanged lines hidden (view full) --- 608exec 4< <(n0 ncat -l -u -p 1111) 609ncat_pid=$! 610waitncatudp $netns0 $ncat_pid 611ip0 link set wg0 up 612! read -r -n 1 -t 2 <&4 || false 613kill $ncat_pid 614ip0 link del wg0 615 | 1#!/bin/bash 2# SPDX-License-Identifier: GPL-2.0 3# 4# Copyright (C) 2015-2019 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved. 5# 6# This script tests the below topology: 7# 8# ┌─────────────────────┐ ┌──────────────────────────────────┐ ┌─────────────────────┐ --- 599 unchanged lines hidden (view full) --- 608exec 4< <(n0 ncat -l -u -p 1111) 609ncat_pid=$! 610waitncatudp $netns0 $ncat_pid 611ip0 link set wg0 up 612! read -r -n 1 -t 2 <&4 || false 613kill $ncat_pid 614ip0 link del wg0 615 |
616# Ensure that dst_cache references don't outlive netns lifetime 617ip1 link add dev wg0 type wireguard 618ip2 link add dev wg0 type wireguard 619configure_peers 620ip1 link add veth1 type veth peer name veth2 621ip1 link set veth2 netns $netns2 622ip1 addr add fd00:aa::1/64 dev veth1 623ip2 addr add fd00:aa::2/64 dev veth2 624ip1 link set veth1 up 625ip2 link set veth2 up 626waitiface $netns1 veth1 627waitiface $netns2 veth2 628ip1 -6 route add default dev veth1 via fd00:aa::2 629ip2 -6 route add default dev veth2 via fd00:aa::1 630n1 wg set wg0 peer "$pub2" endpoint [fd00:aa::2]:2 631n2 wg set wg0 peer "$pub1" endpoint [fd00:aa::1]:1 632n1 ping6 -c 1 fd00::2 633pp ip netns delete $netns1 634pp ip netns delete $netns2 635pp ip netns add $netns1 636pp ip netns add $netns2 637 |
|
616# Ensure there aren't circular reference loops 617ip1 link add wg1 type wireguard 618ip2 link add wg2 type wireguard 619ip1 link set wg1 netns $netns2 620ip2 link set wg2 netns $netns1 621pp ip netns delete $netns1 622pp ip netns delete $netns2 623pp ip netns add $netns1 624pp ip netns add $netns2 625 626sleep 2 # Wait for cleanup and grace periods 627declare -A objects 628while read -t 0.1 -r line 2>/dev/null || [[ $? -ne 142 ]]; do 629 [[ $line =~ .*(wg[0-9]+:\ [A-Z][a-z]+\ ?[0-9]*)\ .*(created|destroyed).* ]] || continue 630 objects["${BASH_REMATCH[1]}"]+="${BASH_REMATCH[2]}" 631done < /dev/kmsg 632alldeleted=1 633for object in "${!objects[@]}"; do | 638# Ensure there aren't circular reference loops 639ip1 link add wg1 type wireguard 640ip2 link add wg2 type wireguard 641ip1 link set wg1 netns $netns2 642ip2 link set wg2 netns $netns1 643pp ip netns delete $netns1 644pp ip netns delete $netns2 645pp ip netns add $netns1 646pp ip netns add $netns2 647 648sleep 2 # Wait for cleanup and grace periods 649declare -A objects 650while read -t 0.1 -r line 2>/dev/null || [[ $? -ne 142 ]]; do 651 [[ $line =~ .*(wg[0-9]+:\ [A-Z][a-z]+\ ?[0-9]*)\ .*(created|destroyed).* ]] || continue 652 objects["${BASH_REMATCH[1]}"]+="${BASH_REMATCH[2]}" 653done < /dev/kmsg 654alldeleted=1 655for object in "${!objects[@]}"; do |
634 if [[ ${objects["$object"]} != *createddestroyed ]]; then | 656 if [[ ${objects["$object"]} != *createddestroyed && ${objects["$object"]} != *createdcreateddestroyeddestroyed ]]; then |
635 echo "Error: $object: merely ${objects["$object"]}" >&3 636 alldeleted=0 637 fi 638done 639[[ $alldeleted -eq 1 ]] 640pretty "" "Objects that were created were also destroyed." | 657 echo "Error: $object: merely ${objects["$object"]}" >&3 658 alldeleted=0 659 fi 660done 661[[ $alldeleted -eq 1 ]] 662pretty "" "Objects that were created were also destroyed." |