#! /bin/bash

declare -a ipv4_transit=()
declare -a ipv6_transit=()
declare -a ipv4_origin=()
declare -a ipv6_origin=()

for ipv in ipv{4,6}; do
	declare -n transit="${ipv}_transit"
	declare -n origin="${ipv}_origin"
	exec 3< <(exec sort -u $ipv)
	while read path <&3; do
		o="${path##* }"
		origin[$o]=1
		echo "path: ${path}"
		echo "origin: $o"
		for t in ${path% *}; do
			[[ "$t" -ne "$o" ]] && transit[$t]=1 && echo "transit: $t"
		done
	done
	exec 3<&-
done

exec 3>&1
function count_not_in()
{
	local -n sa="$1"
	local -n da="$2"
	local x c=0

	for x in "${!sa[@]}"; do
		[[ -z "${da[$x]}" ]] && (( ++c )) && echo "${x} in $1 but not $2" >&3
	done
	echo >&3
	echo $c
}

ipv4_origin_only=$(count_not_in ipv4_origin ipv6_origin)
ipv6_origin_only=$(count_not_in ipv6_origin ipv4_origin)
ipv4_transit_only=$(count_not_in ipv4_transit ipv6_transit)
ipv6_transit_only=$(count_not_in ipv6_transit ipv4_transit)

echo "Total IPv4 origin ASs: ${#ipv4_origin[@]}"
echo "Total IPv6 origin ASs: ${#ipv6_origin[@]}"
echo "Total IPv4-only origin ASs: $ipv4_origin_only"
echo "Total IPv6-only origin ASs: $ipv6_origin_only"
echo
echo "Total IPv4 transit ASs: ${#ipv4_transit[@]}"
echo "Total IPv6 transit ASs: ${#ipv6_transit[@]}"
echo "Total IPv4-only transit ASs: $ipv4_transit_only"
echo "Total IPv6-only transit ASs: $ipv6_transit_only"
