summaryrefslogtreecommitdiff
path: root/packages/udev/files
diff options
context:
space:
mode:
authorMatthias Hentges <oe@hentges.net>2006-05-03 12:29:24 +0000
committerOpenEmbedded Project <openembedded-devel@lists.openembedded.org>2006-05-03 12:29:24 +0000
commit5a472649c065482d39a317030734593228ac0258 (patch)
tree3bc539ccfd55072661f4e13eb5416d17c8f79699 /packages/udev/files
parentd602c21a168f2bfc79f5b5451b4614282f08c4b9 (diff)
udev: Do not start any NICs before /etc/init.d/network is run and /var/ is populated
Diffstat (limited to 'packages/udev/files')
-rw-r--r--packages/udev/files/network.sh29
-rw-r--r--packages/udev/files/udev_network_queue.sh35
2 files changed, 64 insertions, 0 deletions
diff --git a/packages/udev/files/network.sh b/packages/udev/files/network.sh
index 5e2bd5799a..5016328df4 100644
--- a/packages/udev/files/network.sh
+++ b/packages/udev/files/network.sh
@@ -6,6 +6,35 @@ test -x /sbin/cardctl && exit 0
# We get two "add" events for hostap cards due to wifi0
echo "$INTERFACE" | grep -q wifi && exit 0
+
+# Check if /etc/init.d/network has been run yet to see if we are
+# called by starting /etc/rcS.d/S03udev and not by hotplugging a device
+#
+# At this stage, network interfaces should not be brought up
+# automatically because:
+# a) /etc/init.d/network has not been run yet (security issue)
+# b) /var has not been populated yet so /etc/resolv,conf points to
+# oblivion, making the network unusable
+#
+
+spoofp="`grep ^spoofprotect /etc/network/options`"
+if test -z "$spoofp"
+then
+ # This is the default from /etc/init.d/network
+ spoofp_val=yes
+else
+ spoofp_val=${spoofp#spoofprotect=}
+fi
+
+test "$spoofp_val" = yes && spoofp_val=1 || spoofp_val=0
+
+# I think it is safe to assume that "lo" will always be there ;)
+if test "`cat /proc/sys/net/ipv4/conf/lo/rp_filter`" != "$spoofp_val" -a -n "$spoofp_val"
+then
+ echo "$INTERFACE" >> /dev/udev_network_queue
+ exit 0
+fi
+
#
# Code taken from pcmcia-cs:/etc/pcmcia/network
#
diff --git a/packages/udev/files/udev_network_queue.sh b/packages/udev/files/udev_network_queue.sh
new file mode 100644
index 0000000000..05e08e9d1b
--- /dev/null
+++ b/packages/udev/files/udev_network_queue.sh
@@ -0,0 +1,35 @@
+#! /bin/sh
+#
+# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
+# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
+#
+# Filename: udev_network_queue.sh
+# Date: 03-May-06
+
+do_start() {
+ if test -e /dev/udev_network_queue
+ then
+ echo "Activating queued NICs..."
+ for NIC in `cat /dev/udev_network_queue`
+ do
+ export INTERFACE="$NIC" ; export ACTION=add
+ /etc/udev/scripts/network.sh
+ done
+ echo ""
+ else
+ echo "No NICs queued"
+ fi
+}
+
+do_stop() {
+ /bin/true
+}
+
+case "$1" in
+start) do_start;;
+stop) do_stop;;
+restart) do_stop
+ do_start;;
+*) echo "Usage: `basename $0` [ start | stop | restart ]"
+ exit 0;;
+esac