diff --git a/package/base/iproute2/stone_mod_network.sh b/package/base/iproute2/stone_mod_network.sh
index e20abcf52..db4c39930 100644
--- a/package/base/iproute2/stone_mod_network.sh
+++ b/package/base/iproute2/stone_mod_network.sh
@@ -20,129 +20,128 @@
 # 
 # --- ROCK-COPYRIGHT-NOTE-END ---
 #
-# [MAIN] 20 network Network (TCP/IP v4) Configuration
-
-HOSTNAME="`hostname`"
-DOMAINNAME="`hostname -d 2> /dev/null`"
-
-DHCP="X" ; IF="X" ; IPADDR="X" ; GATEWAY="X" ; tmp="`mktemp`"
-egrep '^(DHCP|IF|IPADDR|GATEWAY)=' /etc/conf/network > $tmp ; . $tmp
-
-grep '^nameserver ' /etc/resolv.conf | tr '\t' ' ' | tr -s ' ' | \
-    sed 's,^nameserver *\([^ ]*\),DNSSRV="$DNSSRV \1",' > $tmp
-DNSSRV='' ; . $tmp ; DNSSRV="`echo $DNSSRV`"
-[ -z "$DNSSRV" ] && DNSSRV="none" ; rm -f $tmp
-
-set_name() {
-	old1="$HOSTNAME" old2="$HOSTNAME.$DOMAINNAME" old3="$DOMAINNAME"
-	if [ $1 = HOSTNAME ] ; then
-		gui_input "Set a new hostname (without domain part)" \
-		          "${!1}" "$1"
-	else
-		gui_input "Set a new domainname (without host part)" \
-		          "${!1}" "$1"
-	fi
-	new="$HOSTNAME.$DOMAINNAME $HOSTNAME"
-
-	echo "$HOSTNAME" > /etc/HOSTNAME ; hostname "$HOSTNAME"
-
-	ip="`echo $IPADDR | sed 's,[/ ].*,,'`"
-	if grep -q "^$ip\\b" /etc/hosts ; then
-		tmp="`mktemp`"
-		sed -e "/^$ip\\b/ s,\\b$old2\\b[ 	]*,,g" \
-		    -e "/^$ip\\b/ s,\\b$old1\\b[ 	]*,,g" \
-		    -e "/^$ip\\b/ s,[ 	]\\+,&$new ," < /etc/hosts > $tmp
-		cat $tmp > /etc/hosts ; rm -f $tmp
-	else
-		echo -e "$ip\\t$new" >> /etc/hosts
-	fi
-
-	if [ $1 = DOMAINNAME ] ; then
-		tmp="`mktemp`"
-		grep -vx "search $old3" /etc/resolv.conf > $tmp
-		[ -n "$DOMAINNAME" ] && echo "search $DOMAINNAME" >> $tmp
-		cat $tmp > /etc/resolv.conf
-		rm -f $tmp
-	fi
-}
+# [MAIN] 20 network Network Configuration
 
-set_dns() {
-	gui_input "Set a new (space seperated) list of DNS Servers" "$DNSSRV" "DNSSRV"
-	DNSSRV="`echo $DNSSRV`" ; [ -z "$DNSSRV" ] && DNSSRV="none"
+rocknet_base="/etc/network"
 
-	tmp="`mktemp`" ; grep -v '^nameserver\b' /etc/resolv.conf > $tmp
-	for x in $DNSSRV ; do
-		[ "$x" != "none" ] && echo "nameserver $x" >> $tmp
-	done
-	cat $tmp > /etc/resolv.conf
-	rm -f $tmp
+edit() {
+	gui_edit "Edit file $1" "$1"
+	exec $STONE network
 }
 
-set_dhcp() {
-	DHCP=$1 ; tmp="`mktemp`"
-	sed "s,^DHCP=.*,DHCP=\"$1\"," < /etc/conf/network > $tmp
-	cat $tmp > /etc/conf/network ; rm -f $tmp
+read_section() {
+	local globals=1
+	local readit=0
+	local i=0
+
+	tags=""
+	interfaces=""
+
+
+	[ "$1" = "" ] && readit=1
+	while read netcmd para
+	do
+		if [ -n "$netcmd" ]; then
+			netcmd="${netcmd//-/_}"
+			para="$( echo "$para" | sed 's,[\*\?],\\&,g' )"
+			if [ "$netcmd" = "interface" ] ; then
+				prof="$( echo "$para" | sed 's,[(),],_,g' )"
+				[ "$prof" = "$1" ] && readit=1 || readit=0
+				globals=0
+				interfaces="$interfaces $prof"
+			fi
+			if [ $readit = 1 ] ; then
+				tags[$i]="$netcmd $para"
+				i=$((i+1))
+			fi
+		fi
+	done < <( sed 's,#.*,,' < "$rocknet_base"/config )
 }
 
-set_if() {
-	gui_input "Set a new network interface" "$IF" IF ; tmp="`mktemp`"
-	sed "s,^IF=.*,IF=\"$IF\"," < /etc/conf/network > $tmp
-	cat $tmp > /etc/conf/network ; rm -f $tmp
+write_section() {
+	local globals=1
+	local passit=1
+	local dumped=0
+
+	[ "$1" = "" ] && passit=0
+
+	echo -n > $rocknet_base/config.new
+
+	while read netcmd para
+	do
+		if [ -n "$netcmd" ]; then
+			netcmd="${netcmd//-/_}"
+			para="$( echo "$para" | sed 's,[\*\?],\\&,g' )"
+			if [ "$netcmd" = "interface" ] ; then
+				prof="$( echo "$para" | sed 's,[(),],_,g' )"
+				[ "$prof" = "$1" ] && passit=0 || passit=1
+				globals=0
+			fi
+
+			# when we reached the matching section dump the
+			# mew tags ...
+			if [ $passit = 0 -a $dumped = 0 ] ; then
+				for (( i=0 ; $i < ${#tags[@]} ; i=i+1 )) ; do
+					echo "${tags[$i]}" # >> \
+					# $rocknet_base/config.new
+				done
+				dumped=1
+			fi
+
+			[ $passit = 1 ] && echo "$netcmd $para" # >> \
+					#$rocknet_base/config.new
+		fi
+	done < <( sed 's,#.*,,' < "$rocknet_base"/config )
+	# mv $rocknet_base/config{.new,}
 }
 
-set_ip() {
-	oldip="`echo $IPADDR | sed 's,[/ ].*,,'`"
-	if [ $1 = IPADDR ] ; then
-		gui_input "Set a new IP address or a whitespace seperated list
-of IP addresses in the format A.B.C.D/NM (e.g. 192.168.20.17/24)" "$IPADDR" IPADDR
-	else
-		gui_input "Set a new gateway IP address (e.g. 192.168.20.1)" \
-				"$GATEWAY" GATEWAY
-	fi
-	newip="`echo $IPADDR | sed 's,[/ ].*,,'`"
-
-	sed -e "s,^IPADDR=.*,IPADDR=\"$IPADDR\"," \
-	    -e "s,^GATEWAY=.*,GATEWAY=\"$GATEWAY\"," \
-		< /etc/conf/network > $tmp
-	cat $tmp > /etc/conf/network ; rm -f $tmp
-
-	if [ "$newip" != "$oldip" ] ; then
-		tmp="`mktemp`"
-		sed -e "s,^$oldip\\b,$newip," < /etc/hosts > $tmp
-		cat $tmp > /etc/hosts ; rm -f $tmp
-	fi
+edit_tag() {
+	tag="${tags[$1]}"
+	name="$tag"
+	gui_input "Set new value for tag '$name'" \
+	          "$tag" "tag"
+	tags[$1]="$tag"
 }
 
-edit() {
-	gui_edit "Edit file $1" "$1"
-	exec $STONE network
+edit_global_tag() {
+	edit_tag $@
+	write_section ""
+}
+
+edit_if() {
+	read_section "$1"
+	while
+		cmd="gui_menu if_edit 'Configure interface ${1//_/ }'"
+		for (( i=0 ; $i < ${#tags[@]} ; i=i+1 )) ; do
+			cmd="$cmd '${tags[$i]}' 'edit_tag $i'"
+		done
+		eval "$cmd"
+	do : ; done
+	write_section "$1"
 }
 
 main() {
     while
-	cmd="gui_menu network 'Network Configuration - Select an item to"
-	cmd="$cmd change the value
-
-WARNING: This script tries to adapt /etc/conf/network, /etc/hosts,
-/etc/resolv.conf and /etc/HOSTNAME according to your changes. You
-better be carefull if you also change this files by hand.'"
-
-	cmd="$cmd 'Hostname:    $HOSTNAME'   'set_name HOSTNAME'"
-	cmd="$cmd 'Domainname:  $DOMAINNAME' 'set_name DOMAINNAME'"
-	cmd="$cmd 'DNS-Server:  $DNSSRV'     'set_dns' '' ''"
-
-	if [ "$DHCP" = "X" ] ; then
-		cmd="$cmd 'File /etc/conf/network has been changed.' ''"
-		cmd="$cmd 'So no IP configuration is available here.' ''"
-	elif [ "$DHCP" = "on" ] ; then
-		cmd="$cmd '[*] Use DHCP for IP configuration' 'set_dhcp off'"
-		cmd="$cmd 'Network Interface:  $IF' 'set_if'"
-	else
-		cmd="$cmd '[ ] Use DHCP for IP configuration' 'set_dhcp on'"
-		cmd="$cmd 'Network Interface:  $IF' 'set_if'"
-		cmd="$cmd 'Host IP Addresses:  $IPADDR'  'set_ip IPADDR'"
-		cmd="$cmd 'Gateway IP Address: $GATEWAY' 'set_ip GATEWAY'"
-	fi
+
+	cmd="gui_menu network 'Network Configuration - Select an item to
+change the value
+
+WARNING: This script tries to adapt /etc/network/config and /etc/hosts
+according to your changes. Changes only take affect the next time
+rocknet is executed.'"
+
+	# read global section and interface list ...
+	read_section ""
+
+	for (( i=0 ; $i < ${#tags[@]} ; i=i+1 )) ; do
+		cmd="$cmd '${tags[$i]}' 'edit_global_tag $i'"
+	done
+
+	cmd="$cmd '' ''"
+
+	for if in $interfaces ; do
+		cmd="$cmd 'Edit interface ${if//_/ }' 'edit_if $if'"
+	done
 
 	cmd="$cmd '' '' 'Configure runlevels for network service'"
 	cmd="$cmd '$STONE runlevel edit_srv network'"
@@ -150,9 +149,8 @@ better be carefull if you also change this files by hand.'"
 	cmd="$cmd '$STONE runlevel restart network'"
 	cmd="$cmd '' ''"
 
-	cmd="$cmd 'View/Edit /etc/conf/network file' 'edit /etc/conf/network'"
-	cmd="$cmd 'View/Edit /etc/hosts file'        'edit /etc/hosts'"
-	cmd="$cmd 'View/Edit /etc/resolv.conf file'  'edit /etc/resolv.conf'"
+	cmd="$cmd 'View/Edit $rocknet_base/config file' 'edit $rocknet_base/config'"
+	cmd="$cmd 'View/Edit /etc/hosts file'          'edit /etc/hosts'"
 
 	eval "$cmd"
     do : ; done