Index: boot/Makefile.common
===================================================================
--- boot/Makefile.common	(revision 80ce111b0d6102444ae43ddf0684c88aa8b1f562)
+++ boot/Makefile.common	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
@@ -86,4 +86,6 @@
 endif
 
+CFG =
+
 NET_SRVS = \
 	$(USPACEDIR)/srv/net/net/net \
@@ -100,8 +102,15 @@
 	$(USPACEDIR)/srv/net/app/nettest2/nettest2
 
+NET_CFG = \
+	$(USPACEDIR)/srv/net/cfg/$(NETWORKING)/general \
+	$(USPACEDIR)/srv/net/cfg/$(NETWORKING)/lo \
+	$(USPACEDIR)/srv/net/cfg/$(NETWORKING)/ne2k
+
 ifeq ($(NETWORKING), module)
 	RD_APPS +=	$(NET_APPS)
 
 	RD_SRVS +=	$(NET_SRVS)
+
+	CFG		+=	$(NET_CFG)
 else
 ifeq ($(NETWORKING), modular)
@@ -115,4 +124,6 @@
 			$(USPACEDIR)/srv/net/tl/tcp/tcp \
 			$(USPACEDIR)/srv/net/tl/icmp/icmp
+
+	CFG		+=	$(NET_CFG)
 endif
 endif
Index: boot/arch/amd64/Makefile.inc
===================================================================
--- boot/arch/amd64/Makefile.inc	(revision 80ce111b0d6102444ae43ddf0684c88aa8b1f562)
+++ boot/arch/amd64/Makefile.inc	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
@@ -39,5 +39,5 @@
 build: $(BASE)/image.iso
 
-$(BASE)/image.iso: arch/$(BARCH)/grub/stage2_eltorito $(KERNELDIR)/kernel.bin $(INIT_TASKS) $(RD_SRVS) $(RD_APPS)
+$(BASE)/image.iso: arch/$(BARCH)/grub/stage2_eltorito $(KERNELDIR)/kernel.bin $(INIT_TASKS) $(RD_SRVS) $(RD_APPS) $(CFG)
 	mkdir -p $(TMP)/boot/grub
 	cp arch/$(BARCH)/grub/stage2_eltorito $(TMP)/boot/grub/
@@ -56,4 +56,8 @@
 	done
 	
+	rm -f $(USPACEDIR)/dist/srv/*
+	rm -f $(USPACEDIR)/dist/app/*
+	rm -f $(USPACEDIR)/dist/cfg/net/*
+	
 	cp $(KERNELDIR)/kernel.bin $(TMP)/boot/
 	for task in $(INIT_TASKS) ; do \
@@ -65,4 +69,7 @@
 	for file in $(RD_APPS) ; do \
 		cp $$file $(USPACEDIR)/dist/app/ ; \
+	done
+	for file in $(NET_CFG) ; do \
+		cp $$file $(USPACEDIR)/dist/cfg/net/ ; \
 	done
 	
@@ -78,4 +85,8 @@
 
 clean:
+	rm -f $(USPACEDIR)/dist/srv/*
+	rm -f $(USPACEDIR)/dist/app/*
+	rm -f $(USPACEDIR)/dist/cfg/net/*
+
 	for file in $(RD_SRVS) ; do \
 		rm -f $(USPACEDIR)/dist/srv/`basename $$file` ; \
@@ -84,4 +95,7 @@
 		rm -f $(USPACEDIR)/dist/app/`basename $$file` ; \
 	done
+	for file in $(NET_CFG) ; do \
+		rm -f $(USPACEDIR)/dist/cfg/net/`basename $$file` ; \
+	done
 	rm -fr $(TMP)
 	rm -f $(BASE)/image.iso
Index: boot/arch/arm32/loader/Makefile
===================================================================
--- boot/arch/arm32/loader/Makefile	(revision 80ce111b0d6102444ae43ddf0684c88aa8b1f562)
+++ boot/arch/arm32/loader/Makefile	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
@@ -37,4 +37,8 @@
 
 clean:
+	rm -f $(USPACEDIR)/dist/srv/*
+	rm -f $(USPACEDIR)/dist/app/*
+	rm -f $(USPACEDIR)/dist/cfg/net/*
+
 	for file in $(RD_SRVS) ; do \
 		rm -f $(USPACEDIR)/dist/srv/`basename $$file` ; \
@@ -43,4 +47,7 @@
 		rm -f $(USPACEDIR)/dist/app/`basename $$file` ; \
 	done
+	for file in $(NET_CFG) ; do \
+		rm -f $(USPACEDIR)/dist/cfg/net/`basename $$file` ; \
+	done
 	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(COMPS).h $(COMPS).c $(LINK) $(INITRD).img $(INITRD).fs
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: boot/arch/arm32/loader/Makefile.build
===================================================================
--- boot/arch/arm32/loader/Makefile.build	(revision 80ce111b0d6102444ae43ddf0684c88aa8b1f562)
+++ boot/arch/arm32/loader/Makefile.build	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
@@ -76,4 +76,8 @@
 
 $(DEPEND):
+	rm -f $(USPACEDIR)/dist/srv/*
+	rm -f $(USPACEDIR)/dist/app/*
+	rm -f $(USPACEDIR)/dist/cfg/net/*
+
 	for file in $(RD_SRVS) ; do \
 		cp $$file $(USPACEDIR)/dist/srv/ ; \
@@ -81,4 +85,7 @@
 	for file in $(RD_APPS) ; do \
 		cp $$file $(USPACEDIR)/dist/app/ ; \
+	done
+	for file in $(NET_CFG) ; do \
+		cp $$file $(USPACEDIR)/dist/cfg/net/ ; \
 	done
 ifeq ($(RDFMT),tmpfs)
Index: boot/arch/ia64/loader/Makefile
===================================================================
--- boot/arch/ia64/loader/Makefile	(revision 80ce111b0d6102444ae43ddf0684c88aa8b1f562)
+++ boot/arch/ia64/loader/Makefile	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
@@ -40,4 +40,9 @@
 	$(MAKE) -C gefi clean
 	$(MAKE) -C gefi/HelenOS clean
+
+	rm -f $(USPACEDIR)/dist/srv/*
+	rm -f $(USPACEDIR)/dist/app/*
+	rm -f $(USPACEDIR)/dist/cfg/net/*
+
 	for file in $(RD_SRVS) ; do \
 		rm -f $(USPACEDIR)/dist/srv/`basename $$file` ; \
@@ -46,4 +51,7 @@
 		rm -f $(USPACEDIR)/dist/app/`basename $$file` ; \
 	done
+	for file in $(NET_CFG) ; do \
+		rm -f $(USPACEDIR)/dist/cfg/net/`basename $$file` ; \
+	done
 	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(HELLO) $(COMPS).h $(COMPS).c $(LINK) $(INITRD).img $(INITRD).fs
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: boot/arch/ia64/loader/Makefile.build
===================================================================
--- boot/arch/ia64/loader/Makefile.build	(revision 80ce111b0d6102444ae43ddf0684c88aa8b1f562)
+++ boot/arch/ia64/loader/Makefile.build	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
@@ -77,4 +77,8 @@
 
 $(DEPEND):
+	rm -f $(USPACEDIR)/dist/srv/*
+	rm -f $(USPACEDIR)/dist/app/*
+	rm -f $(USPACEDIR)/dist/cfg/net/*
+
 	for file in $(RD_SRVS) ; do \
 		cp $$file $(USPACEDIR)/dist/srv/ ; \
@@ -82,4 +86,7 @@
 	for file in $(RD_APPS) ; do \
 		cp $$file $(USPACEDIR)/dist/app/ ; \
+	done
+	for file in $(NET_CFG) ; do \
+		cp $$file $(USPACEDIR)/dist/cfg/net/ ; \
 	done
 ifeq ($(RDFMT),tmpfs)
Index: boot/arch/mips32/loader/Makefile
===================================================================
--- boot/arch/mips32/loader/Makefile	(revision 80ce111b0d6102444ae43ddf0684c88aa8b1f562)
+++ boot/arch/mips32/loader/Makefile	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
@@ -37,4 +37,8 @@
 
 clean:
+	rm -f $(USPACEDIR)/dist/srv/*
+	rm -f $(USPACEDIR)/dist/app/*
+	rm -f $(USPACEDIR)/dist/cfg/net/*
+
 	for file in $(RD_SRVS) ; do \
 		rm -f $(USPACEDIR)/dist/srv/`basename $$file` ; \
@@ -43,4 +47,7 @@
 		rm -f $(USPACEDIR)/dist/app/`basename $$file` ; \
 	done
+	for file in $(NET_CFG) ; do \
+		rm -f $(USPACEDIR)/dist/cfg/net/`basename $$file` ; \
+	done
 	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(RAW) $(COMPS).h $(COMPS).c $(LINK) $(INITRD).img $(INITRD).fs
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: boot/arch/mips32/loader/Makefile.build
===================================================================
--- boot/arch/mips32/loader/Makefile.build	(revision 80ce111b0d6102444ae43ddf0684c88aa8b1f562)
+++ boot/arch/mips32/loader/Makefile.build	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
@@ -77,4 +77,8 @@
 
 $(DEPEND):
+	rm -f $(USPACEDIR)/dist/srv/*
+	rm -f $(USPACEDIR)/dist/app/*
+	rm -f $(USPACEDIR)/dist/cfg/net/*
+
 	for file in $(RD_SRVS) ; do \
 		cp $$file $(USPACEDIR)/dist/srv/ ; \
@@ -82,4 +86,7 @@
 	for file in $(RD_APPS) ; do \
 		cp $$file $(USPACEDIR)/dist/app/ ; \
+	done
+	for file in $(NET_CFG) ; do \
+		cp $$file $(USPACEDIR)/dist/cfg/net/ ; \
 	done
 ifeq ($(RDFMT),tmpfs)
Index: boot/arch/ppc32/loader/Makefile
===================================================================
--- boot/arch/ppc32/loader/Makefile	(revision 80ce111b0d6102444ae43ddf0684c88aa8b1f562)
+++ boot/arch/ppc32/loader/Makefile	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
@@ -37,4 +37,8 @@
 
 clean:
+	rm -f $(USPACEDIR)/dist/srv/*
+	rm -f $(USPACEDIR)/dist/app/*
+	rm -f $(USPACEDIR)/dist/cfg/net/*
+
 	for file in $(RD_SRVS) ; do \
 		rm -f $(USPACEDIR)/dist/srv/`basename $$file` ; \
@@ -43,4 +47,7 @@
 		rm -f $(USPACEDIR)/dist/app/`basename $$file` ; \
 	done
+	for file in $(NET_CFG) ; do \
+		rm -f $(USPACEDIR)/dist/cfg/net/`basename $$file` ; \
+	done
 	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(COMPS).h $(COMPS).c $(LINK) $(INITRD).img $(INITRD).fs
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: boot/arch/ppc32/loader/Makefile.build
===================================================================
--- boot/arch/ppc32/loader/Makefile.build	(revision 80ce111b0d6102444ae43ddf0684c88aa8b1f562)
+++ boot/arch/ppc32/loader/Makefile.build	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
@@ -77,4 +77,8 @@
 
 $(DEPEND):
+	rm -f $(USPACEDIR)/dist/srv/*
+	rm -f $(USPACEDIR)/dist/app/*
+	rm -f $(USPACEDIR)/dist/cfg/net/*
+
 	for file in $(RD_SRVS) ; do \
 		cp $$file $(USPACEDIR)/dist/srv/ ; \
@@ -82,4 +86,7 @@
 	for file in $(RD_APPS) ; do \
 		cp $$file $(USPACEDIR)/dist/app/ ; \
+	done
+	for file in $(NET_CFG) ; do \
+		cp $$file $(USPACEDIR)/dist/cfg/net/ ; \
 	done
 ifeq ($(RDFMT),tmpfs)
Index: boot/arch/sparc64/loader/Makefile
===================================================================
--- boot/arch/sparc64/loader/Makefile	(revision 80ce111b0d6102444ae43ddf0684c88aa8b1f562)
+++ boot/arch/sparc64/loader/Makefile	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
@@ -37,4 +37,8 @@
 
 clean:
+	rm -f $(USPACEDIR)/dist/srv/*
+	rm -f $(USPACEDIR)/dist/app/*
+	rm -f $(USPACEDIR)/dist/cfg/net/*
+
 	for file in $(RD_SRVS) $(RD_SRVS_GENERIC) ; do \
 		rm -f $(USPACEDIR)/dist/srv/`basename $$file` ; \
@@ -43,4 +47,7 @@
 		rm -f $(USPACEDIR)/dist/app/`basename $$file` ; \
 	done
+	for file in $(NET_CFG) ; do \
+		rm -f $(USPACEDIR)/dist/cfg/net/`basename $$file` ; \
+	done
 	rm -f $(DEPEND) $(DEPEND_PREV) $(JOB) $(OUTPUT) $(COMPS).h $(COMPS).c $(LINK) $(INITRD).img $(INITRD).fs
 	find . -name '*.o' -follow -exec rm \{\} \;
Index: boot/arch/sparc64/loader/Makefile.build
===================================================================
--- boot/arch/sparc64/loader/Makefile.build	(revision 80ce111b0d6102444ae43ddf0684c88aa8b1f562)
+++ boot/arch/sparc64/loader/Makefile.build	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
@@ -88,4 +88,8 @@
 
 $(DEPEND):
+	rm -f $(USPACEDIR)/dist/srv/*
+	rm -f $(USPACEDIR)/dist/app/*
+	rm -f $(USPACEDIR)/dist/cfg/net/*
+
 	for file in $(RD_SRVS) ; do \
 		cp $$file $(USPACEDIR)/dist/srv/ ; \
@@ -93,4 +97,7 @@
 	for file in $(RD_APPS) ; do \
 		cp $$file $(USPACEDIR)/dist/app/ ; \
+	done
+	for file in $(NET_CFG) ; do \
+		cp $$file $(USPACEDIR)/dist/cfg/net/ ; \
 	done
 ifeq ($(RDFMT),tmpfs)
Index: uspace/srv/net/cfg/modular/general
===================================================================
--- uspace/srv/net/cfg/modular/general	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
+++ uspace/srv/net/cfg/modular/general	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
@@ -0,0 +1,9 @@
+# general configuration
+
+IPV=4
+IP_ROUTING=no
+MTU=1500
+ICMP_ERROR_REPORTING=yes
+ICMP_ECHO_REPLYING=yes
+UDP_CHECKSUM_COMPUTING=yes
+UDP_AUTOBINDING=yes
Index: uspace/srv/net/cfg/modular/lo
===================================================================
--- uspace/srv/net/cfg/modular/lo	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
+++ uspace/srv/net/cfg/modular/lo	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
@@ -0,0 +1,13 @@
+# loopback configuration
+
+NAME=lo
+
+NETIF=lo
+NIL=nildummy
+IL=ip
+
+IP_CONFIG=static
+IP_ADDR=127.0.0.1
+IP_NETMASK=255.0.0.0
+
+MTU=15535
Index: uspace/srv/net/cfg/modular/ne2k
===================================================================
--- uspace/srv/net/cfg/modular/ne2k	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
+++ uspace/srv/net/cfg/modular/ne2k	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
@@ -0,0 +1,25 @@
+# DP8390 (NE2k) configuration
+
+NAME=ne2k
+
+NETIF=dp8390
+NIL=ethernet
+IL=ip
+
+# sysinfo_value("netif.dp8390.inr")
+IRQ=9
+IO=300
+
+# 8023_2_LSAP, 8023_2_SNAP
+ETH_MODE=DIX
+ETH_DUMMY=no
+
+IP_CONFIG=static
+IP_ADDR=10.0.2.15
+IP_ROUTING=yes
+IP_NETMASK=255.255.255.240
+IP_BROADCAST=10.0.2.255
+IP_GATEWAY=10.0.2.2
+ARP=arp
+
+MTU=1492
Index: uspace/srv/net/cfg/module/general
===================================================================
--- uspace/srv/net/cfg/module/general	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
+++ uspace/srv/net/cfg/module/general	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
@@ -0,0 +1,9 @@
+# general configuration
+
+IPV=4
+IP_ROUTING=no
+MTU=1500
+ICMP_ERROR_REPORTING=yes
+ICMP_ECHO_REPLYING=yes
+UDP_CHECKSUM_COMPUTING=yes
+UDP_AUTOBINDING=yes
Index: uspace/srv/net/cfg/module/lo
===================================================================
--- uspace/srv/net/cfg/module/lo	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
+++ uspace/srv/net/cfg/module/lo	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
@@ -0,0 +1,13 @@
+# loopback configuration
+
+NAME=lo
+
+NETIF=lo
+NIL=lo
+IL=ip
+
+IP_CONFIG=static
+IP_ADDR=127.0.0.1
+IP_NETMASK=255.0.0.0
+
+MTU=15535
Index: uspace/srv/net/cfg/module/ne2k
===================================================================
--- uspace/srv/net/cfg/module/ne2k	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
+++ uspace/srv/net/cfg/module/ne2k	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
@@ -0,0 +1,25 @@
+# DP8390 (NE2k) configuration
+
+NAME=ne2k
+
+NETIF=dp8390
+NIL=dp8390
+IL=ip
+
+# sysinfo_value("netif.dp8390.inr")
+IRQ=9
+IO=300
+
+# 8023_2_LSAP, 8023_2_SNAP
+ETH_MODE=DIX
+ETH_DUMMY=no
+
+IP_CONFIG=static
+IP_ADDR=10.0.2.15
+IP_ROUTING=yes
+IP_NETMASK=255.255.255.240
+IP_BROADCAST=10.0.2.255
+IP_GATEWAY=10.0.2.2
+ARP=arp
+
+MTU=1492
Index: uspace/srv/net/net/net.c
===================================================================
--- uspace/srv/net/net/net.c	(revision 80ce111b0d6102444ae43ddf0684c88aa8b1f562)
+++ uspace/srv/net/net/net.c	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
@@ -70,4 +70,8 @@
 #define NAME	"Networking"
 
+/** File read buffer size.
+ */
+#define BUFFER_SIZE	256
+
 /** Prints the module name.
  *  @see NAME
@@ -84,5 +88,11 @@
 int module_start( async_client_conn_t client_connection );
 
-//int		parse_line( measured_strings_ref configuration, char * line );
+/** \todo
+ */
+int	read_configuration_file( const char * directory, const char * filename, measured_strings_ref configuration );
+
+/** \todo
+ */
+int	parse_line( measured_strings_ref configuration, char * line );
 
 /** Reads the networking subsystem global configuration.
@@ -274,16 +284,72 @@
 }
 
-/*
+int read_configuration_file( const char * directory, const char * filename, measured_strings_ref configuration ){
+	ERROR_DECLARE;
+
+	size_t	index = 0;
+	char	line[ BUFFER_SIZE ];
+	FILE *	cfg;
+	int		read;
+	int		line_number = 0;
+
+	// construct the full filename
+	printf( "Reading file %s/%s\n", directory, filename );
+	if( snprintf( line, BUFFER_SIZE, "%s/%s", directory, filename ) > BUFFER_SIZE ){
+		return EOVERFLOW;
+	}
+	// open the file
+	cfg = fopen( line, "r" );
+	if( ! cfg ){
+		return ENOENT;
+	}
+
+	// read the configuration line by line
+	// until an error or the end of file
+	while(( ! ferror( cfg )) && ( ! feof( cfg ))){
+		read = fgetc( cfg );
+		if(( read > 0 ) && ( read != '\n' ) && ( read != '\r' )){
+			if( index >= BUFFER_SIZE ){
+				line[ BUFFER_SIZE - 1 ] = '\0';
+				printf( "line %d too long: %s\n", line_number, line );
+				// no space left in the line buffer
+				return EOVERFLOW;
+			}else{
+				// append the character
+				line[ index ] = (char) read;
+				++ index;
+			}
+		}else{
+			// on error or new line
+			line[ index ] = '\0';
+			++ line_number;
+			if( ERROR_OCCURRED( parse_line( configuration, line ))){
+				printf( "error on line %d: %s\n", line_number, line );
+				//fclose( cfg );
+				//return ERROR_CODE;
+			}
+			index = 0;
+		}
+	}
+	fclose( cfg );
+	return EOK;
+}
+
 int parse_line( measured_strings_ref configuration, char * line ){
 	ERROR_DECLARE;
 
 	measured_string_ref	setting;
-	char *			name;
-	char *			value;
+	char *				name;
+	char *				value;
 
 	// from the beginning
 	name = line;
+
+	// skip comments and blank lines
+	if(( * name == '#' ) || ( * name == '\0' )){
+		return EOK;
+	}
 	// skip spaces
 	while( isspace( * name )) ++ name;
+
 	// remember the name start
 	value = name;
@@ -294,4 +360,5 @@
 		++ value;
 	}
+
 	if( * value == '=' ){
 		// terminate the name
@@ -306,10 +373,12 @@
 		if( * value != '=' ) return EINVAL;
 	}
+
 	++ value;
 	// skip spaces
 	while( isspace( * value )) ++ value;
 	// create a bulk measured string till the end
-	setting = measured_string_create_bulk( value, -1 );
+	setting = measured_string_create_bulk( value, 0 );
 	if( ! setting ) return ENOMEM;
+
 	// add the configuration setting
 	if( ERROR_OCCURRED( measured_strings_add( configuration, name, 0, setting ))){
@@ -319,5 +388,4 @@
 	return EOK;
 }
-*/
 
 int add_configuration( measured_strings_ref configuration, const char * name, const char * value ){
@@ -341,46 +409,11 @@
 
 int read_configuration( void ){
-	ERROR_DECLARE;
-
-	// read general configuration
-	ERROR_PROPAGATE( add_configuration( & net_globals.configuration, "IPV", "4" ));
-	ERROR_PROPAGATE( add_configuration( & net_globals.configuration, "IP_ROUTING", "no" ));
-	ERROR_PROPAGATE( add_configuration( & net_globals.configuration, "MTU", "1500" ));
-	ERROR_PROPAGATE( add_configuration( & net_globals.configuration, "ICMP_ERROR_REPORTING", "yes" ));  //anything else not starting with 'y'
-	ERROR_PROPAGATE( add_configuration( & net_globals.configuration, "ICMP_ECHO_REPLYING", "yes" ));  //anything else not starting with 'y'
-	ERROR_PROPAGATE( add_configuration( & net_globals.configuration, "UDP_CHECKSUM_COMPUTING", "yes" ));  //anything else not starting with 'y'
-	ERROR_PROPAGATE( add_configuration( & net_globals.configuration, "UDP_AUTOBINDING", "yes" ));  //anything else not starting with 'y'
-	return EOK;
+	// read the general configuration file
+	return read_configuration_file( CONF_DIR, CONF_GENERAL_FILE, & net_globals.configuration );
 }
 
 int read_netif_configuration( char * name, netif_ref netif ){
-	ERROR_DECLARE;
-
-	if( str_lcmp( name, "lo", 2 ) == 0 ){
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "NAME", LO_NAME ));
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "NETIF", LO_NAME ));
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "IL", IP_NAME ));
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "IP_CONFIG", "static" ));
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "IP_ADDR", "127.0.0.1" ));
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "IP_NETMASK", "255.0.0.0" ));
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "MTU", "15535" ));
-	}else if( str_lcmp( name, "ne2k", 4 ) == 0 ){
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "NAME", "eth0" ));
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "NETIF", DP8390_NAME ));
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "ETH_MODE", "DIX" )); //8023_2_LSAP( not supported ), 8023_2_SNAP
-//		ERROR_PROPAGATE( add_configuration( & netif->configuration, "ETH_DUMMY", "yes" )); //anything else not starting with 'y'
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "IL", IP_NAME ));
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "IRQ", "9" ));
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "IO", "300" ));
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "MTU", "1492" ));
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "IP_CONFIG", "static" ));
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "IP_ADDR", "10.0.2.15" ));
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "IP_ROUTING", "yes" ));
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "IP_NETMASK", "255.255.255.240" ));
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "IP_BROADCAST", "10.0.2.255" ));
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "IP_GATEWAY", "10.0.2.2" ));
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "ARP", "arp" ));
-	}
-	return read_netif_configuration_build( name, netif );
+	// read the netif configuration file
+	return read_configuration_file( CONF_DIR, name, & netif->configuration );
 }
 
@@ -451,5 +484,10 @@
 	ERROR_DECLARE;
 
+#ifdef CONFIG_NETIF_DP8390
 	char *		conf_files[] = { "lo", "ne2k" };
+#else
+	char *		conf_files[] = { "lo" };
+#endif
+
 	int			count = sizeof( conf_files ) / sizeof( char * );
 	int			index;
Index: uspace/srv/net/net/net.h
===================================================================
--- uspace/srv/net/net/net.h	(revision 80ce111b0d6102444ae43ddf0684c88aa8b1f562)
+++ uspace/srv/net/net/net.h	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
@@ -128,4 +128,12 @@
 /*@}*/
 
+/** Configuration directory.
+ */
+#define CONF_DIR			"/cfg/net"
+
+/** General configuration file.
+ */
+#define CONF_GENERAL_FILE	"general"
+
 /** Type definition of the network interface specific data.
  *  @see netif
@@ -235,12 +243,4 @@
 int	module_message( ipc_callid_t callid, ipc_call_t * call, ipc_call_t * answer, int * answer_count );
 
-/** Reads the network interface specific configuration for the chosen subsystem build type.
- *  @param[in] name The network interface name.
- *  @param[in,out] netif The network interface structure.
- *  @returns EOK on success.
- *  @returns Other error codes as defined for the add_configuration() function.
- */
-int	read_netif_configuration_build( char * name, netif_ref netif );
-
 #endif
 
Index: uspace/srv/net/net/net_bundle.c
===================================================================
--- uspace/srv/net/net/net_bundle.c	(revision 80ce111b0d6102444ae43ddf0684c88aa8b1f562)
+++ uspace/srv/net/net/net_bundle.c	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
@@ -117,15 +117,4 @@
 }
 
-int read_netif_configuration_build( char * name, netif_ref netif ){
-	ERROR_DECLARE;
-
-	if( str_lcmp( name, "lo", 2 ) == 0 ){
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "NIL", LO_NAME ));
-	}else if( str_lcmp( name, "ne2k", 4 ) == 0 ){
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "NIL", DP8390_NAME ));
-	}
-	return EOK;
-}
-
 /** @}
  */
Index: uspace/srv/net/net/net_standalone.c
===================================================================
--- uspace/srv/net/net/net_standalone.c	(revision 80ce111b0d6102444ae43ddf0684c88aa8b1f562)
+++ uspace/srv/net/net/net_standalone.c	(revision 01a9ef5e3c7e7500b43e2342983a10292d72b5aa)
@@ -75,15 +75,4 @@
 }
 
-int read_netif_configuration_build( char * name, netif_ref netif ){
-	ERROR_DECLARE;
-
-	if( str_lcmp( name, "lo", 2 ) == 0 ){
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "NIL", NILDUMMY_NAME ));
-	}else if( str_lcmp( name, "ne2k", 4 ) == 0 ){
-		ERROR_PROPAGATE( add_configuration( & netif->configuration, "NIL", ETHERNET_NAME ));
-	}
-	return EOK;
-}
-
 /** @}
  */
