diff --git a/init.d/Makefile b/init.d/Makefile index 04e09a70..e7e2d861 100644 --- a/init.d/Makefile +++ b/init.d/Makefile @@ -1,6 +1,6 @@ DIR= ${INITDIR} -SRCS= bootmisc.in fsck.in hostname.in local.in localmount.in netmount.in \ - root.in savecache.in swap.in swapfiles.in \ +SRCS= bootmisc.in fsck.in hostname.in local.in localmount.in loopback.in \ + netmount.in root.in savecache.in swap.in swapfiles.in \ tmpfiles.setup.in swclock.in sysctl.in urandom.in ${SRCS-${OS}} BIN= ${OBJS} diff --git a/init.d/loopback.in b/init.d/loopback.in new file mode 100644 index 00000000..e5cc118b --- /dev/null +++ b/init.d/loopback.in @@ -0,0 +1,35 @@ +#!@SBINDIR@/runscript +# Copyright (c) 2013 William Hubbs +# Released under the 2-clause BSD license. + +description="Configures the loopback interface." + +depend() +{ + return 0 +} + +start() +{ + if [ "$RC_UNAME" = Linux ]; then + ebegin "Bringing up network interface lo" + if type ip > /dev/null 2>&1; then + ip addr add 127.0.0.1/8 dev lo brd + scope host + ip route add 127.0.0.0/8 dev lo scope host + ip link set lo up + else + ifconfig lo 127.0.0.1 netmask 255.0.0.0 + route add -net 127.0.0.0 netmask 255.0.0.0 gw 127.0.0.1 + fi + else + ebegin "Bringing up network interface lo0" + ifconfig lo0 127.0.0.1 netmask 255.0.0.0 + route -q add -inet 127.0.0.0 -netmask 255.0.0.0 127.0.0.1 + fi + eend $? +} + +stop() +{ + return 0 +} diff --git a/init.d/network.in b/init.d/network.in index 898b0a8e..5a87a841 100644 --- a/init.d/network.in +++ b/init.d/network.in @@ -223,15 +223,6 @@ start() einfo "Starting network" routeflush - if [ "$RC_UNAME" = "Linux" ]; then - ifconfig lo 127.0.0.1 netmask 255.0.0.0 || cr=1 - route add -net 127.0.0.0 netmask 255.0.0.0 \ - gw 127.0.0.1 reject 2>/dev/null - else - ifconfig lo0 127.0.0.1 netmask 255.0.0.0 || cr=1 - route -q add -inet 127.0.0.0 -netmask 255.0.0.0 \ - 127.0.0.1 -reject || cr=1 - fi eindent for int in $(interfaces); do local func= cf= @@ -330,6 +321,10 @@ stop() routeflush eindent for int in $(reverse $(interfaces u)); do + case "$int" in + lo|lo0) continue ;; + *) ;; + esac intv=$(shell_var "$int") eval downcmd=\$ifdown_$intv eval cmd=\$ip_$intv diff --git a/runlevels/Makefile b/runlevels/Makefile index 7bcf29fe..6eb84ca8 100644 --- a/runlevels/Makefile +++ b/runlevels/Makefile @@ -1,4 +1,4 @@ -BOOT= bootmisc fsck hostname localmount \ +BOOT= bootmisc fsck hostname localmount loopback \ root swap swapfiles sysctl urandom ${BOOT-${OS}} DEFAULT= local netmount SHUTDOWN= savecache ${SHUTDOWN-${OS}}