Ensure other events (like hostname changes, DHCP lease renewals, etc.) are ignored as they are very unlikely to be relevant for clatd.
37 lines
1.3 KiB
Bash
37 lines
1.3 KiB
Bash
#!/bin/sh
|
|
#
|
|
# clatd dispatcher script for NetworkManager
|
|
#
|
|
# Install it to: /etc/NetworkManager/dispatcher.d/50-clatd
|
|
#
|
|
# Written by Tore Anderson <tore@fud.no>
|
|
#
|
|
|
|
# Newer NetworkManager versions will run the dispatcher scripts once
|
|
# a new unmanaged interface shows up, including the 'clat' interface
|
|
# created by clatd/TAYGA. So if we're being called due to our own
|
|
# interface showing up, do nothing, otherwise we will end up
|
|
# committing suicide from the restarts below
|
|
[ "$DEVICE_IFACE" = "clat" ] && exit 0
|
|
|
|
# We're only acting on interface "up" or "down" events. NM will run the
|
|
# dispatcher scripts for other events we're not interested in, like the
|
|
# hostname being set or a DHCP lease being renewed. Ignore those.
|
|
[ "$2" != "up" ] && [ "$2" != "down" ] && exit 0
|
|
|
|
# We simply restart clatd in all situations, as no matter if an interface
|
|
# goes up or down, it may mean that the PLAT device changes, it may mean
|
|
# native IPv4 appearing or disappearing, or it may mean that DNS64 became
|
|
# available or unavailable...it's far easier to simply restart always and
|
|
# start from scratch than to figure out if a restart is truly necessary
|
|
|
|
# systemd-based distros
|
|
if test -x /usr/bin/systemctl; then
|
|
/usr/bin/systemctl restart clatd.service
|
|
fi
|
|
|
|
# upstart-based distros
|
|
if test -x /sbin/initctl; then
|
|
/sbin/initctl restart clatd
|
|
fi
|