version 1.184, 2017/05/28 08:07:33 |
version 1.185, 2017/07/21 20:22:13 |
|
|
# Start a single interface. |
# Start a single interface. |
# Usage: ifstart if1 |
# Usage: ifstart if1 |
ifstart() { |
ifstart() { |
local _if=$1 _file=$HN_DIR/hostname.$1 _cmds _i=0 _line _stat |
local _if=$1 _hn=$HN_DIR/hostname.$1 _cmds _i=0 _line _stat |
set -A _cmds |
set -A _cmds |
|
|
# Interface names must be alphanumeric only. We check to avoid |
# Interface names must be alphanumeric only. We check to avoid |
# configuring backup or temp files, and to catch the "*" case. |
# configuring backup or temp files, and to catch the "*" case. |
[[ $_if != +([[:alpha:]])+([[:digit:]]) ]] && return |
[[ $_if != +([[:alpha:]])+([[:digit:]]) ]] && return |
|
|
if [[ ! -f $_file ]]; then |
if [[ ! -f $_hn ]]; then |
echo "${0##*/}: $_file: No such file or directory" |
echo "${0##*/}: $_hn: No such file or directory" |
return |
return |
fi |
fi |
|
|
# Not using stat(1), we can't rely on having /usr yet. |
# Not using stat(1), we can't rely on having /usr yet. |
set -A _stat -- $(ls -nL $_file) |
set -A _stat -- $(ls -nL $_hn) |
if [[ "${_stat[0]}${_stat[2]}${_stat[3]}" != *---00 ]]; then |
if [[ "${_stat[0]}${_stat[2]}${_stat[3]}" != *---00 ]]; then |
echo "WARNING: $_file is insecure, fixing permissions" |
echo "WARNING: $_hn is insecure, fixing permissions" |
chmod -LR o-rwx $_file |
chmod -LR o-rwx $_hn |
chown -LR root:wheel $_file |
chown -LR root:wheel $_hn |
fi |
fi |
|
|
# Check for ifconfig'able interface, except if -n option is specified. |
# Check for ifconfig'able interface, except if -n option is specified. |
|
|
set -o noglob |
set -o noglob |
while IFS= read -- _line; do |
while IFS= read -- _line; do |
parse_hn_line $_line |
parse_hn_line $_line |
done <$_file |
done <$_hn |
|
|
# Apply the interface configuration commands stored in _cmds array. |
# Apply the interface configuration commands stored in _cmds array. |
while ((_i < ${#_cmds[*]})); do |
while ((_i < ${#_cmds[*]})); do |