Files
openipc-builder/devices/ssc338q_fpv_openipc-urllc-aio/general/overlay/usr/bin/link-mode
T

66 lines
1.3 KiB
Bash
Executable File

#!/bin/sh
LOCK=/run/link-mode.lock
STATE=/run/link-mode.state
log() {
logger -t link-mode "$*"
}
if ! mkdir "$LOCK" 2>/dev/null; then
log "another transition is in progress; ignoring ${1:-}"
exit 0
fi
cleanup() {
rmdir "$LOCK" 2>/dev/null || true
}
trap cleanup EXIT HUP INT TERM
wfb_active() {
pidof wfb_tx wfb_rx wfb_tun wifilink >/dev/null
}
case "${1:-}" in
preflight)
if wfb_active; then
echo wfb >"$STATE"
exit 0
fi
log "management -> WFB"
ifdown wlan0 >/dev/null 2>&1 || true
killall -q wpa_supplicant 2>/dev/null || true
ip link set wlan0 up
if /usr/bin/wifibroadcast start && wfb_active; then
echo wfb >"$STATE"
log "WFB is active"
exit 0
fi
log "WFB start failed"
exit 1
;;
management)
if wfb_active; then
log "WFB -> management"
/usr/bin/wifibroadcast stop
killall -q wifilink 2>/dev/null || true
fi
/usr/bin/mgmt-net --force
echo management >"$STATE"
log "management path restored"
/etc/init.d/S97link-monitor start
exit 0
;;
*)
echo "Usage: $0 {preflight|management}" >&2
exit 2
;;
esac