From 30285dd379000284555a38c80b7d4dad472fe515 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Tue, 9 May 2006 19:35:13 +0000 Subject: More packages merging with OE git-svn-id: https://svn.o-hand.com/repos/poky/trunk@390 311d38ba-8fff-0310-9ca6-ca027cbcb966 --- openembedded/packages/udev/files/mount.sh | 42 +++++++++++++++++++++++++++++ openembedded/packages/udev/files/network.sh | 31 ++++++++++++++++++++- 2 files changed, 72 insertions(+), 1 deletion(-) (limited to 'openembedded/packages/udev/files') diff --git a/openembedded/packages/udev/files/mount.sh b/openembedded/packages/udev/files/mount.sh index 7e641b08d..48c784469 100644 --- a/openembedded/packages/udev/files/mount.sh +++ b/openembedded/packages/udev/files/mount.sh @@ -8,6 +8,39 @@ MOUNT="/bin/mount" PMOUNT="/usr/bin/pmount" UMOUNT="/bin/umount" +name="`basename "$DEVNAME"`" + +for line in `cat /etc/udev/mount.blacklist | grep -v ^#` +do + if ( echo "$DEVNAME" | grep -q "$line" ) + then + logger "udev/mount.sh" "[$DEVNAME] is blacklisted, ignoring" + exit 0 + fi +done + +automount() { + ! test -d "/media/$name" && mkdir -p "/media/$name" + + if ! $MOUNT -t auto -o sync $DEVNAME "/media/$name" + then + #logger "mount.sh/automount" "$MOUNT -t auto $DEVNAME \"/media/$name\" failed!" + rm_dir "/media/$name" + else + logger "mount.sh/automount" "Auto-mount of [/media/$name] successful" + touch "/tmp/.automount-$name" + fi +} + +rm_dir() { + # We do not want to rm -r populated directories + if test "`find "$1" | wc -l | tr -d " "`" -lt 2 -a -d "$1" + then + ! test -z "$1" && rm -r "$1" + else + logger "mount.sh/automount" "Not removing non-empty directory [$1]" + fi +} if [ "$ACTION" = "add" ] && [ -n "$DEVNAME" ]; then if [ -x "$PMOUNT" ]; then @@ -15,11 +48,20 @@ if [ "$ACTION" = "add" ] && [ -n "$DEVNAME" ]; then elif [ -x $MOUNT ]; then $MOUNT $DEVNAME 2> /dev/null fi + + # If the device isn't mounted at this point, it isn't configured in fstab + cat /proc/mounts | awk '{print $1}' | grep -q "^$DEVNAME$" || automount + fi + + if [ "$ACTION" = "remove" ] && [ -x "$UMOUNT" ] && [ -n "$DEVNAME" ]; then for mnt in `cat /proc/mounts | grep "$DEVNAME" | cut -f 2 -d " " ` do $UMOUNT $mnt done + + # Remove empty directories from auto-mounter + test -e "/tmp/.automount-$name" && rm_dir "/media/$name" fi diff --git a/openembedded/packages/udev/files/network.sh b/openembedded/packages/udev/files/network.sh index 2cfbfa91b..5016328df 100644 --- a/openembedded/packages/udev/files/network.sh +++ b/openembedded/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 # @@ -15,7 +44,7 @@ echo "$INTERFACE" | grep -q wifi && exit 0 if grep -q "iface \+$INTERFACE" /etc/network/interfaces; then case $ACTION in add) - ifup $INTERFACE + ifconfig | grep -q "^$INTERFACE" || ifup $INTERFACE ;; remove) ifdown $INTERFACE -- cgit v1.2.3