#!/bin/bash
#
# /etc/rc.d/wlan: start/stop wireless interface
#

# The rc.inet1 Slackware script is used as a basis.
# https://ftp.slackware.com/pub/slackware/slackware64-current/source/n/network-scripts/scripts/rc.inet1

DHCP_OPTS="-t 10 -b"

# If USE_DHCP[interface] is set to "yes", this overrides any other settings.
# If you don't have an interface, leave the settings null ("").

# ----------------------------------------

# ipv4 config options for wlan0
IFNAME[0]=""
IFADDRS[0]=""
USE_DHCP[0]=""
DHCP_HOSTNAME[0]=""

# ipv4 config options for wlan1
IFNAME[1]=""
IFADDRS[1]=""
USE_DHCP[1]=""
DHCP_HOSTNAME[1]=""

# ipv4 default gateway ip address
GW=""

# ----------------------------------------

case $1 in
	start)
		/etc/rc.d/wpa_supplicant start

		for i in ${!IFNAME[@]}; do
			if [ -d /sys/class/net/${IFNAME[$i]:-"empty"} ]; then
				IP="${IFADDRS[$i]%/*}"
				NM="${IFADDRS[$i]#*/:-32}"
				if [ "${USE_DHCP[$i]}" = "yes" ]; then
					[ -n "${DHCP_HOSTNAME[$i]}" ] && DHCP_OPTS+=("-h" "${DHCP_HOSTNAME[$i]}")
					/sbin/dhcpcd ${DHCP_OPTS} ${IFNAME[$i]}
				elif [ ! -z "$IP" -a ! -z "$NM" ]; then
					/sbin/ip addr add $IP/$NM dev ${IFNAME[$i]} broadcast +
				fi
				/sbin/ip link set ${IFNAME[$i]} up
			fi
		done
		if [ ! -z $GW ] ; then
			/sbin/ip route add default via ${GW}
		fi
		;;
	stop)
		if [ ! -z $GW ] ; then
			/sbin/ip route del default
		fi
		for i in ${!IFNAME[@]}; do
			if [ -d /sys/class/net/${IFNAME[$i]:-"empty"} ]; then
				IP="${IFADDRS[$i]%/*}"
				NM="${IFADDRS[$i]#*/:-32}"
				if [ "${USE_DHCP[$i]}" = "yes" ]; then
					/sbin/dhcpcd -k ${IFNAME[$i]}
				elif [ ! -z "$IP" -a ! -z "$NM" ]; then
					/sbin/ip addr del $IP/$NM dev ${IFNAME[$i]}
				fi
				/sbin/ip link set ${IFNAME[$i]} down
			fi
		done
		/etc/rc.d/wpa_supplicant stop
		;;
	restart)
		/etc/rc.d/wpa_supplicant restart
		$0 stop
		sleep 1
		$0 start
		;;
	status)
		/etc/rc.d/wpa_supplicant status

		for i in ${!IFNAME[@]}; do
			if [ -d /sys/class/net/${IFNAME[$i]:-"empty"} ]; then
				PID=$(pgrep -a dhcpcd | grep ${IFNAME[$i]} | cut -d ' ' -f1)
				if [[ -z ${PID} ]]; then
					echo "dhcpcd is not running"
				else
					echo "dhcpcd is running with pid $PID"
				fi
			fi
		done
		;;
	*)
		echo "Usage: $0 [start|stop|restart|status]"
		;;
esac

# End of file
