#!/bin/sh [ -z "$DEVPATH" ] && exit 0 [ "$SUBSYSTEM" != "ccw" ] && exit 0 [ -e /etc/ccw.conf ] || exit 0 get_config_by_subchannel() { CHANNEL="$1" while read line; do IFS=, set $line for i in $@; do if [ "$CHANNEL" = "$i" ]; then echo $line return 0 fi done if [ "$CHANNEL" = "$2" ]; then echo $line return 0 fi done < /etc/ccw.conf return 1 } # First, determine our channel CHANNEL=${DEVPATH##*/} CONFIG=$(get_config_by_subchannel $CHANNEL) [ $? -ne 0 -o -z "$CONFIG" ] && exit 0 set $CONFIG NETTYPE=$1 shift SUBCHANNELS="$1" OPTIONS="" CHANNEL1="$1" shift while [ $# -gt 0 ]; do case $1 in layer2=*) LAYER2=${1##layer2=};; *=*) OPTIONS="$OPTIONS $1";; [0-9]*) SUBCHANNELS="$SUBCHANNELS,$1";; esac shift done # SUBCHANNELS is only set on mainframe ccwgroup devices [ -z "$SUBCHANNELS" -o -z "$NETTYPE" ] && exit 0 DIR="/sys/bus/ccwgroup/drivers/$NETTYPE" i=0 while [ $i -lt 20 ]; do [ -e $DIR ] && break sleep 0.1 i=$(($i+1)) done SYSDIR="$DIR/$CHANNEL1" if [ ! -e $SYSDIR ]; then echo "$SUBCHANNELS" > $DIR/group i=0 while [ $i -lt 20 ]; do [ -e $SYSDIR ] && break sleep 0.1 i=$(($i+1)) done fi # check if the interface is already online if [ -e $SYSDIR/online ]; then read on <$SYSDIR/online [ "$on" = "1" ] && exit 0 fi # first set layer2, other options may depend on it [ -n "$LAYER2" ] && echo $LAYER2 > $SYSDIR/layer2 if [ -n "$OPTIONS" ]; then for i in $OPTIONS; do echo "${i##*=}" > "$SYSDIR/${i%%=*}" done fi [ -e $SYSDIR/online ] && echo 1 > $SYSDIR/online