1
0
Files
irix-657m-src/eoe/cmd/initpkg/init.d/aliases-ip
2022-09-29 17:59:04 +03:00

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