129 lines
3.8 KiB
Bash
Executable File
129 lines
3.8 KiB
Bash
Executable File
#!/bin/sh
|
|
# $Revision: 1.8 $
|
|
|
|
#
|
|
# NAME
|
|
# aliases-ip - configure network IP aliases
|
|
#
|
|
# SYNOPSIS
|
|
# /etc/init.d/aliases-ip ( start | stop ) [ debug ]
|
|
#
|
|
# DESCRIPTION
|
|
# This script automates the configuration of IP address aliases for
|
|
# network interfaces.
|
|
#
|
|
# The file /etc/config/ipaliases.options contains the list of hosts or
|
|
# IP addresses to be used as IP address aliases. The format of
|
|
# this file is:
|
|
#
|
|
# interface host1 [netmask addr] [broadcast addr]
|
|
# interface host2 [netmask addr] [broadcast addr]
|
|
# ...
|
|
# interface host3 [netmask addr] [broadcast addr]
|
|
#
|
|
# hosti is either a valid hostname in /etc/hosts or is a "dot"
|
|
# notation IP address as in 192.22.33.44. The interface should be
|
|
# the interface name as reported by netstat -i which will support
|
|
# the alias (i.e. ec0, ec3, et cetera).
|
|
#
|
|
# NOTE:
|
|
# If you have previously installed the PPP IP alias interim solution
|
|
# then you will have a ppp ip alias data file named "/etc/ip-aliases.tab'
|
|
# which is in the wrong format and location.
|
|
# To convert this file to the new format, run the following command lines
|
|
# The shell variable 'interface' should be set to the name of the network
|
|
# interface on which you want the new alias'es to be assigned.
|
|
#
|
|
# OLD=/etc/ipaliases.tab
|
|
# NEW=/etc/config/ipaliases.options
|
|
# interface=ec0
|
|
#
|
|
# while read alias
|
|
# do
|
|
# stuff=`echo $alias | sed -e 's/^#.*//'`
|
|
# test -n "$stuff" && echo "$interface $stuff" >> $NEW
|
|
# done < $OLD
|
|
#
|
|
# FILES
|
|
# /etc/hosts # host table file
|
|
# /etc/config/ipaliases.options
|
|
# # table of IP addresses to configure.
|
|
# /etc/config/ipaliases # chkconfig control file for ipaliases startup
|
|
# /etc/config/network # chkconfig control file for network startup
|
|
#
|
|
# SEE ALSO
|
|
# chkconfig(1M), ifconfig(1M), netstat(1), routed(1M)
|
|
#
|
|
# COPYRIGHT NOTICE
|
|
# Copyright (C) 1995, Silicon Graphics. All Rights Reserved.
|
|
#
|
|
|
|
#
|
|
# Configuration variables
|
|
#
|
|
IPALIASES_TABLE="/etc/config/ipaliases.options"
|
|
|
|
#
|
|
# Convenience macros
|
|
#
|
|
IS_ON="/sbin/chkconfig"
|
|
IFCONFIG="/usr/etc/ifconfig"
|
|
|
|
#
|
|
# If "debug" is passed as second argument, enable output of noisy commands
|
|
# to stdout/stderr. Otherwise redirect extraneous output to /dev/null.
|
|
#
|
|
if test "$2" = "debug" || $IS_ON verbose ; then
|
|
DBGOUT="/dev/fd/1"
|
|
DBGERR="/dev/fd/2"
|
|
else
|
|
DBGOUT="/dev/null"
|
|
DBGERR="/dev/null"
|
|
fi
|
|
|
|
#
|
|
# "main" body. Handle "start|stop".
|
|
#
|
|
case $1 in
|
|
"start")
|
|
if $IS_ON network && $IS_ON ipaliases; then
|
|
|
|
#
|
|
# Get hosts from ipaliases.tab. Parse out # comments which begin
|
|
# in first column.
|
|
#
|
|
while read line
|
|
do
|
|
ipaliases=`echo $line | sed -e 's/[ ]*#.*$//' -e '/^$/d' `
|
|
if test -z "$ipaliases" ; then
|
|
continue;
|
|
fi
|
|
read interface host restofline <<-EOF
|
|
$ipaliases
|
|
EOF
|
|
/sbin/suattr -C CAP_NETWORK_MGT+ip -c "$IFCONFIG $interface alias $host $restofline" && echo "Adding alias $host to interface $interface" > $DBGOUT;
|
|
done < $IPALIASES_TABLE
|
|
fi
|
|
;;
|
|
|
|
"stop")
|
|
if $IS_ON network && $IS_ON ipaliases; then
|
|
#
|
|
# Get hosts from ipaliases.tab. Parse out # comments which begin
|
|
# in first column.
|
|
#
|
|
while read line
|
|
do
|
|
ipaliases=`echo $line | sed -e 's/[ ]*#.*$//' -e '/^$/d' `
|
|
if test -z "$ipaliases" ; then
|
|
continue;
|
|
fi
|
|
read interface host restofline <<-EOF
|
|
$ipaliases
|
|
EOF
|
|
/sbin/suattr -C CAP_NETWORK_MGT+ip -c "$IFCONFIG $interface delete $host" && echo "Deleting alias $host to interface $interface" > $DBGOUT;
|
|
done < $IPALIASES_TABLE
|
|
fi
|
|
;;
|
|
esac
|