mirror of
https://github.com/ibm-s390-linux/s390-tools.git
synced 2026-08-05 02:14:52 +00:00
This commit is based on the s390-tools-1.39.0 version. Changes on top of s390-tools-1.39.0: - Add MIT license to all source files - Add LICENSE file - Transform REAMDE to README.md (markdown) - Add AUTHORS.md file - Add CONTRIBUTING.md file - Move changelog from README to CHANGELOG.md file Reviewed-by: Stefan Haberland <sth@linux.vnet.ibm.com> Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
126 lines
2.9 KiB
Bash
126 lines
2.9 KiB
Bash
#!/bin/bash
|
|
#
|
|
# start_hsnc.sh - HiperSockets Network Concentrator
|
|
#
|
|
# Wrapper start script for ip_watcher.pl, also cleanup, when ip_watcher.pl
|
|
# gets killed.
|
|
#
|
|
# Copyright IBM Corp. 2003, 2017
|
|
#
|
|
# s390-tools is free software; you can redistribute it and/or modify
|
|
# it under the terms of the MIT license. See LICENSE for details.
|
|
#
|
|
|
|
#
|
|
# functions
|
|
#
|
|
|
|
function __usage
|
|
{
|
|
echo ""
|
|
echo "For more information about HiperSocket Network Concentrator"
|
|
echo "please refer to the 'Device Drivers, Features, and Commands'"
|
|
echo "manual."
|
|
exit 0
|
|
|
|
}
|
|
|
|
function PrintVersion
|
|
{
|
|
echo "$script_name version %S390_TOOLS_VERSION%"
|
|
echo "Copyright IBM Corp. 2003, 2017"
|
|
}
|
|
#
|
|
# main
|
|
#
|
|
|
|
script_name="HiperSocket Network Concentrator" # name of this script
|
|
#
|
|
# what is the kernel version we are on ?
|
|
#
|
|
kernel_version=`uname -r`
|
|
xcec_bridge="yes"
|
|
if [ "${kernel_version:0:1}" \> 2 ]; then
|
|
kernel_version="ok"
|
|
else
|
|
if [ "${kernel_version:4:2}" \< 26 ]; then
|
|
xcec_bridge="no"
|
|
fi
|
|
if [ "${kernel_version:2:1}" \> 4 ]; then
|
|
kernel_version="ok"
|
|
else
|
|
echo kernel version too old for this hsnc version.
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
|
|
#
|
|
# parse options (currently none avail)
|
|
#
|
|
case "$1" in
|
|
-v | --version ) PrintVersion
|
|
exit 0 ;;
|
|
-h | --help ) __usage ;;
|
|
esac
|
|
|
|
if [ X${1}X != XX ] && [ $kernel_version = "ok" ] ; then
|
|
if ! ls /sys/class/net | grep "^$1$" > /dev/null; then
|
|
echo interface $1 does not exist.
|
|
exit 1
|
|
fi
|
|
else
|
|
if [ $xcec_bridge = "no" ] ; then
|
|
echo kernel version too old for this hsnc version.
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
ip_watcher.pl $*
|
|
|
|
echo ip_watcher.pl was terminated, cleaning up.
|
|
|
|
if [ X${1}X == XX ] ; then
|
|
echo killing xcec-bridge
|
|
killall xcec-bridge
|
|
fi
|
|
|
|
echo removing all parp entries from mc interfaces
|
|
if [ X${1}X == XX ] ; then
|
|
for DEV in $(ls /sys/devices/qeth/ | egrep '^.+\..+\..+')
|
|
do
|
|
if_name=`cat /sys/devices/qeth/$DEV/if_name | sed 's/$/\$/'`
|
|
rtr=`cat /sys/devices/qeth/$DEV/route4 2> /dev/null | egrep 'multicast'`
|
|
if [ -n "$rtr" ] ; then
|
|
echo $if_name >> /tmp/ip_watcher.cleanup1
|
|
fi
|
|
done
|
|
else
|
|
echo ${1}$ > /tmp/ip_watcher.cleanup1
|
|
fi
|
|
|
|
qethconf rxip list | sed 's/add/del/' | egrep -f /tmp/ip_watcher.cleanup1 > /tmp/ip_watcher.cleanup2
|
|
|
|
|
|
while read line; do
|
|
qethconf $line > /dev/null 2>&1
|
|
done < /tmp/ip_watcher.cleanup2
|
|
rm /tmp/ip_watcher.cleanup1
|
|
rm /tmp/ip_watcher.cleanup2
|
|
|
|
echo removing all routes from connector interfaces
|
|
for DEV in $(ls /sys/devices/qeth/ | egrep '^.+\..+\..+')
|
|
do
|
|
if_name=`cat /sys/devices/qeth/$DEV/if_name | sed 's/$/\$/'`
|
|
rtr=`cat /sys/devices/qeth/$DEV/route4 2> /dev/null | egrep 'connector'`
|
|
if [ -n "$rtr" ] ; then
|
|
echo $if_name >> /tmp/ip_watcher.cleanup1
|
|
fi
|
|
done
|
|
route -n | egrep -f /tmp/ip_watcher.cleanup1 > /tmp/ip_watcher.cleanup2
|
|
while read line; do
|
|
route del -net `echo $line | awk '{print $1 " netmask " $3 " dev " $8}'`
|
|
done < /tmp/ip_watcher.cleanup2
|
|
rm /tmp/ip_watcher.cleanup1
|
|
rm /tmp/ip_watcher.cleanup2
|