50 lines
1.6 KiB
Bash
Executable File
50 lines
1.6 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Format:
|
|
# team=<teammaster>:<teamslaves>[:<teamrunner>]
|
|
#
|
|
# teamslaves is a comma-separated list of physical (ethernet) interfaces
|
|
# teamrunner is the runner type to be used (see teamd.conf(5)); defaults to activebackup
|
|
#
|
|
# team without parameters assumes team=team0:eth0,eth1:activebackup
|
|
#
|
|
|
|
parseteam() {
|
|
local v=${1}:
|
|
set --
|
|
while [ -n "$v" ]; do
|
|
set -- "$@" "${v%%:*}"
|
|
v=${v#*:}
|
|
done
|
|
|
|
case $# in
|
|
0) teammaster=team0; teamslaves="eth0 eth1"; teamrunner="activebackup" ;;
|
|
1) teammaster=$1; teamslaves="eth0 eth1"; teamrunner="activebackup" ;;
|
|
2) teammaster=$1; teamslaves=$(str_replace "$2" "," " "); teamrunner="activebackup" ;;
|
|
3) teammaster=$1; teamslaves=$(str_replace "$2" "," " "); teamrunner=$3 ;;
|
|
*) die "team= requires zero to three parameters" ;;
|
|
esac
|
|
return 0
|
|
}
|
|
|
|
for team in $(getargs team); do
|
|
[ "$team" = "team" ] && continue
|
|
|
|
unset teammaster
|
|
unset teamslaves
|
|
unset teamrunner
|
|
|
|
parseteam "$team" || continue
|
|
|
|
echo "teammaster=$teammaster" > /tmp/team.${teammaster}.info
|
|
echo "teamslaves=\"$teamslaves\"" >> /tmp/team.${teammaster}.info
|
|
echo "teamrunner=\"$teamrunner\"" >> /tmp/team.${teammaster}.info
|
|
|
|
if ! [ -e /etc/teamd/${teammaster}.conf ]; then
|
|
warn "Team master $teammaster specified, but no /etc/teamd/$teammaster.conf present. Using $teamrunner."
|
|
mkdir -p /etc/teamd
|
|
printf -- "%s" "{\"runner\": {\"name\": \"$teamrunner\"}, \"link_watch\": {\"name\": \"ethtool\"}}" > "/tmp/${teammaster}.conf"
|
|
fi
|
|
done
|
|
|