#!/bin/sh

tcp_cca="$(cat /proc/sys/net/ipv4/tcp_congestion_control 2>/dev/null)"
nat_mode="disabled"
hnat_available=false
[ -e /sys/kernel/debug/hnat/hook_toggle ] && hnat_available=true

rules="$(iptables-save -t nat 2>/dev/null)"

if printf '%s\n' "$rules" | grep -q -- '--mode fullcone'; then
	nat_mode="nat1"
elif printf '%s\n' "$rules" | grep -q -- '-j FULLCONENAT'; then
	nat_mode="fullcone"
else
	rules="$(nft list ruleset 2>/dev/null)"

	if printf '%s\n' "$rules" | grep -Eq 'masquerade[[:space:]]+fullcone'; then
		nat_mode="nat1"
	elif printf '%s\n' "$rules" | grep -Eq '(^|[[:space:]])fullcone([[:space:]]|$)'; then
		nat_mode="fullcone"
	fi
fi

printf '{"nat_mode":"%s","tcp_cca":"%s","hnat_available":%s}\n' "$nat_mode" "$tcp_cca" "$hnat_available"
