aboutsummaryrefslogtreecommitdiffstats
path: root/templates/usr_local_bin_restore_jail_aliases.sh.j2
diff options
context:
space:
mode:
authorJan Tuomi <jan@jantuomi.fi>2025-07-02 22:04:25 +0300
committerJan Tuomi <jan@jantuomi.fi>2025-07-02 22:04:25 +0300
commit5c235db068ae5b604a2a315f8bdbba0e7853a756 (patch)
tree5c75e6d6806f30e61e0721eab1e3c64aced65004 /templates/usr_local_bin_restore_jail_aliases.sh.j2
parent026131479b0281ea0cdfd6ac5edfaa79fced3f2a (diff)
Restore jail aliases on if up
Diffstat (limited to 'templates/usr_local_bin_restore_jail_aliases.sh.j2')
-rw-r--r--templates/usr_local_bin_restore_jail_aliases.sh.j227
1 files changed, 27 insertions, 0 deletions
diff --git a/templates/usr_local_bin_restore_jail_aliases.sh.j2 b/templates/usr_local_bin_restore_jail_aliases.sh.j2
new file mode 100644
index 0000000..25d317f
--- /dev/null
+++ b/templates/usr_local_bin_restore_jail_aliases.sh.j2
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+# The point of this script is to restore jail aliases
+# if the lan0 interface flaps
+
+if_lan="lan0"
+ipv4_out="$(ifconfig lan0 | grep "inet " | grep -v "0xffffffff")"
+ipv4_lan="$(echo "${ipv4_out}" | awk '{ print $2 }')"
+ipv4_mask="$(echo "${ipv4_out}" | awk '{ print $4 }')"
+
+if ! [ "$ipv4_mask" = "0xffff0000" ]; then
+ >&2 echo "Unexpected netmask on lan0: ${ipv4_mask}"
+ exit 1
+fi
+
+jls ip4.addr | while read ip; do
+ case "$ip" in
+ "192.168"*) ;;
+ *) continue ;;
+ esac
+ if ifconfig "$if_lan" | grep -q "$ip"; then
+ continue
+ fi
+
+ echo "Re-adding $ip to $if_lan"
+ ifconfig "$if_lan" inet "$ip/32" alias
+done