aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Hubbs <w.d.hubbs@gmail.com>2013-04-08 12:46:51 -0500
committerWilliam Hubbs <w.d.hubbs@gmail.com>2013-04-08 12:46:51 -0500
commit56f1752ce1899c455b9e97ac73da9bd68fbab2b9 (patch)
tree0b03782d3383ec913f99e9226b01050aee624d7c
parent9314ac64ead736c3e2b0d990a8b7030c16013993 (diff)
create loopback service
The loopback service handles the basic settings for the loopback interface, regardless of the network manager you are using.
-rw-r--r--init.d/Makefile4
-rw-r--r--init.d/loopback.in35
-rw-r--r--init.d/network.in13
-rw-r--r--runlevels/Makefile2
4 files changed, 42 insertions, 12 deletions
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 <w.d.hubbs@gmail.com>
+# 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}}