Author: glen
Date: Thu Mar  9 18:47:24 2006
New Revision: 7131

Modified:
   rc-scripts/trunk/rc.d/init.d/network
Log:
Rewritten configuration parsing portion (solves ~ and .rpmnew files ignorance). 
execve() calls reduced from 25 to 4. Tested with ash and ksh. There could be 
bugs!

Modified: rc-scripts/trunk/rc.d/init.d/network
==============================================================================
--- rc-scripts/trunk/rc.d/init.d/network        (original)
+++ rc-scripts/trunk/rc.d/init.d/network        Thu Mar  9 18:47:24 2006
@@ -119,74 +119,98 @@
 set_down_loopback
 }
 
-# find all the interfaces besides loopback.
-# ignore aliases, alternative configurations, and editor backup files
-if [ -n "$(grep "^BOOTPRIO=" /etc/sysconfig/interfaces/ifcfg* 2> /dev/null)" 
]; then
-       interfaces_boot=$(( \
-               . /etc/rc.d/init.d/functions; \
-               cd /etc/sysconfig/interfaces; \
-               egrep 'BOOTPRIO' ifcfg* | sort -t= -n -k2,2 | \
-               awk ' { gsub(/:BOOTPRIO.*/,NIL); print $0 } '| egrep -v 
'ifcfg-lo' | \
-               for i in `cat`; do \
-                       ONBOOT=""; . /etc/sysconfig/interfaces/"$i"; \
-                       is_yes "$ONBOOT" && echo "$i"; \
-               done | \
-               awk ' { gsub(/ifcfg-/,NIL); print $0 } ') 2> /dev/null)
+# Get list of interface configs
+# ignores editor backup files and rpm blackups
+network_interface_configs()
+{
+       local match="$1"
+       for a in /etc/sysconfig/interfaces/$match; do
+               case "$a" in
+               *rpmorig|*rpmnew|*rpmsave|*~|*.orig)
+                       continue
+                       ;;
+               *)
+                       echo $a
+               ;;
+               esac
+       done
+}
+
+ifcfg_files="$(network_interface_configs 'ifcfg-*')"
+
+if [ -n "$bootprio" ]; then
+       # find all the interfaces besides loopback.
+       interfaces_boot=`
+               for a in $(echo "$bootprio" | sort -t= -n -k2,2); do
+                       i="${a%:BOOTPRIO*}"
+                       case $i in
+                               *ifcfg-lo) continue ;;
+                       esac
+                       ONBOOT=""; . "$i" 2>/dev/null
+                       is_yes "$ONBOOT" && echo "${i##*/}"
+               done
+       `
 else
-       interfaces_boot=$((
-               . /etc/rc.d/init.d/functions; \
-               cd /etc/sysconfig/interfaces && ls -1 ifcfg* | \
-               egrep -v 
'(ifcfg-lo|ifcfg-sit|ifcfg-atm|ifcfg-lec|ifcfg-nas|ifcfg-br|ifcfg-(.*)\.(.*))' 
| \
-               LC_ALL=C egrep 'ifcfg-[a-z0-9\.]+$' | \
-               for i in `cat`; do \
-                       ONBOOT=""; . /etc/sysconfig/interfaces/"$i"; \
-                       is_yes "$ONBOOT" && echo "$i"; \
-               done | \
-               awk ' { gsub(/ifcfg-/,NIL); print $0 } ') 2> /dev/null)
-       interfaces_vlan_boot=$((
-               . /etc/rc.d/init.d/functions; \
-               cd /etc/sysconfig/interfaces && ls -1 ifcfg* | \
-               egrep 'ifcfg-(.*)\.(.*)' | \
-               LC_ALL=C egrep 'ifcfg-[a-z0-9\.]+$' | \
-               for i in `cat`; do \
-                       ONBOOT=""; . /etc/sysconfig/interfaces/"$i"; \
-                       is_yes "$ONBOOT" && echo "$i"; \
-               done | \
-               awk ' { gsub(/ifcfg-/,NIL); print $0 } ') 2> /dev/null)
-       interfaces_br_boot=$((
-               . /etc/rc.d/init.d/functions; \
-               cd /etc/sysconfig/interfaces && ls -1 ifcfg-br* | \
-               LC_ALL=C egrep 'ifcfg-[a-z0-9\.]+$' | \
-               for i in `cat`; do \
-                       ONBOOT=""; . /etc/sysconfig/interfaces/"$i"; \
-                       is_yes "$ONBOOT" && echo "$i"; \
-               done | \
-               awk ' { gsub(/ifcfg-/,NIL); print $0 } ') 2> /dev/null)
-       interfaces_sit_boot=$((
-               . /etc/rc.d/init.d/functions; \
-               cd /etc/sysconfig/interfaces && ls -1 ifcfg-sit* | \
-               LC_ALL=C egrep 'ifcfg-[a-z0-9]+$' | \
-               for i in `cat`; do \
-                       ONBOOT=""; . /etc/sysconfig/interfaces/"$i"; \
-                       is_yes "$ONBOOT" && echo "$i"; \
-               done | \
-               awk ' { gsub(/ifcfg-/,NIL); print $0 } ') 2> /dev/null)
+       interfaces_boot=`
+               for i in $ifcfg_files; do
+                       case ${i##*/} in
+                               
ifcfg-lo|ifcfg-sit|ifcfg-atm|ifcfg-lec|ifcfg-nas|ifcfg-br|ifcfg-*.*) continue ;;
+                       esac
+                       ONBOOT=""; . "$i" 2>/dev/null
+                       is_yes "$ONBOOT" && echo "${i##*/}"
+               done
+       `
+
+       interfaces_vlan_boot=`
+               for i in $ifcfg_files; do
+                       case ${i##*/} in
+                               ifcfg-*.*) ;;
+                               *) continue ;;
+                       esac
+                       ONBOOT=""; . "$i" 2>/dev/null
+                       is_yes "$ONBOOT" && echo "${i##*/}"
+               done
+       `
+
+       interfaces_br_boot=`
+               for i in $ifcfg_files; do
+                       case ${i##*/} in
+                               ifcfg-br*) ;;
+                               *) continue ;;
+                       esac
+                       ONBOOT=""; . "$i" 2>/dev/null
+                       is_yes "$ONBOOT" && echo "${i##*/}"
+               done
+       `
+
+       interfaces_sit_boot=`
+               for i in $ifcfg_files; do
+                       case ${i##*/} in
+                               ifcfg-sit*) ;;
+                               *) continue ;;
+                       esac
+                       ONBOOT=""; . "$i" 2>/dev/null
+                       is_yes "$ONBOOT" && echo "${i##*/}"
+               done
+       `
 fi
-tunnels=$((cd /etc/sysconfig/interfaces && ls -1 tnlcfg-* | \
-       xargs egrep -l "ONBOOT=[^n][^o]" | \
-       LC_ALL=C egrep 'tnlcfg-[a-z0-9]+$' | \
-       awk ' { gsub(/tnlcfg-/,NIL); print $0 } ') 2> /dev/null)
+
+tunnels=`
+       for i in $(network_interface_configs 'tnlcfg-*'); do
+               ONBOOT=""; . "$i" 2>/dev/null
+               is_yes "$ONBOOT" && echo "${i##*/}"
+       done
+`
 
 # See how we were called.
 case "$1" in
   start)
-       rc_splash "bootnetwork start"
-
        if is_yes "$VSERVER"; then
                touch /var/lock/subsys/network
                exit 0
        fi
 
+       rc_splash "bootnetwork start"
        network_init
 
        for i in $interfaces_boot $interfaces_vlan_boot $interfaces_sit_boot ; 
do
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to