Files
darkforge/configs/rc.d/dhcpcd
2026-03-20 10:03:00 +01:00

65 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
# ============================================================================
# DarkForge Linux — dhcpcd service
# ============================================================================
# DHCP client daemon for ethernet. Uses interface from rc.conf.
# ============================================================================
. /etc/rc.conf
DAEMON="/usr/sbin/dhcpcd"
# Auto-detect network interface if configured one doesn't exist
IFACE="${NETWORK_INTERFACE}"
if [ ! -d "/sys/class/net/${IFACE}" ] || [ "${IFACE}" = "lo" ]; then
# Find first non-loopback ethernet interface
for d in /sys/class/net/*; do
name=$(basename "$d")
[ "$name" = "lo" ] && continue
# Skip wireless (has wireless/ subdir)
[ -d "$d/wireless" ] && continue
IFACE="$name"
echo " NOTE: ${NETWORK_INTERFACE} not found, using ${IFACE}"
break
done
fi
PIDFILE="/run/dhcpcd-${IFACE}.pid"
case "$1" in
start)
echo " Starting dhcpcd on ${IFACE}..."
if [ "${NETWORK_DHCP}" = "yes" ]; then
${DAEMON} -q "${IFACE}" && echo " dhcpcd started"
else
# Static IP configuration
ip addr add "${NETWORK_IP}/${NETWORK_MASK}" dev "${IFACE}"
ip link set "${IFACE}" up
ip route add default via "${NETWORK_GATEWAY}"
if [ -n "${NETWORK_DNS}" ]; then
echo "# Generated by rc.d/dhcpcd" > /etc/resolv.conf
for dns in ${NETWORK_DNS}; do
echo "nameserver ${dns}" >> /etc/resolv.conf
done
fi
echo " Static IP configured: ${NETWORK_IP}"
fi
;;
stop)
echo " Stopping dhcpcd..."
if [ -f "${PIDFILE}" ]; then
${DAEMON} -x "${IFACE}" 2>/dev/null
fi
echo " dhcpcd stopped"
;;
restart)
$0 stop
sleep 2
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac