diff -Nru ifupdown-0.7.5+nmu1/debian/changelog ifupdown-0.7.5+nmu2/debian/changelog
--- ifupdown-0.7.5+nmu1/debian/changelog	2013-03-03 05:44:31.000000000 -0500
+++ ifupdown-0.7.5+nmu2/debian/changelog	2013-03-23 15:20:53.000000000 -0400
@@ -1,3 +1,10 @@
+ifupdown (0.7.5+nmu2) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Backport bridge interface fix from experimental (closes: #696642).
+
+ -- Michael Gilbert <mgilbert@debian.org>  Sat, 23 Mar 2013 19:18:22 +0000
+
 ifupdown (0.7.5+nmu1) unstable; urgency=medium
 
   * Non-maintainer upload.
diff -Nru ifupdown-0.7.5+nmu1/debian/testbuild-linux ifupdown-0.7.5+nmu2/debian/testbuild-linux
--- ifupdown-0.7.5+nmu1/debian/testbuild-linux	2012-10-16 04:38:04.000000000 -0400
+++ ifupdown-0.7.5+nmu2/debian/testbuild-linux	2013-03-23 15:18:59.000000000 -0400
@@ -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.
diff -Nru ifupdown-0.7.5+nmu1/ifupdown.nw ifupdown-0.7.5+nmu2/ifupdown.nw
--- ifupdown-0.7.5+nmu1/ifupdown.nw	2012-10-16 04:38:04.000000000 -0400
+++ ifupdown-0.7.5+nmu2/ifupdown.nw	2013-03-23 15:18:59.000000000 -0400
@@ -3212,11 +3212,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>>=
@@ -3239,6 +3242,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 +3907,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 +4099,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]),
@@ -5900,9 +5936,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+nmu1/interfaces.5.pre ifupdown-0.7.5+nmu2/interfaces.5.pre
--- ifupdown-0.7.5+nmu1/interfaces.5.pre	2012-06-21 17:52:38.000000000 -0400
+++ ifupdown-0.7.5+nmu2/interfaces.5.pre	2013-03-23 15:18:46.000000000 -0400
@@ -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,
