#!/bin/sh
# Bereitschaft von dhcpd: der Prozess hat die Konfiguration und die Leases
# gelesen und seine Sockets gebunden -- UDP 67, und bei konfiguriertem Failover
# auch den TCP-Port fuer den Partner. dhcpd bindet erst NACH dem Lesen der
# Leases; ein offener Port 67 heisst also "bedient Anfragen".
#
# Bewusst NICHT geprueft: der Failover-ZUSTAND ("normal"). Ein Router, dessen
# Partner fehlt, steht in communications-interrupted und bedient weiter -- er
# ist bereit. Den Zustand misst die Ueberwachung (/var/lib/dhcp/dhcpd.leases,
# "failover peer ... state"), nicht die Bereitschaft.
conf=/etc/dhcp/dhcpd.conf
ss -Hlnup 'sport = :67' 2>/dev/null | grep -q '"dhcpd"' || { echo "dhcpd hat UDP 67 nicht gebunden"; exit 1; }
if grep -qE '^[[:space:]]*failover[[:space:]]+peer[[:space:]].*\{' "$conf" 2>/dev/null; then
  ss -Hltnp 2>/dev/null | grep -q '"dhcpd"' || { echo "Failover konfiguriert, aber dhcpd lauscht auf keinem TCP-Port"; exit 1; }
fi
exit 0
