From ccf238f852fd0463e68d33b91f0dd55000c325e3 Mon Sep 17 00:00:00 2001 From: Roy Marples Date: Wed, 26 Mar 2008 14:18:01 +0000 Subject: Merge net.OS into net --- net/ccwgroup.sh | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 net/ccwgroup.sh (limited to 'net/ccwgroup.sh') diff --git a/net/ccwgroup.sh b/net/ccwgroup.sh new file mode 100644 index 0000000..d40e713 --- /dev/null +++ b/net/ccwgroup.sh @@ -0,0 +1,67 @@ +# Copyright 2007-2008 Roy Marples +# All rights reserved. Released under the 2-clause BSD license. + +_config_vars="$_config_vars ccwgroup" + +ccwgroup_depend() +{ + before interface +} + +ccwgroup_pre_start() +{ + local ccwgroup="$(_get_array "ccwgroup_${IFVAR}")" + [ -z "${ccwgroup}" ] && return 0 + + if [ ! -d /sys/bus/ccwgroup ]; then + modprobe qeth + if [ ! -d /sys/bus/ccwgroup ]; then + eerror "ccwgroup support missing in kernel" + return 1 + fi + fi + + einfo "Enabling ccwgroup on ${IFACE}" + local x= ccw= first= layer2= + for x in ${ccwgroup}; do + [ -z "${first}" ] && first=${x} + ccw="${ccw}${ccw:+,}${x}" + done + if [ -e /sys/devices/qeth/"${first}" ]; then + echo "0" >/sys/devices/qeth/"${first}"/online + else + echo "${ccw}" >/sys/bus/ccwgroup/drivers/qeth/group + fi + eval layer2=\$qeth_layer2_${IFVAR} + echo "${layer2:-0}" > /sys/devices/qeth/"${first}"/layer2 + echo "1" >/sys/devices/qeth/"${first}"/online + eend $? +} + +ccwgroup_pre_stop() +{ + # Erase any existing ccwgroup to be safe + service_set_value ccwgroup_device "" + + [ ! -L /sys/class/net/"${FACE}"/driver ] && return 0 + local driver="$(readlink /sys/class/net/"${IFACE}"/driver)" + case "${diver}" in + */bus/ccwgroup/*);; + *) return 0;; + esac + + local device="$(readlink /sys/class/net/"${IFACE}"/device)" + device=${device##*/} + service_set_value ccwgroup_device "${device}" +} + +ccwgroup_post_stop() +{ + local device="$(service_get_value ccwgroup_device)" + [ -z "${device}" ] && return 0 + + einfo "Disabling ccwgroup on ${iface}" + echo "0" >/sys/devices/qeth/"${device}"/online + echo "1" >/sys/devices/qeth/"${device}"/ungroup + eend $? +} -- cgit v1.2.3