diff --git a/Makefile.am b/Makefile.am
index 70444b1601bea8fb2b88382e79d867e1c302a235..591614fe5392c193852b039afd7dc68f3e53093e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -57,10 +57,13 @@ DIRS = \
 	test/data \
 	tools
 
-BUILDTIME_DIRS = \
+BUILDTIME_DIR_AUTOCREATE = \
 	scripts \
 	doc/api \
-	doc/coverage \
+	doc/coverage
+
+BUILDTIME_DIRS = \
+	$(BUILDTIME_DIR_AUTOCREATE) \
 	doc/html
 
 DIRCHECK_EXCLUDE = \
@@ -68,7 +71,7 @@ DIRCHECK_EXCLUDE = \
 	ganeti-[0-9]*.[0-9]*.[0-9]* \
 	doc/html/_*
 
-all_dirfiles = $(addsuffix /.dir,$(DIRS) $(BUILDTIME_DIRS))
+all_dirfiles = $(addsuffix /.dir,$(DIRS) $(BUILDTIME_DIR_AUTOCREATE))
 
 MAINTAINERCLEANFILES = \
 	$(docpng) \
@@ -227,9 +230,10 @@ docrst = \
 $(RUN_IN_TEMPDIR): | $(all_dirfiles)
 
 doc/html/index.html: $(docrst) $(docpng) doc/conf.py configure.ac \
-	$(RUN_IN_TEMPDIR) | doc/html/.dir
+	$(RUN_IN_TEMPDIR)
 	@test -n "$(SPHINX)" || \
 	    { echo 'sphinx-build' not found during configure; exit 1; }
+	@mkdir_p@ $(dir $@)
 	PYTHONPATH=. $(RUN_IN_TEMPDIR) $(SPHINX) -q -W -b html \
 	    -d . \
 	    -D version="$(VERSION_MAJOR).$(VERSION_MINOR)" \
@@ -733,7 +737,6 @@ dist-hook:
 	$(MAKE) regen-vcs-version && \
 	rm -f $(top_distdir)/vcs-version && \
 	cp -p $(srcdir)/vcs-version $(top_distdir)
-	rm $(top_distdir)/doc/html/.dir
 
 # a distcheck hook rule for catching revision control directories
 distcheck-hook:
@@ -749,6 +752,15 @@ distcheck-hook:
 		echo "Found backup files in final archive." 1>&2; \
 		exit 1; \
 	fi
+# Empty files or directories should not be distributed. They can cause
+# unnecessary warnings for packagers. Directories used by automake during
+# distcheck must be excluded.
+	if find $(top_distdir) -empty -and -not \( \
+			-path $(top_distdir)/_build -or \
+			-path $(top_distdir)/_inst \) | grep .; then \
+		echo "Found empty files or directories in final archive." 1>&2; \
+		exit 1; \
+	fi
 	if test -n "$(BUILD_RELEASE)" && \
 	   grep -n -H -E '^\*.*unreleased' $(top_distdir)/NEWS; then \
 		echo "Found unreleased version in NEWS." >&2; \
diff --git a/man/ganeti-os-interface.sgml b/man/ganeti-os-interface.sgml
index 2c6ec60446867086bc771221980eccf2b34aabec..49fdc67d2d7517d34eb66c07cef51bf7076e42d7 100644
--- a/man/ganeti-os-interface.sgml
+++ b/man/ganeti-os-interface.sgml
@@ -185,13 +185,27 @@
             NIC of the instance.</simpara>
           </listitem>
         </varlistentry>
+        <varlistentry>
+          <term>NIC_%N_MODE</term>
+          <listitem>
+            <simpara>The NIC mode, either routed or bridged</simpara>
+          </listitem>
+        </varlistentry>
         <varlistentry>
           <term>NIC_%N_BRIDGE</term>
           <listitem>
-            <simpara>The bridge to which this NIC will be attached
-            to.</simpara>
+            <simpara>The bridge to which this NIC will be attached. This
+            variable is defined only when the NIC is in bridged mode.</simpara>
           </listitem>
         </varlistentry>
+        <varlistentry>
+          <term>NIC_%N_LINK</term>
+          <listitem>
+           <simpara>If the NIC is in bridged mode, this is the same as
+            NIC_%N_BRIDGE. If it is in routed mode, the routing table
+            which will be used by the hypervisor to insert the appropriate
+            routes.</simpara> </listitem>
+        </varlistentry>
         <varlistentry>
           <term>NIC_%N_FRONTEND_TYPE</term>
           <listitem>