Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
Please unblock package ifupdown. This release fixes some important issues with ifupdown, and also brings upstart support up to date. ifupdown (0.7.6) unstable; urgency=low [ Andrew O. Shadura ] * Don't configure bridge interfaces as tagged VLAN interfaces (Closes: #696642). * Add "tryonce" option to DHCP-enabled methods (Closes: #694541). * Update manual pages. [ Stéphane Graber ] * Patches for upstart support from Ubuntu: - Start the job on runlevel [2345]. This is a no-op during a normal boot since the network will be started *before* runlevel is emitted, but is needed to restart the network after a change from runlevel 1 (LP: #752481). - Don't bring 'lo' down (add it to --exclude). - Emit deconfiguring-networking (LP: #1061639). - Update network-interface-security job to stop when the parent job is stopped itself. This avoids leftover instances (LP: #1065684). * Set MTU of tunnel devices (LP: #1074048). * Actually set the new calculated value for duplicate entries (LP: #1086517). unblock ifupdown/0.7.6 -- System Information: Debian Release: wheezy/sid APT prefers unstable APT policy: (500, 'unstable'), (500, 'stable'), (1, 'experimental') Architecture: i386 (i686) Kernel: Linux 3.6-trunk-686-pae (SMP w/2 CPU cores) Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to en_GB.UTF-8) Shell: /bin/sh linked to /bin/dash
diff -Nru ifupdown-0.7.5/debian/changelog ifupdown-0.7.6/debian/changelog --- ifupdown-0.7.5/debian/changelog 2012-11-02 18:31:00.000000000 +0100 +++ ifupdown-0.7.6/debian/changelog 2013-01-08 01:47:04.000000000 +0100 @@ -1,3 +1,27 @@ +ifupdown (0.7.6) unstable; urgency=low + + [ Andrew O. Shadura ] + * Don't configure bridge interfaces as tagged VLAN interfaces + (Closes: #696642). + * Add "tryonce" option to DHCP-enabled methods (Closes: #694541). + * Update manual pages. + + [ Stéphane Graber ] + * Patches for upstart support from Ubuntu: + - Start the job on runlevel [2345]. This is a no-op during a normal + boot since the network will be started *before* runlevel is emitted, + but is needed to restart the network after a change from runlevel 1 + (LP: #752481). + - Don't bring 'lo' down (add it to --exclude). + - Emit deconfiguring-networking (LP: #1061639). + - Update network-interface-security job to stop when the parent job is + stopped itself. This avoids leftover instances (LP: #1065684). + * Set MTU of tunnel devices (LP: #1074048). + * Actually set the new calculated value for duplicate entries + (LP: #1086517). + + -- Andrew O. Shadura <bugzi...@tut.by> Sun, 06 Jan 2013 19:36:49 +0100 + ifupdown (0.7.5) unstable; urgency=low * Fix upstart hooks (Closes: #692110). diff -Nru ifupdown-0.7.5/debian/ifupdown.networking.upstart ifupdown-0.7.6/debian/ifupdown.networking.upstart --- ifupdown-0.7.5/debian/ifupdown.networking.upstart 2012-10-16 10:38:55.000000000 +0200 +++ ifupdown-0.7.6/debian/ifupdown.networking.upstart 2013-01-06 19:26:34.000000000 +0100 @@ -7,9 +7,10 @@ emits static-network-up emits net-device-up +emits deconfiguring-networking start on (local-filesystems - and (stopped udevtrigger or container)) + and (stopped udevtrigger or container)) or runlevel [2345] stop on unmounted-remote-filesystems pre-start script @@ -62,5 +63,8 @@ check_network_file_systems check_network_swap - ifdown -a + + # Anything that manages network interfaces *MUST* wait for this event + initctl emit deconfiguring-networking + ifdown -a --exclude=lo end script diff -Nru ifupdown-0.7.5/debian/ifupdown.network-interface-security.upstart ifupdown-0.7.6/debian/ifupdown.network-interface-security.upstart --- ifupdown-0.7.5/debian/ifupdown.network-interface-security.upstart 2012-10-16 10:38:55.000000000 +0200 +++ ifupdown-0.7.6/debian/ifupdown.network-interface-security.upstart 2013-01-06 19:36:14.000000000 +0100 @@ -12,6 +12,9 @@ start on (starting network-interface or starting network-manager or starting networking) +stop on (stopped network-interface JOB=$JOB INTERFACE=$INTERFACE + or stopped network-manager JOB=$JOB + or stopped networking JOB=$JOB) # In order to handle the lack of upstart feature LP: #568860, we need to # run multiple times, for each of the above "starting" service instances, or diff -Nru ifupdown-0.7.5/debian/testbuild-linux ifupdown-0.7.6/debian/testbuild-linux --- ifupdown-0.7.5/debian/testbuild-linux 2012-10-16 10:38:04.000000000 +0200 +++ ifupdown-0.7.6/debian/testbuild-linux 2013-01-07 01:42:19.000000000 +0100 @@ -344,7 +344,7 @@ cat >tests/testcase.7 <<EOF # RUN: -a -auto eth0 eth0.1 eth0.0201 tunnel +auto eth0 eth0.1 eth0.0201 br0.0201 br0.0202 tunnel iface eth0 inet static address 1.2.3.4 netmask 255.255.255.0 @@ -358,6 +358,9 @@ netmask 64 iface eth0.0201 inet static address 192.168.0.1/25 +iface br0.0201 inet manual + bridge_ports eth0.0201 +iface br0.0202 inet manual iface tunnel inet6 6to4 local 1.2.3.4 EOF @@ -399,6 +402,13 @@ ip link set dev eth0.0201 up run-parts --verbose /etc/network/if-up.d +Configuring interface br0.0201=br0.0201 (inet) +run-parts --verbose /etc/network/if-pre-up.d +run-parts --verbose /etc/network/if-up.d +if test -d /sys/class/net/br0 -a ! -d /sys/class/net/br0.0202 ; then ip link set up dev br0; ip link add link br0 name br0.0202 type vlan id 202; fi +Configuring interface br0.0202=br0.0202 (inet) +run-parts --verbose /etc/network/if-pre-up.d +run-parts --verbose /etc/network/if-up.d Configuring interface tunnel=tunnel (inet6) run-parts --verbose /etc/network/if-pre-up.d modprobe -q net-pf-10 > /dev/null 2>&1 || true # ignore failure. @@ -486,8 +496,114 @@ run-parts --verbose /etc/network/if-up.d EOF +cat >tests/testcase.10 <<EOF +# RUN: -a +auto eth0 eth1 eth2 eth3 + +iface eth0 inet dhcp + +iface eth0 inet6 dhcp + +iface eth1 inet dhcp + tryonce yes + +iface eth1 inet6 dhcp + tryonce yes + +iface eth2 inet dhcp + tryonce no + +iface eth2 inet6 dhcp + tryonce no + +iface eth3 inet6 auto + dhcp yes + tryonce yes + +iface eth3 inet6 auto + dhcp yes + tryonce no + +iface eth3 inet6 auto + dhcp no + tryonce yes + +EOF +cat >tests/up.10 <<EOF +====stdout==== +====stderr==== +run-parts --verbose /etc/network/if-pre-up.d +Configuring interface eth0=eth0 (inet) +run-parts --verbose /etc/network/if-pre-up.d + +dhclient -1 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0 +run-parts --verbose /etc/network/if-up.d +Configuring interface eth0=eth0 (inet6) +run-parts --verbose /etc/network/if-pre-up.d +modprobe -q net-pf-10 > /dev/null 2>&1 || true # ignore failure. +sysctl -q -e -w net.ipv6.conf.eth0.accept_ra=0 + +ip link set dev eth0 up +dhclient -6 -1 -pf /run/dhclient6.eth0.pid -lf /var/lib/dhcp/dhclient6.eth0.leases eth0 +run-parts --verbose /etc/network/if-up.d +Configuring interface eth1=eth1 (inet) +run-parts --verbose /etc/network/if-pre-up.d + +dhclient -1 -v -pf /run/dhclient.eth1.pid -lf /var/lib/dhcp/dhclient.eth1.leases eth1 +run-parts --verbose /etc/network/if-up.d +Configuring interface eth1=eth1 (inet6) +run-parts --verbose /etc/network/if-pre-up.d +modprobe -q net-pf-10 > /dev/null 2>&1 || true # ignore failure. +sysctl -q -e -w net.ipv6.conf.eth1.accept_ra=0 + +ip link set dev eth1 up +dhclient -6 -1 -pf /run/dhclient6.eth1.pid -lf /var/lib/dhcp/dhclient6.eth1.leases eth1 +run-parts --verbose /etc/network/if-up.d +Configuring interface eth2=eth2 (inet) +run-parts --verbose /etc/network/if-pre-up.d + +dhclient -v -pf /run/dhclient.eth2.pid -lf /var/lib/dhcp/dhclient.eth2.leases eth2 +run-parts --verbose /etc/network/if-up.d +Configuring interface eth2=eth2 (inet6) +run-parts --verbose /etc/network/if-pre-up.d +modprobe -q net-pf-10 > /dev/null 2>&1 || true # ignore failure. +sysctl -q -e -w net.ipv6.conf.eth2.accept_ra=0 + +ip link set dev eth2 up +dhclient -6 -pf /run/dhclient6.eth2.pid -lf /var/lib/dhcp/dhclient6.eth2.leases eth2 +run-parts --verbose /etc/network/if-up.d +Configuring interface eth3=eth3 (inet6) +run-parts --verbose /etc/network/if-pre-up.d +modprobe -q net-pf-10 > /dev/null 2>&1 || true # ignore failure. + +sysctl -q -e -w net.ipv6.conf.eth3.accept_ra=1 +sysctl -q -e -w net.ipv6.conf.eth3.autoconf=1 +ip link set dev eth3 up +dhclient -6 -1 -S -pf /run/dhclient6.eth3.pid -lf /var/lib/dhcp/dhclient6.eth3.leases eth3 +run-parts --verbose /etc/network/if-up.d +Configuring interface eth3=eth3 (inet6) +run-parts --verbose /etc/network/if-pre-up.d +modprobe -q net-pf-10 > /dev/null 2>&1 || true # ignore failure. + +sysctl -q -e -w net.ipv6.conf.eth3.accept_ra=1 +sysctl -q -e -w net.ipv6.conf.eth3.autoconf=1 +ip link set dev eth3 up +dhclient -6 -S -pf /run/dhclient6.eth3.pid -lf /var/lib/dhcp/dhclient6.eth3.leases eth3 +run-parts --verbose /etc/network/if-up.d +Configuring interface eth3=eth3 (inet6) +run-parts --verbose /etc/network/if-pre-up.d +modprobe -q net-pf-10 > /dev/null 2>&1 || true # ignore failure. + +sysctl -q -e -w net.ipv6.conf.eth3.accept_ra=1 +sysctl -q -e -w net.ipv6.conf.eth3.autoconf=1 +ip link set dev eth3 up +run-parts --verbose /etc/network/if-up.d +run-parts --verbose /etc/network/if-up.d +EOF + + result=true -for test in 1 2 3 4 5 6 7 8 9; do +for test in 1 2 3 4 5 6 7 8 9 10; do args="$(cat tests/testcase.$test | sed -n 's/^# RUN: //p')" ./ifup -nv --force -i tests/testcase.$test $args \ >tests/up-res-out.$test 2>tests/up-res-err.$test || diff -Nru ifupdown-0.7.5/ifupdown.nw ifupdown-0.7.6/ifupdown.nw --- ifupdown-0.7.5/ifupdown.nw 2012-10-16 10:38:04.000000000 +0200 +++ ifupdown-0.7.6/ifupdown.nw 2013-01-07 01:42:19.000000000 +0100 @@ -161,7 +161,7 @@ $(patsubst %.defn,%.o,$(DEFNFILES)) arch$(ARCH).o meta.o link.o MAN := $(patsubst %.defn,%.man,$(DEFNFILES)) -DEFNFILES += meta.defn +DEFNFILES += meta.defn link.defn default : executables all : executables docs @@ -2144,6 +2144,7 @@ currif->option[i].value[l] = '\n'; strcpy(&(currif->option[i].value[l + 1]), rest); + strcpy(rest, currif->option[i].value); } } } @@ -3212,11 +3213,14 @@ varvalue = get_var(command, namelen, ifd); @ -We also define an exported [[var_true()]] function to allow methods to -have lines of code that are conditional on the value of a variable. +We also define an exported [[var_true()]], [[var_set()]] and [[var_set_anywhere()]] functions +to allow methods to have lines of code that are conditional on the value +of a variable. <<exported symbols>>= int var_true(char *id, interface_defn *ifd); +int var_set(char *id, interface_defn *ifd); +int var_set_anywhere(char *id, interface_defn *ifd); @ <<execute functions>>= @@ -3225,7 +3229,7 @@ varvalue = get_var(id, strlen(id), ifd); if (varvalue) { - if (strcmp(varvalue, "1") == 0 || + if (atoi(varvalue) || strcasecmp(varvalue, "on") == 0 || strcasecmp(varvalue, "true") == 0 || strcasecmp(varvalue, "yes") == 0) @@ -3239,6 +3243,34 @@ } else return 0; } + +int var_set(char *id, interface_defn *ifd) { + char *varvalue; + + varvalue = get_var(id, strlen(id), ifd); + if (varvalue) { + free(varvalue); + return 1; + } else { + return 0; + } +} + +int var_set_anywhere(char *id, interface_defn *ifd) { + char *varvalue; + interface_defn *currif; + + for (currif = defn->ifaces; currif; currif = currif->next) { + if (strcmp(ifd->logical_iface, currif->logical_iface) == 0) { + varvalue = get_var(id, strlen(id), currif); + if (varvalue) { + free(varvalue); + return 1; + } + } + } + return 0; +} @ \subsection{Mapping Scripts} @@ -3876,7 +3908,11 @@ Since this has all been covered in a previous section, this is pretty trivial. -<<variables local to main>>= +<<exported symbols>>= +extern interfaces_file *defn; +@ + +<<main global variables>>= interfaces_file *defn; @ @@ -4064,6 +4100,7 @@ if (!okay && <<we're bringing interfaces up>>) { interface_defn link = { .real_iface = iface, + .logical_iface = liface, .max_options = 0, .address_family = &addr_link, .method = &(addr_link.method[0]), @@ -4649,6 +4686,7 @@ void set_preferred_lft(interface_defn *ifd, char **pparam, int argc, char ** argv); void get_token(interface_defn *ifd, char **pparam, int argc, char ** argv); void to_decimal(interface_defn *ifd, char **pparam, int argc, char ** argv); +void map_value(interface_defn *ifd, char **pparam, int argc, char ** argv); @ <<common functions implementations>>= @@ -4873,6 +4911,28 @@ snprintf(*pparam, strlen(*pparam) + 1, "%ld", value); } +void map_value(interface_defn *ifd UNUSED, char **pparam, int argc, char ** argv) +{ + if (argc < 2) return; + + int value; + if (argc == 2) { + value = (atoi(*pparam) || + strcasecmp(*pparam, "on") == 0 || + strcasecmp(*pparam, "true") == 0 || + strcasecmp(*pparam, "yes") == 0); + } + if ((value < argc) && (argv[value] != NULL)) { + *pparam = realloc(*pparam, strlen(argv[value]) + 1); + if (*pparam == NULL) return; + strcpy(*pparam, argv[value]); + } else { + *pparam = realloc(*pparam, 1); + if (*pparam == NULL) return; + *pparam[0] = 0; + } +} + @ \subsection{Linux-specific functions} @@ -5081,16 +5141,18 @@ vendor vendor -- Vendor class identifier (dhcpcd) client client -- Client identifier (dhcpcd, udhcpc) hwaddress address -- Hardware address. + tryonce bool -- Try to acquire lease just once (dhclient). [yes] conversion hwaddress cleanup_hwaddress + tryonce (map_value "" -1) up [[ip link set dev %iface% address %hwaddress%]] - dhclient -1 -v -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp/dhclient.%iface%.leases %iface% \ + dhclient [[%tryonce%]] -v -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp/dhclient.%iface%.leases %iface% \ [[-e IF_METRIC=%metric%]] \ if (execable("/sbin/dhclient")) - dhclient3 -1 -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp3/dhclient.%iface%.leases %iface% \ + dhclient3 [[%tryonce%]] -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp3/dhclient.%iface%.leases %iface% \ [[-e IF_METRIC=%metric%]] \ elsif (execable("/sbin/dhclient3")) pump -i %iface% [[-h %hostname%]] [[-l %leasehours%]] \ @@ -5160,7 +5222,7 @@ up ip tunnel add %iface% mode %mode% remote %endpoint% [[local %local%]] \ [[ttl %ttl%]] - ip link set %iface% up + ip link set %iface% up [[mtu %mtu%]] ip addr add %address%/%netmask% dev %iface% [[peer %dstaddr%]] [[ ip route add default via %gateway% ]] down @@ -5239,13 +5301,18 @@ options privext int -- Privacy extensions (RFC3041) (0=off, 1=assign, 2=prefer) dhcp int -- Use stateless DHCPv6 (0=off, 1=on) + tryonce bool -- For DHCPv6, try to acquire lease just once. [yes] + + conversion + tryonce (map_value "" -1) + up modprobe -q net-pf-10 > /dev/null 2>&1 || true # ignore failure. [[sysctl -q -e -w net.ipv6.conf.%iface/.//%.use_tempaddr=%privext%]] sysctl -q -e -w net.ipv6.conf.%iface/.//%.accept_ra=1 sysctl -q -e -w net.ipv6.conf.%iface/.//%.autoconf=1 ip link set dev %iface% up - dhclient -6 -1 -S -pf /run/dhclient6.%iface%.pid -lf /var/lib/dhcp/dhclient6.%iface%.leases %iface% \ + dhclient -6 [[%tryonce%]] -S -pf /run/dhclient6.%iface%.pid -lf /var/lib/dhcp/dhclient6.%iface%.leases %iface% \ if (var_true("dhcp", ifd) && execable("/sbin/dhclient")) down ip -6 addr flush dev %iface% scope global @@ -5322,16 +5389,18 @@ hwaddress address -- Hardware address accept_ra int -- Accept router advertisements (0=off, 1=on) [0] autoconf int -- Perform stateless autoconfiguration (0=off, 1=on) + tryonce bool -- Try to acquire lease just once. [yes] conversion hwaddress cleanup_hwaddress + tryonce (map_value "" -1) up modprobe -q net-pf-10 > /dev/null 2>&1 || true # ignore failure. [[sysctl -q -e -w net.ipv6.conf.%iface/.//%.accept_ra=%accept_ra%]] [[sysctl -q -e -w net.ipv6.conf.%iface/.//%.autoconf=%autoconf%]] ip link set dev %iface% [[address %hwaddress%]] up - dhclient -6 -1 -pf /run/dhclient6.%iface%.pid -lf /var/lib/dhcp/dhclient6.%iface%.leases %iface% \ + dhclient -6 [[%tryonce%]] -pf /run/dhclient6.%iface%.pid -lf /var/lib/dhcp/dhclient6.%iface%.leases %iface% \ if (execable("/sbin/dhclient")) down @@ -5568,16 +5637,18 @@ vendor vendor -- Vendor class identifier (dhcpcd) client client -- Client identifier (dhcpcd, udhcpc) hwaddress address -- Hardware Address. + tryonce bool -- Try to acquire lease just once (dhclient). [yes] conversion hwaddress cleanup_hwaddress + tryonce (map_value "" -1) up [[ifconfig %iface% link %hwaddress%]] - dhclient -1 -v -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp/dhclient.%iface%.leases %iface% \ + dhclient [[%tryonce%]] -v -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp/dhclient.%iface%.leases %iface% \ [[-e IF_METRIC=%metric%]] \ if (execable("/sbin/dhclient")) - dhclient3 -1 -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp3/dhclient.%iface%.leases %iface% \ + dhclient3 [[%tryonce%]] -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp3/dhclient.%iface%.leases %iface% \ [[-e IF_METRIC=%metric%]] \ elsif (execable("/sbin/dhclient3")) udhcpc -n -p /run/udhcpc.%iface%.pid -i %iface% [[-H %hostname%]] \ @@ -5657,13 +5728,15 @@ options hwaddress address -- Hardware address + tryonce bool -- Try to acquire lease just once. [yes] conversion hwaddress cleanup_hwaddress + tryonce (map_value "" -1) up ifconfig %iface% [[link %hwaddress%]] up - dhclient -6 -1 -pf /run/dhclient6.%iface%.pid -lf /var/lib/dhcp/dhclient6.%iface%.leases %iface% \ + dhclient -6 [[%tryonce%]] -pf /run/dhclient6.%iface%.pid -lf /var/lib/dhcp/dhclient6.%iface%.leases %iface% \ if (execable("/sbin/dhclient")) down @@ -5758,13 +5831,15 @@ vendor vendor -- Vendor class identifier (dhcpcd) client client -- Client identifier (dhcpcd, udhcpc) hwaddress address -- Hardware Address (Not yet supported) + tryonce bool -- Try to acquire lease just once (dhclient). [yes] conversion hwaddress cleanup_hwaddress + tryonce (map_value "" -1) up [[Warning: Option hwaddress: %hwaddress% not yet supported]] - dhclient -1 -v -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp/dhclient.%iface%.leases %iface% \ + dhclient [[%tryonce%]] -v -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp/dhclient.%iface%.leases %iface% \ if (execable("/sbin/dhclient")) udhcpc -n -p /run/udhcpc.%iface%.pid -i %iface% [[-H %hostname%]] \ [[-c %client%]] \ @@ -5839,14 +5914,16 @@ options hwaddress address -- Hardware address (Not yet supported) + tryonce bool -- Try to acquire lease just once. [yes] conversion hwaddress cleanup_hwaddress + tryonce (map_value "" -1) up [[Warning: Option hwaddress: %hwaddress% not yet supported]] inetutils-ifconfig --interface %iface% --up - dhclient -6 -1 -pf /run/dhclient6.%iface%.pid -lf /var/lib/dhcp/dhclient6.%iface%.leases %iface% \ + dhclient -6 [[%tryonce%]] -pf /run/dhclient6.%iface%.pid -lf /var/lib/dhcp/dhclient6.%iface%.leases %iface% \ if (execable("/sbin/dhclient")) down @@ -5900,9 +5977,9 @@ then \ ip link set up dev %link%; \ ip link add link %link% name %iface0% type vlan id %vlan_id%; \ - fi if (iface_has(".")) + fi if (iface_has(".") && (!var_set_anywhere("bridge_ports", ifd))) down - ip link del %iface% if (iface_has(".")) + ip link del %iface% if (iface_has(".") && (!var_set_anywhere("bridge_ports", ifd))) architecture kfreebsd diff -Nru ifupdown-0.7.5/interfaces.5.pre ifupdown-0.7.6/interfaces.5.pre --- ifupdown-0.7.5/interfaces.5.pre 2012-06-21 23:52:38.000000000 +0200 +++ ifupdown-0.7.6/interfaces.5.pre 2013-01-06 19:26:34.000000000 +0100 @@ -137,6 +137,24 @@ .P Options are usually indented for clarity (as in the example above) but are not required to be. +.P +.SH VLAN AND BRIDGE INTERFACES +To ease the configuration of VLAN interfaces, interfaces having +.B . +(full stop character) in the name are configured as 802.1q tagged +virtual LAN interface. For example, interface +.B eth0.1 +is a virtual interface having +.B eth0 +as physical link, with VLAN ID 1. +.P +For compatibility with +.B bridge-utils +package, if +.B bridge_ports +option is specified, VLAN interface configuration is +.B not +performed. .SH IFACE OPTIONS The following "command" options are available for every family and method. Each of these options can be given multiple times in a single stanza, @@ -278,7 +296,8 @@ .BR ifup (8), .BR ip (8), .BR ifconfig (8), -.BR run\-parts (8). +.BR run\-parts (8), +.BR resolvconf (8). .P For advice on configuring this package read the .B Network Configuration