ACC SHELL
#!/bin/bash
#
# Copyright (C) 2007 Holger Macht <holger@homac.de>
#
# Author: Holger Macht <holger@homac.de>
#
# This file is released under the GPLv2.
#
SUPPORT_FLAGS=
IFACE="$HAL_PROP_NET_INTERFACE"
wol_get_flags() {
SUPPORT_FLAGS=`ethtool $IFACE | awk '/Supports Wake-on:/{if ($3 ~ /g/) print $3 }'`
[ -n "$SUPPORT_FLAGS" ] && return 0
echo "org.freedesktop.Hal.Device.WakeOnLAN.NotSupported" >&2
echo "Network interface does not support Wake On LAN" >&2
exit 1
}
wol_supported() {
wol_get_flags
[ -n "$SUPPORT_FLAGS" ] && return 0
return 1
}
wol_enabled() {
ENABLED=`ethtool $IFACE | awk '/[^s ]Wake-on:/{if ($2 ~ /g/) print $2 }'`
[ -n "$ENABLED" ] && return 0
return 1
}
wol_enable() {
wol_get_flags
if [ -z "$SUPPORT_FLAGS" ]; then
echo "No support flags set, using default: g"
SUPPORT_FLAGS=g
fi
ethtool -s $IFACE wol $SUPPORT_FLAGS
if [ "$?" != "0" ]; then
echo "error enabling wake on LAN for interface $IFACE"
return 1
fi
}
wol_disable() {
ethtool -s $IFACE wol d
if [ "$?" != "0" ]; then
echo "error disabling wake on LAN for interface $IFACE"
return 1
fi
}
which ethtool >/dev/null 2>&1
if [ "$?" != "0" ]; then
echo "org.freedesktop.Hal.Device.WakeOnLan.NoEthtool" >&2
echo -e "No ethtool found in \$PATH" >&2
exit 1
fi
case "`basename $0`" in
hal-system-wol-supported-linux)
wol_supported
;;
hal-system-wol-enabled-linux)
wol_enabled
;;
hal-system-wol-enable-linux)
if [ "$enable" = "true" ]; then
wol_enable
elif [ "$enable" = "false" ]; then
wol_disable
else
echo "org.freedesktop.Hal.Device.WakeOnLAN.InvalidArgument" >&2
echo "argument must be of boolean type" >&2
exit 1
fi
;;
*) ;;
esac
exit $?
ACC SHELL 2018