Pull /etc/ifconfig.eth0 into interfaces
Reverse list of interfaces when stopping Improve build for conf.d/network
This commit is contained in:
parent
3579663173
commit
170547010f
@ -1,9 +1,14 @@
|
||||
DIR= ${CONFDIR}
|
||||
CONF= bootmisc fsck hostname local localmount network urandom
|
||||
|
||||
TARGETS+= network
|
||||
CLEANFILES+= network
|
||||
|
||||
MK= ../mk
|
||||
include ${MK}/os.mk
|
||||
include Makefile.${OS}
|
||||
include ${MK}/scripts.mk
|
||||
|
||||
network: network.in network.${OS}
|
||||
cp network.in network
|
||||
[ -e network.${OS} ] && cat network.${OS} >> network
|
||||
|
@ -1,4 +1 @@
|
||||
CONF+= ipfw moused powerd rarpd savecore syscons
|
||||
|
||||
network:
|
||||
cp network.in network
|
||||
|
@ -1,5 +1 @@
|
||||
CONF+= consolefont dmesg hwclock keymaps modules
|
||||
|
||||
network:
|
||||
cp network.in network
|
||||
cat network.Linux >> network
|
||||
|
@ -1,4 +1 @@
|
||||
CONF+= moused rarpd savecore
|
||||
|
||||
network:
|
||||
cp network.in network
|
||||
|
@ -1,10 +1,17 @@
|
||||
# Assign static IP addresses and run custom scripts per interface
|
||||
# Assign static IP addresses and run custom scripts per interface.
|
||||
# Seperate commands with ;
|
||||
# Prefix with ! to run a shell script
|
||||
# Prefix with ! to run a shell script.
|
||||
# ifconfig_eth0="up; 192.168.0.10 netmask 255.255.255.0; ! echo up"
|
||||
|
||||
# You also have ifup_eth0 and ifdown_eth0 to run other commands when
|
||||
# eth0 is started and stopped.
|
||||
# Lastly, the interfaces variable pulls in virtual interfaces that cannot
|
||||
# be automatically detected.
|
||||
# be automatically detected.
|
||||
|
||||
# You can also use files instead of variables here if you like:
|
||||
# /etc/ifconfig.eth0 is equivalent to ifconfig_eth0
|
||||
# /etc/ip.eth0 is equivalent to ifconfig_eth0
|
||||
# /etc/ifup.eth0 is equivalent to ifup_eth0
|
||||
# /etc/ifdown.eth0 is equivalent to ifdown_eth0
|
||||
# Any files found will automatically be put into the interfaces variable.
|
||||
|
||||
|
@ -2,6 +2,8 @@
|
||||
# Copyright 2009 Roy Marples <roy@marples.name>
|
||||
# All rights reserved. Released under the 2-clause BSD license.
|
||||
|
||||
# This script was inspired by the equivalent rc.d network from NetBSD.
|
||||
|
||||
description="Configures network interfaces."
|
||||
__nl="
|
||||
"
|
||||
@ -14,7 +16,28 @@ depend()
|
||||
keyword nojail noprefix novserver
|
||||
}
|
||||
|
||||
interfaces()
|
||||
uniqify()
|
||||
{
|
||||
local result= i=
|
||||
for i; do
|
||||
case " $result " in
|
||||
*" $i "*);;
|
||||
*) result="$result $i";;
|
||||
esac
|
||||
done
|
||||
echo "${result# *}"
|
||||
}
|
||||
|
||||
reverse()
|
||||
{
|
||||
local result= i=
|
||||
for i; do
|
||||
result="$i $result"
|
||||
done
|
||||
echo "${result# *}"
|
||||
}
|
||||
|
||||
sys_interfaces()
|
||||
{
|
||||
case "${RC_UNAME}" in
|
||||
Linux)
|
||||
@ -34,17 +57,33 @@ interfaces()
|
||||
esac
|
||||
}
|
||||
|
||||
uniqify()
|
||||
auto_interfaces()
|
||||
{
|
||||
local result=
|
||||
while [ -n "$1" ]; do
|
||||
case " ${result} " in
|
||||
*" $1 "*);;
|
||||
*) result="${result} $1";;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
echo "${result# *}"
|
||||
local ifs= c= f=
|
||||
|
||||
case "${RC_UNAME}" in
|
||||
NetBSD)
|
||||
for c in $(ifconfig -C 2>/dev/null); do
|
||||
for f in /etc/ifconfig.${c}[0-9]*; do
|
||||
[ -f "$f" ] && printf "%s" "$f{##*.} "
|
||||
done
|
||||
done
|
||||
;;
|
||||
*)
|
||||
for f in /etc/ifconfig.*; do
|
||||
[ -f "$f" ] && printf "%s" "${f##*.} "
|
||||
done
|
||||
for f in /etc/ip.*; do
|
||||
[ -f "$f" ] && printf "%s" "${f##*.} "
|
||||
done
|
||||
;;
|
||||
esac
|
||||
echo
|
||||
}
|
||||
|
||||
interfaces()
|
||||
{
|
||||
uniqify $(sys_interfaces "$@") $interfaces $(auto_interfaces)
|
||||
}
|
||||
|
||||
dumpargs()
|
||||
@ -53,7 +92,7 @@ dumpargs()
|
||||
|
||||
shift
|
||||
case "$@" in
|
||||
'') cat "$f";;
|
||||
'') [ -f "$f" ] && cat "$f";;
|
||||
*"$__nl"*) echo "$@";;
|
||||
*)
|
||||
(
|
||||
@ -125,7 +164,7 @@ runargs()
|
||||
|
||||
start()
|
||||
{
|
||||
local cr=0 r= iface= cnf= cmd= args= upcmd=
|
||||
local cr=0 r= iface= cmd= args= upcmd=
|
||||
einfo "Starting network"
|
||||
routeflush
|
||||
if [ "${RC_UNAME}" = "Linux" ]; then
|
||||
@ -140,7 +179,7 @@ start()
|
||||
127.0.0.1 -reject || cr=1
|
||||
fi
|
||||
eindent
|
||||
for iface in $(uniqify $(interfaces) $interfaces); do
|
||||
for iface in $(interfaces); do
|
||||
local func= cf=
|
||||
eval upcmd=\$ifup_$iface
|
||||
for func in ip ifconfig; do
|
||||
@ -157,9 +196,7 @@ start()
|
||||
ip) func=runip;;
|
||||
esac
|
||||
eindent
|
||||
if [ -n "$upcmd" -o -f /etc/ifup."$iface" ]; then
|
||||
runargs /etc/ifup."$iface" "$upcmd"
|
||||
fi
|
||||
runargs /etc/ifup."$iface" "$upcmd"
|
||||
r=0
|
||||
dumpargs "$cf" "$cmd" | while read -r args; do
|
||||
case "$args" in
|
||||
@ -201,11 +238,11 @@ start()
|
||||
|
||||
stop()
|
||||
{
|
||||
local cr=0 r= iface= cnf= cmd= args= downcmd=
|
||||
local iface= cmd= downcmd=
|
||||
einfo "Stopping network"
|
||||
routeflush
|
||||
eindent
|
||||
for iface in $(uniqify $(interfaces u) $interfaces); do
|
||||
for iface in $(reverse $(interfaces u)); do
|
||||
eval downcmd=\$ifdown_$iface
|
||||
eval cmd=\$ip_$iface
|
||||
[ -z "$cmd" ] && eval cmd=\$ifconfig_$iface
|
||||
@ -214,10 +251,9 @@ stop()
|
||||
-n "$downcmd" -o -f /etc/ifdown."$iface" ];
|
||||
then
|
||||
vebegin "$iface"
|
||||
if [ -n "$downcmd" -o -f /etc/ifdown."$iface" ]; then
|
||||
runargs /etc/ifdown."$iface" "$downcmd"
|
||||
fi
|
||||
runargs /etc/ifdown."$iface" "$downcmd"
|
||||
ifconfig "$iface" down 2>/dev/null
|
||||
ifconfig "$iface" destroy 2>/dev/null
|
||||
veend $?
|
||||
fi
|
||||
done
|
||||
|
Loading…
Reference in New Issue
Block a user