--- /dev/null
+#!/bin/sh
+export PATH=${PATH}:/sbin
+NETCFG=/etc/network/interfaces
+
+[ "$1" = "-v" ] && DEBUG="printf" || DEBUG="true"
+
+lastiface=""
+lastgateway=""
+
+while read -r line
+do
+ if echo "${line}" | grep -q "[ \t]*#"
+ then
+ false
+ elif echo "${line}" | grep -q "^iface [^ ]* inet6 [^ ]*$"
+ then
+ echo "${line}" | ( IFS=' ' read -r _ iface _ method
+ "${DEBUG}" "Found %s with method %s.\n" "${iface}" "${method}"
+ if [ "${method}" != "static" ]
+ then
+ "${DEBUG}" "Interface %s does not use static configuration. Ambiguous config, exiting.\n" "${iface}"
+ exit 2
+ fi
+ ) || exit $?
+ lastiface="${line}"
+ elif [ -n "${lastiface}" ]
+ then
+ if gateway=$(echo "${line}" | grep -o "gateway *[0-9a-fA-F:]*:[0-9a-fA-F:]*")
+ then
+ if [ -z "${lastgateway}" ]
+ then
+ lastgateway="${gateway}"
+ "${DEBUG}" "Found %s for %s.\n" "${lastgateway}" "${lastiface}"
+ else
+ "${DEBUG}" "A gateway was already defined for another interface. Ambiguous situation, exiting.\n"
+ exit 3
+ fi
+ fi
+ fi
+done < "${NETCFG}"
+
+if [ -z "${lastiface}" ]
+then
+ "${DEBUG}" "No inet6 interface config found.\n"
+ exit 1
+else
+ iface=$(echo "${lastiface}" | grep -oP "(?<=iface )[^ ]*(?= inet6)")
+ "${DEBUG}" "Checking if %s needs to be reconfigured...\n" "${iface}"
+fi
+
+defroute=$(ip -6 route | grep "^default ")
+if [ -z "${defroute}" ] || echo "${defroute}" | grep -q " proto ra "
+then
+ # If we get here, we will provide output of our actions. It is not affected by verbose mode.
+ printf "No default route, or it is RA-configured. Reconfiguring %s...\n" "${iface}"
+ ifdown -v "${iface}"
+ ip link set "${iface}" down
+ ifup -v "${iface}"
+else
+ "${DEBUG}" "Found healthy default route: %s.\nNo action is necessary.\n" "${defroute}"
+fi