Add ifwatchd.sh to power the NetBSD ifwatchd program. Let wpa_supplicant work with it.

This commit is contained in:
Roy Marples 2008-03-10 21:34:46 +00:00
parent f20099bc33
commit 8b23aaecff
7 changed files with 94 additions and 7 deletions

5
net.NetBSD/Makefile Normal file
View File

@ -0,0 +1,5 @@
DIR= ${RC_LIB}/net
INC= ifwatchd.sh
MK= ../mk
include ${MK}/scripts.mk

60
net.NetBSD/ifwatchd.sh Normal file
View File

@ -0,0 +1,60 @@
# Copyright 2007-2008 Roy Marples <roy@marples.name>
# All rights reserved. Released under the 2-clause BSD license.
_config_vars="$_config_vars plug_timeout"
ifwatchd_depend()
{
program start /usr/sbin/ifwatchd
after macnet rename wireless
before interface
provide plug
}
ifwatchd_pre_start()
{
# We don't start ifwatchd if we're being called from the background
yesno ${IN_BACKGROUND} && return 0
_exists || return 0
# We need a valid MAC address
# It's a basic test to ensure it's not a virtual interface
if ! _get_mac_address >/dev/null 2>&1; then
vewarn "ifwatchd only works on interfaces with a valid MAC address"
return 0
fi
ebegin "Starting ifwatchd on ${IFACE}"
# Mark the us as inactive so ifwatchd can restart us
mark_service_inactive
# Start ifwatchd
export IN_BACKGROUND=yes
start-stop-daemon --start --exec /usr/sbin/ifwatchd \
-- -c "${RC_LIBDIR}/sh/ifwatchd-carrier.sh" \
-n "${RC_LIBDIR}/sh/ifwatchd-nocarrier.sh" "${IFACE}"
unset IN_BACKGROUND
eend "$?" || return 1
einfo "Backgrounding ..."
exit 1
}
ifwatchd_stop()
{
yesno ${IN_BACKGROUND} && return 0
start-stop-daemon --test --quiet --stop --exec /usr/sbin/ifwatchd \
-- -c "${RC_LIBDIR}/sh/ifwatchd-carrier.sh" \
-n "${RC_LIBDIR}/sh/ifwatchd-nocarrier.sh" "${IFACE}" \
|| return 0
ebegin "Stopping ifwatchd on" "${IFACE}"
start-stop-daemon --stop --exec /usr/sbin/ifwatchd \
-- -c "${RC_LIBDIR}/sh/ifwatchd-carrier.sh" \
-n "${RC_LIBDIR}/sh/ifwatchd-nocarrier.sh" "${IFACE}" \
&& return 0
eend $?
}

View File

@ -47,12 +47,14 @@ wpa_supplicant_pre_start()
{ {
local opts= cfgfile= ctrl_dir= wireless=true local opts= cfgfile= ctrl_dir= wireless=true
local wpas=/usr/sbin/wpa_supplicant wpac=/usr/bin/wpa_cli local wpas=/usr/sbin/wpa_supplicant wpac=/usr/bin/wpa_cli
local actfile=/etc/wpa_supplicant/wpa_cli.sh
if [ ! -x "${wpas}" ]; then if [ ! -x "${wpas}" ]; then
wpas=/sbin/wpa_supplicant wpas=/sbin/wpa_supplicant
wpac=/bin/wpa_cli wpac=/bin/wpa_cli
fi fi
[ "${RC_UNAME}" = "Linux" ] || unset wpac [ "${RC_UNAME}" = "Linux" ] || unset wpac
[ -e "${actfile}" ] || unset wpac
eval opts=\$wpa_supplicant_${IFVAR} eval opts=\$wpa_supplicant_${IFVAR}
case " ${opts} " in case " ${opts} " in
@ -120,12 +122,10 @@ wpa_supplicant_pre_start()
fi fi
service_set_value ctrl_dir "${ctrl_dir}" service_set_value ctrl_dir "${ctrl_dir}"
actfile="/etc/wpa_supplicant/wpa_cli.sh"
if [ -n "${wpac}" ]; then if [ -n "${wpac}" ]; then
opts="${opts} -W" opts="${opts} -W"
else elif service_started devd; then
sleep 2 # FBSD 7.0 beta2 bug
mark_service_inactive mark_service_inactive
fi fi
start-stop-daemon --start --exec "${wpas}" \ start-stop-daemon --start --exec "${wpas}" \
@ -133,9 +133,14 @@ wpa_supplicant_pre_start()
-- ${opts} -B -i "${IFACE}" \ -- ${opts} -B -i "${IFACE}" \
-P "/var/run/wpa_supplicant-${IFACE}.pid" -P "/var/run/wpa_supplicant-${IFACE}.pid"
eend $? || return 1 eend $? || return 1
# If we don't have a working wpa_cli and action file continue
if [ -z "${wpac}" ]; then if [ -z "${wpac}" ]; then
ebegin "Backgrounding ..." if service_started devd; then
exit 1 ebegin "Backgrounding ..."
exit 1
fi
return 0
fi fi
# Starting wpa_supplication-0.4.0, we can get wpa_cli to # Starting wpa_supplication-0.4.0, we can get wpa_cli to
@ -147,8 +152,7 @@ wpa_supplicant_pre_start()
ebegin "Starting wpa_cli on" "${IFACE}" ebegin "Starting wpa_cli on" "${IFACE}"
start-stop-daemon --start --exec "${wpac}" \ start-stop-daemon --start --exec "${wpac}" \
--pidfile "/var/run/wpa_cli-${IFACE}.pid" \ --pidfile "/var/run/wpa_cli-${IFACE}.pid" \
-- -a /etc/wpa_supplicant/wpa_cli.sh \ -- -a "${actfile}" -p "${ctrl_dir}" -i "${IFACE}" \
-p "${ctrl_dir}" -i "${IFACE}" \
-P "/var/run/wpa_cli-${IFACE}.pid" -B -P "/var/run/wpa_cli-${IFACE}.pid" -B
if eend $?; then if eend $?; then
ebegin "Backgrounding ..." ebegin "Backgrounding ..."

2
sh.NetBSD/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
ifwatchd-carrier.sh
ifwatchd-nocarrier.sh

6
sh.NetBSD/Makefile Normal file
View File

@ -0,0 +1,6 @@
DIR= ${RC_LIB}/sh
SRCS= ifwatchd-carrier.sh.in ifwatchd-nocarrier.sh.in
BIN= ifwatchd-carrier.sh ifwatchd-nocarrier.sh
MK= ../mk
include ${MK}/scripts.mk

View File

@ -0,0 +1,5 @@
#!@SHELL@
# Wrapper for ifwatchd(8)
export IN_BACKGROUND=yes
@PREFIX@@SYSCONFDIR@/init.d/net.$1 --quiet start

View File

@ -0,0 +1,5 @@
#!@SHELL@
# Wrapper for ifwatchd(8)
export IN_BACKGROUND=yes
@PREFIX@@SYSCONFDIR@/init.d/net.$1 --quiet stop