You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.7 KiB
66 lines
1.7 KiB
#!/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" |
|
echo "teamslaves=\"$teamslaves\"" |
|
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
|
|
|