2003-04-18 17:51:54 +00:00
|
|
|
#
|
|
|
|
# Copyright (c) 2003 The FreeBSD Project. All rights reserved.
|
|
|
|
#
|
|
|
|
# Redistribution and use in source and binary forms, with or without
|
|
|
|
# modification, are permitted provided that the following conditions
|
|
|
|
# are met:
|
|
|
|
# 1. Redistributions of source code must retain the above copyright
|
|
|
|
# notice, this list of conditions and the following disclaimer.
|
|
|
|
# 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
# notice, this list of conditions and the following disclaimer in the
|
|
|
|
# documentation and/or other materials provided with the distribution.
|
|
|
|
#
|
|
|
|
# THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
|
|
|
|
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
|
|
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
|
|
# ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
|
|
|
|
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
|
|
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
|
|
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
|
|
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
|
|
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
|
|
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
|
|
# SUCH DAMAGE.
|
2000-10-08 19:20:36 +00:00
|
|
|
#
|
1999-08-27 23:37:10 +00:00
|
|
|
# $FreeBSD$
|
2000-10-08 19:20:36 +00:00
|
|
|
#
|
1997-04-27 03:59:19 +00:00
|
|
|
|
2003-04-18 17:51:54 +00:00
|
|
|
#
|
|
|
|
# Subroutines commonly used from network startup scripts.
|
|
|
|
# Requires that rc.conf be loaded first.
|
|
|
|
#
|
1997-04-27 03:59:19 +00:00
|
|
|
|
2003-04-18 17:51:54 +00:00
|
|
|
# ifconfig_up if
|
|
|
|
# Evaluate ifconfig(8) arguments for interface $if and
|
|
|
|
# run ifconfig(8) with those arguments. It returns 0 if
|
|
|
|
# arguments were found and executed or 1 if the interface
|
|
|
|
# had no arguments.
|
|
|
|
#
|
|
|
|
ifconfig_up()
|
|
|
|
{
|
|
|
|
eval ifconfig_args=\$ifconfig_$1
|
|
|
|
if [ -n "${ifconfig_args}" ]; then
|
|
|
|
ifconfig $1 ${ifconfig_args}
|
|
|
|
return 0
|
|
|
|
fi
|
|
|
|
return 1
|
|
|
|
}
|
2002-07-18 05:00:17 +00:00
|
|
|
|
2003-04-18 17:51:54 +00:00
|
|
|
# ifalias_up if
|
|
|
|
# Configure aliases for network interface $if.
|
|
|
|
# It returns 0 if at least one alias was configured or
|
|
|
|
# 1 if there were none.
|
|
|
|
#
|
|
|
|
ifalias_up()
|
|
|
|
{
|
|
|
|
_ret=1
|
|
|
|
alias=0
|
|
|
|
while : ; do
|
|
|
|
eval ifconfig_args=\$ifconfig_$1_alias${alias}
|
|
|
|
if [ -n "${ifconfig_args}" ]; then
|
|
|
|
ifconfig $1 ${ifconfig_args} alias
|
|
|
|
alias=$((${alias} + 1))
|
|
|
|
_ret=0
|
|
|
|
else
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
return $_ret
|
|
|
|
}
|
2002-07-18 05:00:17 +00:00
|
|
|
|
2003-04-18 17:51:54 +00:00
|
|
|
# ifscript_up if
|
|
|
|
# Evaluate a startup script for the $if interface.
|
|
|
|
# It returns 0 if a script was found and processed or
|
|
|
|
# 1 if no script was found.
|
|
|
|
#
|
|
|
|
ifscript_up()
|
2002-07-18 05:00:17 +00:00
|
|
|
{
|
2003-04-18 17:51:54 +00:00
|
|
|
if [ -r /etc/start_if.$1 ]; then
|
|
|
|
. /etc/start_if.$1
|
|
|
|
return 0
|
|
|
|
fi
|
|
|
|
return 1
|
2002-07-18 05:00:17 +00:00
|
|
|
}
|
|
|
|
|
2003-04-18 17:51:54 +00:00
|
|
|
# Create cloneable interfaces.
|
|
|
|
#
|
|
|
|
clone_up()
|
2002-07-18 05:00:17 +00:00
|
|
|
{
|
2003-04-18 17:51:54 +00:00
|
|
|
_prefix=
|
|
|
|
_list=
|
|
|
|
for ifn in ${cloned_interfaces}; do
|
|
|
|
ifconfig ${ifn} create
|
|
|
|
if $? ; then
|
|
|
|
_list="${_list}${_prefix}${ifn}"
|
|
|
|
[ -z "$_prefix" ] && _prefix=' '
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
debug "Cloned: ${_list}"
|
|
|
|
}
|
2002-07-18 05:00:17 +00:00
|
|
|
|
2003-04-18 17:51:54 +00:00
|
|
|
# Destroy cloned interfaces. Destroyed interfaces are echoed
|
|
|
|
# to standard output.
|
|
|
|
#
|
|
|
|
clone_down()
|
|
|
|
{
|
|
|
|
_prefix=
|
|
|
|
_list=
|
|
|
|
for ifn in ${cloned_interfaces}; do
|
|
|
|
ifconfig ${ifn} destroy
|
|
|
|
if $? ; then
|
|
|
|
_list="${_list}${_prefix}${ifn}"
|
|
|
|
[ -z "$_prefix" ] && _prefix=' '
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
debug "Destroyed clones: ${_list}"
|
2002-07-18 05:00:17 +00:00
|
|
|
}
|
|
|
|
|
2003-04-18 17:51:54 +00:00
|
|
|
gif_up() {
|
2002-07-18 05:00:19 +00:00
|
|
|
case ${gif_interfaces} in
|
|
|
|
[Nn][Oo] | '')
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
for i in ${gif_interfaces}; do
|
|
|
|
eval peers=\$gifconfig_$i
|
|
|
|
case ${peers} in
|
|
|
|
'')
|
|
|
|
continue
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
ifconfig $i create >/dev/null 2>&1
|
|
|
|
ifconfig $i tunnel ${peers}
|
2002-09-20 18:31:55 +00:00
|
|
|
ifconfig $i up
|
2002-07-18 05:00:19 +00:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
2003-04-18 17:51:54 +00:00
|
|
|
#
|
|
|
|
# ipx_up ifn
|
|
|
|
# Configure any IPX addresses for interface $ifn. Returns 0 if IPX
|
|
|
|
# arguments were found and configured; returns 1 otherwise.
|
|
|
|
#
|
|
|
|
ipx_up()
|
2002-07-18 05:00:17 +00:00
|
|
|
{
|
2003-04-18 17:51:54 +00:00
|
|
|
ifn="$1"
|
|
|
|
eval ifconfig_args=\$ifconfig_${ifn}_ipx
|
|
|
|
if [ -n "${ifconfig_args}" ]; then
|
|
|
|
ifconfig ${ifn} ${ifconfig_args}
|
|
|
|
return 0
|
Add nsswitch support. By creating an /etc/nsswitch.conf file, you can
configure FreeBSD so that various databases such as passwd and group can be
looked up using flat files, NIS, or Hesiod.
= Hesiod has been added to libc (see hesiod(3)).
= A library routine for parsing nsswitch.conf and invoking callback
functions as specified has been added to libc (see nsdispatch(3)).
= The following C library functions have been modified to use nsdispatch:
. getgrent, getgrnam, getgrgid
. getpwent, getpwnam, getpwuid
. getusershell
. getaddrinfo
. gethostbyname, gethostbyname2, gethostbyaddr
. getnetbyname, getnetbyaddr
. getipnodebyname, getipnodebyaddr, getnodebyname, getnodebyaddr
= host.conf has been removed from src/etc. rc.network has been modified
to warn that host.conf is no longer used at boot time. In addition, if
there is a host.conf but no nsswitch.conf, the latter is created at boot
time from the former.
Obtained from: NetBSD
2000-09-06 18:16:48 +00:00
|
|
|
fi
|
2003-04-18 17:51:54 +00:00
|
|
|
return 1
|
|
|
|
}
|
Add nsswitch support. By creating an /etc/nsswitch.conf file, you can
configure FreeBSD so that various databases such as passwd and group can be
looked up using flat files, NIS, or Hesiod.
= Hesiod has been added to libc (see hesiod(3)).
= A library routine for parsing nsswitch.conf and invoking callback
functions as specified has been added to libc (see nsdispatch(3)).
= The following C library functions have been modified to use nsdispatch:
. getgrent, getgrnam, getgrgid
. getpwent, getpwnam, getpwuid
. getusershell
. getaddrinfo
. gethostbyname, gethostbyname2, gethostbyaddr
. getnetbyname, getnetbyaddr
. getipnodebyname, getipnodebyaddr, getnodebyname, getnodebyaddr
= host.conf has been removed from src/etc. rc.network has been modified
to warn that host.conf is no longer used at boot time. In addition, if
there is a host.conf but no nsswitch.conf, the latter is created at boot
time from the former.
Obtained from: NetBSD
2000-09-06 18:16:48 +00:00
|
|
|
|
2003-04-18 17:51:54 +00:00
|
|
|
#
|
|
|
|
# list_net_interfaces type
|
|
|
|
# List all network interfaces. The type of interface returned
|
|
|
|
# can be controlled by the type argument. The type
|
|
|
|
# argument can be any of the following:
|
|
|
|
# nodhcp - all interfaces, excluding DHCP configured interfaces
|
|
|
|
# dhcp - list only DHCP configured interfaces
|
|
|
|
# If no argument is specified all network interfaces are output.
|
|
|
|
# Note that the list always includes cloned interfaces.
|
|
|
|
#
|
|
|
|
list_net_interfaces()
|
|
|
|
{
|
|
|
|
type=$1
|
2002-07-18 05:00:19 +00:00
|
|
|
|
2003-04-18 17:51:54 +00:00
|
|
|
# Get a list of ALL the interfaces
|
1999-09-13 15:44:20 +00:00
|
|
|
#
|
|
|
|
case ${network_interfaces} in
|
|
|
|
[Aa][Uu][Tt][Oo])
|
2003-04-18 17:51:54 +00:00
|
|
|
_tmplist="`ifconfig -l`"
|
1999-09-13 15:44:20 +00:00
|
|
|
;;
|
2001-09-19 21:27:27 +00:00
|
|
|
*)
|
2003-04-18 17:51:54 +00:00
|
|
|
_tmplist="${network_interfaces}"
|
2001-09-19 21:27:27 +00:00
|
|
|
;;
|
1999-09-13 15:44:20 +00:00
|
|
|
esac
|
2003-04-18 17:51:54 +00:00
|
|
|
_tmplist="${_tmplist} ${cloned_interfaces}"
|
1999-09-13 15:44:20 +00:00
|
|
|
|
2003-04-18 17:51:54 +00:00
|
|
|
if [ -z "$type" ]; then
|
|
|
|
echo $_tmplist
|
|
|
|
return 0
|
|
|
|
fi
|
1999-09-13 15:44:20 +00:00
|
|
|
|
2003-04-18 17:51:54 +00:00
|
|
|
# Separate out dhcp and non-dhcp intefraces
|
|
|
|
#
|
|
|
|
_aprefix=
|
|
|
|
_brefix=
|
|
|
|
for _if in ${_tmplist} ; do
|
|
|
|
eval _ifarg="\$ifconfig_${_if}"
|
|
|
|
case "$_ifarg" in
|
1999-09-13 15:44:20 +00:00
|
|
|
[Dd][Hh][Cc][Pp])
|
2003-04-18 17:51:54 +00:00
|
|
|
_dhcplist="${_dhcplist}${_aprefix}${_if}"
|
|
|
|
[ -z "$_aprefix" ] && _aprefix=' '
|
1999-09-13 15:44:20 +00:00
|
|
|
;;
|
2003-04-18 17:51:54 +00:00
|
|
|
''|*)
|
|
|
|
_nodhcplist="${_nodhcplist}${_bprefix}${_if}"
|
|
|
|
[ -z "$_bprefix" ] && _bprefix=' '
|
1999-09-13 15:44:20 +00:00
|
|
|
;;
|
|
|
|
esac
|
1999-12-12 01:58:30 +00:00
|
|
|
done
|
|
|
|
|
2003-04-18 17:51:54 +00:00
|
|
|
case "$type" in
|
|
|
|
nodhcp)
|
|
|
|
echo $_nodhcplist
|
|
|
|
;;
|
|
|
|
dhcp)
|
|
|
|
echo $_dhcplist
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
return 0
|
2001-11-01 12:39:01 +00:00
|
|
|
}
|