Bug#698381: unblock: ifupdown/0.7.6
Package: release.debian.org
Severity: normal
User: release.debian.org@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 <bugzilla@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
Reply to: