summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2016-04-12 17:33:05 +0200
committerMichael Biebl <biebl@debian.org>2016-04-12 17:33:05 +0200
commit288a08a3672a89a9bfdb8354b6863cc039759fc2 (patch)
tree351ac159de25507ba7eeab003153dabb1c6652a2
parent2bfb3eb7d0323e69affca154395f51d8b577414d (diff)
Imported Upstream version 1.1.94 upstream/1.1.94
-rwxr-xr-xconfigure26
-rw-r--r--configure.ac2
-rw-r--r--docs/api/html/NetworkManager.conf.html48
-rw-r--r--docs/api/html/NetworkManager.devhelp226
-rw-r--r--docs/api/html/NetworkManager.html28
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.AccessPoint.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.AgentManager.html4
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.Connection.Active.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.DHCP4Config.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.DHCP6Config.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Adsl.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bond.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bridge.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Generic.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Modem.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Team.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Tun.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Veth.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Vlan.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.WiMax.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Wired.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Wireless.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.html10
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.IP4Config.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.IP6Config.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.PPP.html4
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.SecretAgent.html4
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.Settings.Connection.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.Settings.html8
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.VPN.Connection.html14
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html14
-rw-r--r--docs/api/html/gdbus-org.freedesktop.NetworkManager.html10
-rw-r--r--docs/api/html/index.html74
-rw-r--r--docs/api/html/index.sgml104
-rw-r--r--docs/api/html/ix01.html10
-rw-r--r--docs/api/html/license.html6
-rw-r--r--docs/api/html/manpages.html24
-rw-r--r--docs/api/html/nm-online.html10
-rw-r--r--docs/api/html/nm-settings-ifcfg-rh.html60
-rw-r--r--docs/api/html/nm-settings-keyfile.html22
-rw-r--r--docs/api/html/nm-settings.html96
-rw-r--r--docs/api/html/nmcli-examples.html119
-rw-r--r--docs/api/html/nmcli.html8
-rw-r--r--docs/api/html/nmtui.html6
-rw-r--r--docs/api/html/ref-settings.html70
-rw-r--r--docs/api/html/secrets-flags.html8
-rw-r--r--docs/api/html/spec.html10
-rw-r--r--docs/api/network-manager-docs.xml32
-rw-r--r--docs/api/version.xml2
-rw-r--r--docs/libnm-glib/html/NMRemoteSettings.html14
-rw-r--r--docs/libnm-glib/html/index.html2
-rw-r--r--docs/libnm-glib/version.xml2
-rw-r--r--docs/libnm-util/html/index.html2
-rw-r--r--docs/libnm-util/version.xml2
-rw-r--r--docs/libnm/html/index.html2
-rw-r--r--docs/libnm/version.xml2
-rw-r--r--libnm-core/nm-setting-ip-config.c37
-rw-r--r--man/Makefile.am10
-rw-r--r--man/Makefile.in20
-rw-r--r--man/NetworkManager.86
-rw-r--r--man/NetworkManager.conf.58
-rw-r--r--man/NetworkManager.conf.xml31
-rw-r--r--man/NetworkManager.conf.xml.in1020
-rw-r--r--man/NetworkManager.xml19
-rw-r--r--man/common.ent.in4
-rw-r--r--man/nm-online.16
-rw-r--r--man/nm-online.xml30
-rw-r--r--man/nm-settings-ifcfg-rh.56
-rw-r--r--man/nm-settings-ifcfg-rh.xml2
-rw-r--r--man/nm-settings-keyfile.56
-rw-r--r--man/nm-settings-keyfile.xml2
-rw-r--r--man/nm-settings.56
-rw-r--r--man/nm-settings.xml2
-rw-r--r--man/nmcli-examples.762
-rw-r--r--man/nmcli-examples.xml92
-rw-r--r--man/nmcli.16
-rw-r--r--man/nmcli.xml30
-rw-r--r--man/nmtui.16
-rw-r--r--man/nmtui.xml30
-rw-r--r--po/pt_BR.po286
-rw-r--r--shared/nm-macros-internal.h4
-rw-r--r--shared/nm-test-utils.h75
-rw-r--r--shared/nm-version-macros.h2
-rw-r--r--src/devices/nm-device.c1
-rw-r--r--src/devices/tests/test-arping.c6
-rw-r--r--src/devices/tests/test-lldp.c4
-rw-r--r--src/devices/wwan/nm-modem-broadband.c6
-rw-r--r--src/dhcp-manager/nm-dhcp-systemd.c3
-rw-r--r--src/dhcp-manager/nm-dhcp-utils.c5
-rw-r--r--src/dhcp-manager/tests/test-dhcp-utils.c2
-rw-r--r--src/dns-manager/nm-dns-dnsmasq.c10
-rw-r--r--src/dnsmasq-manager/nm-dnsmasq-utils.c2
-rw-r--r--src/dnsmasq-manager/tests/test-dnsmasq-utils.c24
-rw-r--r--src/nm-core-utils.c27
-rw-r--r--src/nm-core-utils.h13
-rw-r--r--src/nm-iface-helper.c3
-rw-r--r--src/nm-ip4-config.c14
-rw-r--r--src/nm-ip4-config.h2
-rw-r--r--src/nm-ip6-config.c44
-rw-r--r--src/nm-ip6-config.h2
-rw-r--r--src/nm-route-manager.c2
-rw-r--r--src/platform/nm-fake-platform.c37
-rw-r--r--src/platform/nm-linux-platform.c468
-rw-r--r--src/platform/nm-linux-platform.h2
-rw-r--r--src/platform/nm-platform-utils.c45
-rw-r--r--src/platform/nm-platform-utils.h3
-rw-r--r--src/platform/nm-platform.c52
-rw-r--r--src/platform/nm-platform.h56
-rw-r--r--src/platform/nmp-object.c222
-rw-r--r--src/platform/nmp-object.h50
-rw-r--r--src/platform/tests/Makefile.am16
-rw-r--r--src/platform/tests/Makefile.in216
-rw-r--r--src/platform/tests/test-address.c46
-rw-r--r--src/platform/tests/test-cleanup.c4
-rw-r--r--src/platform/tests/test-common.c570
-rw-r--r--src/platform/tests/test-common.h105
-rw-r--r--src/platform/tests/test-general.c4
-rw-r--r--src/platform/tests/test-link.c66
-rw-r--r--src/platform/tests/test-route.c46
-rw-r--r--src/ppp-manager/nm-ppp-manager.c14
-rw-r--r--src/settings/plugins/ifcfg-rh/reader.c52
-rw-r--r--src/tests/test-general.c117
-rw-r--r--src/tests/test-ip4-config.c88
-rw-r--r--src/tests/test-route-manager.c4
-rw-r--r--src/vpn-manager/nm-vpn-connection.c20
131 files changed, 2521 insertions, 2845 deletions
diff --git a/configure b/configure
index 8ebbd40f..2788d1f1 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for NetworkManager 1.1.93.
+# Generated by GNU Autoconf 2.69 for NetworkManager 1.1.94.
 #
 # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager>.
 #
@@ -591,8 +591,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='NetworkManager'
 PACKAGE_TARNAME='NetworkManager'
-PACKAGE_VERSION='1.1.93'
-PACKAGE_STRING='NetworkManager 1.1.93'
+PACKAGE_VERSION='1.1.94'
+PACKAGE_STRING='NetworkManager 1.1.94'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager'
 PACKAGE_URL=''
 
@@ -1685,7 +1685,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures NetworkManager 1.1.93 to adapt to many kinds of systems.
+\`configure' configures NetworkManager 1.1.94 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1755,7 +1755,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of NetworkManager 1.1.93:";;
+     short | recursive ) echo "Configuration of NetworkManager 1.1.94:";;
    esac
   cat <<\_ACEOF
 
@@ -2062,7 +2062,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-NetworkManager configure 1.1.93
+NetworkManager configure 1.1.94
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2789,7 +2789,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by NetworkManager $as_me 1.1.93, which was
+It was created by NetworkManager $as_me 1.1.94, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3659,7 +3659,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='NetworkManager'
- VERSION='1.1.93'
+ VERSION='1.1.94'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -17540,9 +17540,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 NM_MAJOR_VERSION=1
 NM_MINOR_VERSION=1
-NM_MICRO_VERSION=93
-NM_VERSION=1.1.93
-NM_GIT_SHA=aab24b4e10e6a9ad0b51d3e573b5da7ddafbf50b
+NM_MICRO_VERSION=94
+NM_VERSION=1.1.94
+NM_GIT_SHA=304f676e6e355ac581eca20f4d987c627ec2458b
 
 
 
@@ -27298,7 +27298,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by NetworkManager $as_me 1.1.93, which was
+This file was extended by NetworkManager $as_me 1.1.94, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -27364,7 +27364,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-NetworkManager config.status 1.1.93
+NetworkManager config.status 1.1.94
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 7ec52e36..3ef50261 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,7 +3,7 @@ AC_PREREQ([2.63])
 dnl The NM version number
 m4_define([nm_major_version], [1])
 m4_define([nm_minor_version], [1])
-m4_define([nm_micro_version], [93])
+m4_define([nm_micro_version], [94])
 m4_define([nm_version],
           [nm_major_version.nm_minor_version.nm_micro_version])
 m4_define([nm_git_sha], [m4_esyscmd([ ( [ -d ./.git/ ] && [ "$(readlink -f ./.git/)" = "$(readlink -f "$(git rev-parse --git-dir 2>/dev/null)" 2>/dev/null)" ] && git rev-parse --verify -q HEAD 2>/dev/null ) || true ])])
diff --git a/docs/api/html/NetworkManager.conf.html b/docs/api/html/NetworkManager.conf.html
index 6823dddb..049fdd41 100644
--- a/docs/api/html/NetworkManager.conf.html
+++ b/docs/api/html/NetworkManager.conf.html
@@ -2,12 +2,12 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>NetworkManager.conf: NetworkManager D-Bus API Reference Manual</title>
+<title>NetworkManager.conf: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
-<link rel="up" href="manpages.html" title="UNIX Manual Pages">
-<link rel="prev" href="NetworkManager.html" title="NetworkManager">
-<link rel="next" href="nmcli-examples.html" title="nmcli-examples">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
+<link rel="up" href="manpages.html" title="Manual Pages">
+<link rel="prev" href="nm-online.html" title="nm-online">
+<link rel="next" href="nm-settings.html" title="nm-settings">
 <meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -16,8 +16,8 @@
 <td width="100%" align="left" class="shortcuts"></td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="manpages.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="NetworkManager.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="nmcli-examples.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="nm-online.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="nm-settings.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="NetworkManager.conf"></a><div class="titlepage"></div>
@@ -37,7 +37,7 @@
     </p>
 </div>
 <div class="refsect1">
-<a name="id-1.4.6.5"></a><h2>Description</h2>
+<a name="id-1.2.5.5"></a><h2>Description</h2>
 <p><code class="literal">NetworkManager.conf</code> is the configuration file for NetworkManager. It is used
     to set up various aspects of NetworkManager's behavior. The
     location of the main file and configuration directories may be changed
@@ -66,7 +66,7 @@
     </p>
 </div>
 <div class="refsect1">
-<a name="id-1.4.6.6"></a><h2>File Format</h2>
+<a name="id-1.2.5.6"></a><h2>File Format</h2>
 <p>
       The configuration file format is so-called key file (sort of
       ini-style format).  It consists of sections (groups) of
@@ -103,7 +103,7 @@ plugins-=remove-me
     </p>
 </div>
 <div class="refsect1">
-<a name="id-1.4.6.7"></a><h2>
+<a name="id-1.2.5.7"></a><h2>
 <code class="literal">main</code> section</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
@@ -340,7 +340,7 @@ no-auto-default=*
 </table></div>
 </div>
 <div class="refsect1">
-<a name="id-1.4.6.8"></a><h2>
+<a name="id-1.2.5.8"></a><h2>
 <code class="literal">keyfile</code> section</h2>
 <p>This section contains keyfile-plugin-specific options, and
     is normally only used when you are not using any other
@@ -363,7 +363,7 @@ no-auto-default=*
 <tr>
 <td><p><span class="term"><code class="varname">path</code></span></p></td>
 <td><p>The location where keyfiles are read and stored.
-            This defaults to "<code class="literal">/usr/local/etc/NetworkManager/conf.d</code>".
+            This defaults to "<code class="filename">${prefix}/etc/NetworkManager/conf.d</code>".
             </p></td>
 </tr>
 <tr>
@@ -392,7 +392,7 @@ unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth
     </p>
 </div>
 <div class="refsect1">
-<a name="id-1.4.6.9"></a><h2>
+<a name="id-1.2.5.9"></a><h2>
 <code class="literal">ifupdown</code> section</h2>
 <p>This section contains ifupdown-specific options and thus only
     has effect when using the <code class="literal">ifupdown</code> plugin.</p>
@@ -426,7 +426,7 @@ unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth
     </p>
 </div>
 <div class="refsect1">
-<a name="id-1.4.6.10"></a><h2>
+<a name="id-1.2.5.10"></a><h2>
 <code class="literal">logging</code> section</h2>
 <p>This section controls NetworkManager's logging.  Any
     settings here are overridden by the <code class="option">--log-level</code>
@@ -499,7 +499,7 @@ unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth
     </p>
 </div>
 <div class="refsect1">
-<a name="id-1.4.6.11"></a><h2>
+<a name="id-1.2.5.11"></a><h2>
 <code class="literal">connection</code> section</h2>
 <p>Specify default values for connections.
     </p>
@@ -513,7 +513,7 @@ ipv6.ip6-privacy=0
 <p>
     </p>
 <div class="refsect2">
-<a name="id-1.4.6.11.4"></a><h3>Supported Properties</h3>
+<a name="id-1.2.5.11.4"></a><h3>Supported Properties</h3>
 <p>
       Not all properties can be overwritten, only the following
       properties are supported to have their default values configured
@@ -582,7 +582,7 @@ ipv6.ip6-privacy=0
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.4.6.11.5"></a><h3>Sections</h3>
+<a name="id-1.2.5.11.5"></a><h3>Sections</h3>
 <p>
         You can configure multiple <code class="literal">connection</code>
         sections, by having different sections with a name that all start
@@ -660,7 +660,7 @@ ipv6.ip6-privacy=1
 </div>
 </div>
 <div class="refsect1">
-<a name="id-1.4.6.12"></a><h2>
+<a name="id-1.2.5.12"></a><h2>
 <code class="literal">connectivity</code> section</h2>
 <p>This section controls NetworkManager's optional connectivity
     checking functionality.  This allows NetworkManager to detect
@@ -706,7 +706,7 @@ ipv6.ip6-privacy=1
     </p>
 </div>
 <div class="refsect1">
-<a name="id-1.4.6.13"></a><h2>
+<a name="id-1.2.5.13"></a><h2>
 <code class="literal">global-dns</code> section</h2>
 <p>This section specifies global DNS settings that override
     connection-specific configuration.</p>
@@ -736,7 +736,7 @@ ipv6.ip6-privacy=1
     </p>
 </div>
 <div class="refsect1">
-<a name="id-1.4.6.14"></a><h2>
+<a name="id-1.2.5.14"></a><h2>
 <code class="literal">global-dns-domain</code> sections</h2>
 <p>Sections with a name starting with the "global-dns-domain-"
     prefix allow to define global DNS configuration for specific
@@ -772,7 +772,7 @@ ipv6.ip6-privacy=1
     </p>
 </div>
 <div class="refsect1">
-<a name="id-1.4.6.15"></a><h2>
+<a name="id-1.2.5.15"></a><h2>
 <code class="literal">.config</code> sections</h2>
 <p>This is a special section that contains options which apply
       to the configuration file that contains the option.
@@ -875,7 +875,7 @@ enable=nm-version-min:1.3,nm-version-min:1.2.6,nm-version-min:1.0.16
     </p>
 </div>
 <div class="refsect1">
-<a name="id-1.4.6.16"></a><h2>Plugins</h2>
+<a name="id-1.2.5.16"></a><h2>Plugins</h2>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -959,7 +959,7 @@ enable=nm-version-min:1.3,nm-version-min:1.2.6,nm-version-min:1.0.16
 </table></div>
 </div>
 <div class="refsect1">
-<a name="id-1.4.6.17"></a><h2>Appendix</h2>
+<a name="id-1.2.5.17"></a><h2>Appendix</h2>
 <div class="refsect2">
 <a name="device-spec"></a><h3>Device List Format</h3>
 <p>
@@ -1048,7 +1048,7 @@ interface-name:vboxnet*,except:interface-name:vboxnet2
 </div>
 </div>
 <div class="refsect1">
-<a name="id-1.4.6.18"></a><h2>See Also</h2>
+<a name="id-1.2.5.18"></a><h2>See Also</h2>
 <p>
       <span class="citerefentry"><span class="refentrytitle">NetworkManager</span>(8)</span>,
       <span class="citerefentry"><span class="refentrytitle">nmcli</span>(1)</span>,
diff --git a/docs/api/html/NetworkManager.devhelp2 b/docs/api/html/NetworkManager.devhelp2
index d210c50e..2f5ab8cf 100644
--- a/docs/api/html/NetworkManager.devhelp2
+++ b/docs/api/html/NetworkManager.devhelp2
@@ -1,6 +1,17 @@
 <?xml version="1.0" encoding="utf-8" standalone="no"?>
-<book xmlns="http://www.devhelp.net/book" title="NetworkManager D-Bus API Reference Manual" link="index.html" author="" name="NetworkManager" version="2" language="c">
+<book xmlns="http://www.devhelp.net/book" title="NetworkManager Reference Manual" link="index.html" author="" name="NetworkManager" version="2" language="c">
   <chapters>
+    <sub name="Manual Pages" link="manpages.html">
+      <sub name="nmcli" link="nmcli.html"/>
+      <sub name="nmtui" link="nmtui.html"/>
+      <sub name="nm-online" link="nm-online.html"/>
+      <sub name="NetworkManager.conf" link="NetworkManager.conf.html"/>
+      <sub name="nm-settings" link="nm-settings.html"/>
+      <sub name="nm-settings-keyfile" link="nm-settings-keyfile.html"/>
+      <sub name="nm-settings-ifcfg-rh" link="nm-settings-ifcfg-rh.html"/>
+      <sub name="nmcli-examples" link="nmcli-examples.html"/>
+      <sub name="NetworkManager" link="NetworkManager.html"/>
+    </sub>
     <sub name="D-Bus API Reference" link="spec.html">
       <sub name="Interfaces" link="spec.html#dbus-interfaces">
         <sub name="org.freedesktop.NetworkManager" link="gdbus-org.freedesktop.NetworkManager.html"/>
@@ -39,20 +50,9 @@
       </sub>
     </sub>
     <sub name="Network Configuration Setting Specification" link="ref-settings.html">
-      <sub name="Configuration Settings" link="ref-settings.html#id-1.3.3"/>
+      <sub name="Configuration Settings" link="ref-settings.html#id-1.4.3"/>
       <sub name="Secret flag types" link="secrets-flags.html"/>
     </sub>
-    <sub name="UNIX Manual Pages" link="manpages.html">
-      <sub name="nmcli" link="nmcli.html"/>
-      <sub name="nmtui" link="nmtui.html"/>
-      <sub name="nm-online" link="nm-online.html"/>
-      <sub name="NetworkManager" link="NetworkManager.html"/>
-      <sub name="NetworkManager.conf" link="NetworkManager.conf.html"/>
-      <sub name="nmcli-examples" link="nmcli-examples.html"/>
-      <sub name="nm-settings" link="nm-settings.html"/>
-      <sub name="nm-settings-keyfile" link="nm-settings-keyfile.html"/>
-      <sub name="nm-settings-ifcfg-rh" link="nm-settings-ifcfg-rh.html"/>
-    </sub>
     <sub name="Index" link="ix01.html"/>
     <sub name="License" link="license.html"/>
   </chapters>
diff --git a/docs/api/html/NetworkManager.html b/docs/api/html/NetworkManager.html
index 5f08219e..835a7e66 100644
--- a/docs/api/html/NetworkManager.html
+++ b/docs/api/html/NetworkManager.html
@@ -2,12 +2,12 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>NetworkManager: NetworkManager D-Bus API Reference Manual</title>
+<title>NetworkManager: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
-<link rel="up" href="manpages.html" title="UNIX Manual Pages">
-<link rel="prev" href="nm-online.html" title="nm-online">
-<link rel="next" href="NetworkManager.conf.html" title="NetworkManager.conf">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
+<link rel="up" href="manpages.html" title="Manual Pages">
+<link rel="prev" href="nmcli-examples.html" title="nmcli-examples">
+<link rel="next" href="spec.html" title="D-Bus API Reference">
 <meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -16,8 +16,8 @@
 <td width="100%" align="left" class="shortcuts"></td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="manpages.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="nm-online.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="NetworkManager.conf.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="nmcli-examples.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="spec.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="NetworkManager"></a><div class="titlepage"></div>
@@ -33,7 +33,7 @@
 <div class="cmdsynopsis"><p><code class="command">NetworkManager [OPTIONS...]</code> </p></div>
 </div>
 <div class="refsect1">
-<a name="id-1.4.5.5"></a><h2>Description</h2>
+<a name="id-1.2.10.5"></a><h2>Description</h2>
 <p>
       The NetworkManager daemon attempts to make networking
       configuration and operation as painless and automatic as
@@ -48,7 +48,7 @@
     </p>
 </div>
 <div class="refsect1">
-<a name="id-1.4.5.6"></a><h2>Dispatcher scripts</h2>
+<a name="id-1.2.10.6"></a><h2>Dispatcher scripts</h2>
 <p>
       NetworkManager will execute scripts in the
       /etc/NetworkManager/dispatcher.d directory or subdirectories in
@@ -296,7 +296,7 @@
     </p>
 </div>
 <div class="refsect1">
-<a name="id-1.4.5.7"></a><h2>Options</h2>
+<a name="id-1.2.10.7"></a><h2>Options</h2>
 <p>The following options are understood:</p>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
@@ -389,7 +389,7 @@
 </table></div>
 </div>
 <div class="refsect1">
-<a name="id-1.4.5.8"></a><h2>UDEV PROPERTIES</h2>
+<a name="id-1.2.10.8"></a><h2>UDEV PROPERTIES</h2>
 <p>
       <span class="citerefentry"><span class="refentrytitle">udev</span>(7)</span>
       device manager is used for the network device discovery. The following
@@ -420,7 +420,7 @@
 </table></div>
 </div>
 <div class="refsect1">
-<a name="id-1.4.5.9"></a><h2>SIGNALS</h2>
+<a name="id-1.2.10.9"></a><h2>SIGNALS</h2>
 <p>
       NetworkManager process handles the following signals:
       </p>
@@ -458,7 +458,7 @@
     </p>
 </div>
 <div class="refsect1">
-<a name="id-1.4.5.10"></a><h2>DEBUGGING</h2>
+<a name="id-1.2.10.10"></a><h2>DEBUGGING</h2>
 <p>
       The following environment variables are supported to help
       debugging.  When used in conjunction with the
@@ -475,7 +475,7 @@
     </p>
 </div>
 <div class="refsect1">
-<a name="id-1.4.5.11"></a><h2>See Also</h2>
+<a name="id-1.2.10.11"></a><h2>See Also</h2>
 <p>
       <span class="citerefentry"><span class="refentrytitle">NetworkManager.conf</span>(5)</span>,
       <span class="citerefentry"><span class="refentrytitle">nmcli</span>(1)</span>,
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.AccessPoint.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.AccessPoint.html
index 6156a6f4..ccf36e84 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.AccessPoint.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.AccessPoint.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.AccessPoint: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.AccessPoint: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.AgentManager.html" title="org.freedesktop.NetworkManager.AgentManager">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.PPP.html" title="org.freedesktop.NetworkManager.PPP">
@@ -34,13 +34,13 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.2.3.5.3"></a><h2>Signals</h2>
+<a name="id-1.3.3.5.3"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-signal-org-freedesktop-NetworkManager-AccessPoint.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.5.4"></a><h2>Properties</h2>
+<a name="id-1.3.3.5.4"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-property-org-freedesktop-NetworkManager-AccessPoint.Flags" title='The "Flags" property'>Flags</a>       readable   u
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html#gdbus-property-org-freedesktop-NetworkManager-AccessPoint.WpaFlags" title='The "WpaFlags" property'>WpaFlags</a>    readable   u
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.AgentManager.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.AgentManager.html
index c11ce86b..b32df401 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.AgentManager.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.AgentManager.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.AgentManager: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.AgentManager: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Settings.html" title="org.freedesktop.NetworkManager.Settings">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html" title="org.freedesktop.NetworkManager.AccessPoint">
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Connection.Active.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Connection.Active.html
index cb21000b..394b34fb 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Connection.Active.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Connection.Active.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.Connection.Active: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.Connection.Active: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.VPN.Connection.html" title="org.freedesktop.NetworkManager.VPN.Connection">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.html" title="org.freedesktop.NetworkManager.Device">
@@ -34,13 +34,13 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.2.3.9.3"></a><h2>Signals</h2>
+<a name="id-1.3.3.9.3"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-signal-org-freedesktop-NetworkManager-Connection-Active.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.9.4"></a><h2>Properties</h2>
+<a name="id-1.3.3.9.4"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.Connection" title='The "Connection" property'>Connection</a>      readable   o
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html#gdbus-property-org-freedesktop-NetworkManager-Connection-Active.SpecificObject" title='The "SpecificObject" property'>SpecificObject</a>  readable   o
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.DHCP4Config.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.DHCP4Config.html
index ea8eaa80..8c99d193 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.DHCP4Config.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.DHCP4Config.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.DHCP4Config: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.DHCP4Config: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html" title="org.freedesktop.NetworkManager.Device.WiMax">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.DHCP6Config.html" title="org.freedesktop.NetworkManager.DHCP6Config">
@@ -34,13 +34,13 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.2.3.29.3"></a><h2>Signals</h2>
+<a name="id-1.3.3.29.3"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.DHCP4Config.html#gdbus-signal-org-freedesktop-NetworkManager-DHCP4Config.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.29.4"></a><h2>Properties</h2>
+<a name="id-1.3.3.29.4"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.DHCP4Config.html#gdbus-property-org-freedesktop-NetworkManager-DHCP4Config.Options" title='The "Options" property'>Options</a>  readable   a{sv}
 </pre>
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.DHCP6Config.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.DHCP6Config.html
index 8634c505..916d8629 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.DHCP6Config.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.DHCP6Config.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.DHCP6Config: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.DHCP6Config: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.DHCP4Config.html" title="org.freedesktop.NetworkManager.DHCP4Config">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html" title="org.freedesktop.NetworkManager.IP4Config">
@@ -34,13 +34,13 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.2.3.30.3"></a><h2>Signals</h2>
+<a name="id-1.3.3.30.3"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.DHCP6Config.html#gdbus-signal-org-freedesktop-NetworkManager-DHCP6Config.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.30.4"></a><h2>Properties</h2>
+<a name="id-1.3.3.30.4"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.DHCP6Config.html#gdbus-property-org-freedesktop-NetworkManager-DHCP6Config.Options" title='The "Options" property'>Options</a>  readable   a{sv}
 </pre>
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Adsl.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Adsl.html
index 85b8cca5..bc446feb 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Adsl.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Adsl.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.Device.Adsl: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.Device.Adsl: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.html" title="org.freedesktop.NetworkManager.Device">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Bond.html" title="org.freedesktop.NetworkManager.Device.Bond">
@@ -34,13 +34,13 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.2.3.11.3"></a><h2>Signals</h2>
+<a name="id-1.3.3.11.3"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Adsl.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Adsl.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.11.4"></a><h2>Properties</h2>
+<a name="id-1.3.3.11.4"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Adsl.html#gdbus-property-org-freedesktop-NetworkManager-Device-Adsl.Carrier" title='The "Carrier" property'>Carrier</a>  readable   b
 </pre>
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html
index 8aee9d96..bf8d3abd 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.Device.Bluetooth: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.Device.Bluetooth: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Bridge.html" title="org.freedesktop.NetworkManager.Device.Bridge">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Wired.html" title="org.freedesktop.NetworkManager.Device.Wired">
@@ -34,13 +34,13 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.2.3.14.3"></a><h2>Signals</h2>
+<a name="id-1.3.3.14.3"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Bluetooth.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.14.4"></a><h2>Properties</h2>
+<a name="id-1.3.3.14.4"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bluetooth.HwAddress" title='The "HwAddress" property'>HwAddress</a>       readable   s
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bluetooth.Name" title='The "Name" property'>Name</a>            readable   s
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bond.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bond.html
index bb8000a3..14383a24 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bond.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bond.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.Device.Bond: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.Device.Bond: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Adsl.html" title="org.freedesktop.NetworkManager.Device.Adsl">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Bridge.html" title="org.freedesktop.NetworkManager.Device.Bridge">
@@ -34,13 +34,13 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.2.3.12.3"></a><h2>Signals</h2>
+<a name="id-1.3.3.12.3"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Bond.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Bond.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.12.4"></a><h2>Properties</h2>
+<a name="id-1.3.3.12.4"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Bond.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bond.HwAddress" title='The "HwAddress" property'>HwAddress</a>  readable   s
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Bond.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bond.Carrier" title='The "Carrier" property'>Carrier</a>    readable   b
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bridge.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bridge.html
index 8c3c0df6..fb550a69 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bridge.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Bridge.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.Device.Bridge: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.Device.Bridge: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Bond.html" title="org.freedesktop.NetworkManager.Device.Bond">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html" title="org.freedesktop.NetworkManager.Device.Bluetooth">
@@ -34,13 +34,13 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.2.3.13.3"></a><h2>Signals</h2>
+<a name="id-1.3.3.13.3"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Bridge.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Bridge.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.13.4"></a><h2>Properties</h2>
+<a name="id-1.3.3.13.4"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Bridge.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bridge.HwAddress" title='The "HwAddress" property'>HwAddress</a>  readable   s
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Bridge.html#gdbus-property-org-freedesktop-NetworkManager-Device-Bridge.Carrier" title='The "Carrier" property'>Carrier</a>    readable   b
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Generic.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Generic.html
index 0ca0acc6..d53d727d 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Generic.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Generic.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.Device.Generic: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.Device.Generic: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Wired.html" title="org.freedesktop.NetworkManager.Device.Wired">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html" title="org.freedesktop.NetworkManager.Device.Infiniband">
@@ -34,13 +34,13 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.2.3.16.3"></a><h2>Signals</h2>
+<a name="id-1.3.3.16.3"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Generic.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Generic.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.16.4"></a><h2>Properties</h2>
+<a name="id-1.3.3.16.4"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Generic.html#gdbus-property-org-freedesktop-NetworkManager-Device-Generic.HwAddress" title='The "HwAddress" property'>HwAddress</a>        readable   s
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Generic.html#gdbus-property-org-freedesktop-NetworkManager-Device-Generic.TypeDescription" title='The "TypeDescription" property'>TypeDescription</a>  readable   s
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html
index 8fc079b3..d7e5dbfb 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.Device.IPTunnel: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.Device.IPTunnel: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html" title="org.freedesktop.NetworkManager.Device.Infiniband">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html" title="org.freedesktop.NetworkManager.Device.Macvlan">
@@ -34,13 +34,13 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.2.3.18.3"></a><h2>Signals</h2>
+<a name="id-1.3.3.18.3"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-signal-org-freedesktop-NetworkManager-Device-IPTunnel.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.18.4"></a><h2>Properties</h2>
+<a name="id-1.3.3.18.4"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.Mode" title='The "Mode" property'>Mode</a>                readable   u
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html#gdbus-property-org-freedesktop-NetworkManager-Device-IPTunnel.Parent" title='The "Parent" property'>Parent</a>              readable   o
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html
index 0be326c1..5f43e63c 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.Device.Infiniband: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.Device.Infiniband: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Generic.html" title="org.freedesktop.NetworkManager.Device.Generic">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html" title="org.freedesktop.NetworkManager.Device.IPTunnel">
@@ -34,13 +34,13 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.2.3.17.3"></a><h2>Signals</h2>
+<a name="id-1.3.3.17.3"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Infiniband.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.17.4"></a><h2>Properties</h2>
+<a name="id-1.3.3.17.4"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html#gdbus-property-org-freedesktop-NetworkManager-Device-Infiniband.HwAddress" title='The "HwAddress" property'>HwAddress</a>  readable   s
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Infiniband.html#gdbus-property-org-freedesktop-NetworkManager-Device-Infiniband.Carrier" title='The "Carrier" property'>Carrier</a>    readable   b
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html
index 1cd289ce..72b5df8d 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.Device.Macvlan: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.Device.Macvlan: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.IPTunnel.html" title="org.freedesktop.NetworkManager.Device.IPTunnel">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Modem.html" title="org.freedesktop.NetworkManager.Device.Modem">
@@ -34,13 +34,13 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.2.3.19.3"></a><h2>Signals</h2>
+<a name="id-1.3.3.19.3"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Macvlan.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.19.4"></a><h2>Properties</h2>
+<a name="id-1.3.3.19.4"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macvlan.Parent" title='The "Parent" property'>Parent</a>     readable   o
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Macvlan.Mode" title='The "Mode" property'>Mode</a>       readable   s
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Modem.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Modem.html
index 554ac256..cc18c40f 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Modem.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Modem.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.Device.Modem: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.Device.Modem: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Macvlan.html" title="org.freedesktop.NetworkManager.Device.Macvlan">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html" title="org.freedesktop.NetworkManager.Device.OlpcMesh">
@@ -34,13 +34,13 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.2.3.20.3"></a><h2>Signals</h2>
+<a name="id-1.3.3.20.3"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Modem.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Modem.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.20.4"></a><h2>Properties</h2>
+<a name="id-1.3.3.20.4"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Modem.html#gdbus-property-org-freedesktop-NetworkManager-Device-Modem.ModemCapabilities" title='The "ModemCapabilities" property'>ModemCapabilities</a>    readable   u
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Modem.html#gdbus-property-org-freedesktop-NetworkManager-Device-Modem.CurrentCapabilities" title='The "CurrentCapabilities" property'>CurrentCapabilities</a>  readable   u
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html
index 24cd507e..c51bca47 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.Device.OlpcMesh: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.Device.OlpcMesh: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Modem.html" title="org.freedesktop.NetworkManager.Device.Modem">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Team.html" title="org.freedesktop.NetworkManager.Device.Team">
@@ -34,13 +34,13 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.2.3.21.3"></a><h2>Signals</h2>
+<a name="id-1.3.3.21.3"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html#gdbus-signal-org-freedesktop-NetworkManager-Device-OlpcMesh.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.21.4"></a><h2>Properties</h2>
+<a name="id-1.3.3.21.4"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html#gdbus-property-org-freedesktop-NetworkManager-Device-OlpcMesh.HwAddress" title='The "HwAddress" property'>HwAddress</a>      readable   s
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html#gdbus-property-org-freedesktop-NetworkManager-Device-OlpcMesh.Companion" title='The "Companion" property'>Companion</a>      readable   o
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Team.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Team.html
index 24f6d5c6..ffa7061a 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Team.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Team.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.Device.Team: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.Device.Team: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.OlpcMesh.html" title="org.freedesktop.NetworkManager.Device.OlpcMesh">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html" title="org.freedesktop.NetworkManager.Device.Tun">
@@ -34,13 +34,13 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.2.3.22.3"></a><h2>Signals</h2>
+<a name="id-1.3.3.22.3"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Team.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Team.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.22.4"></a><h2>Properties</h2>
+<a name="id-1.3.3.22.4"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Team.html#gdbus-property-org-freedesktop-NetworkManager-Device-Team.HwAddress" title='The "HwAddress" property'>HwAddress</a>  readable   s
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Team.html#gdbus-property-org-freedesktop-NetworkManager-Device-Team.Carrier" title='The "Carrier" property'>Carrier</a>    readable   b
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Tun.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Tun.html
index fedfca40..67282411 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Tun.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Tun.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.Device.Tun: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.Device.Tun: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Team.html" title="org.freedesktop.NetworkManager.Device.Team">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Veth.html" title="org.freedesktop.NetworkManager.Device.Veth">
@@ -34,13 +34,13 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.2.3.23.3"></a><h2>Signals</h2>
+<a name="id-1.3.3.23.3"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Tun.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.23.4"></a><h2>Properties</h2>
+<a name="id-1.3.3.23.4"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html#gdbus-property-org-freedesktop-NetworkManager-Device-Tun.Owner" title='The "Owner" property'>Owner</a>       readable   x
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html#gdbus-property-org-freedesktop-NetworkManager-Device-Tun.Group" title='The "Group" property'>Group</a>       readable   x
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Veth.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Veth.html
index c045a5ff..892e396b 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Veth.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Veth.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.Device.Veth: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.Device.Veth: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Tun.html" title="org.freedesktop.NetworkManager.Device.Tun">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Vlan.html" title="org.freedesktop.NetworkManager.Device.Vlan">
@@ -34,13 +34,13 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.2.3.24.3"></a><h2>Signals</h2>
+<a name="id-1.3.3.24.3"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Veth.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Veth.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.24.4"></a><h2>Properties</h2>
+<a name="id-1.3.3.24.4"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Veth.html#gdbus-property-org-freedesktop-NetworkManager-Device-Veth.Peer" title='The "Peer" property'>Peer</a>  readable   o
 </pre>
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Vlan.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Vlan.html
index 9b8fea75..bf54392a 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Vlan.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Vlan.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.Device.Vlan: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.Device.Vlan: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Veth.html" title="org.freedesktop.NetworkManager.Device.Veth">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html" title="org.freedesktop.NetworkManager.Device.Vxlan">
@@ -34,13 +34,13 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.2.3.25.3"></a><h2>Signals</h2>
+<a name="id-1.3.3.25.3"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Vlan.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Vlan.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.25.4"></a><h2>Properties</h2>
+<a name="id-1.3.3.25.4"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Vlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vlan.HwAddress" title='The "HwAddress" property'>HwAddress</a>  readable   s
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Vlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vlan.Carrier" title='The "Carrier" property'>Carrier</a>    readable   b
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html
index 4d227329..97ca5850 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.Device.Vxlan: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.Device.Vxlan: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Vlan.html" title="org.freedesktop.NetworkManager.Device.Vlan">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html" title="org.freedesktop.NetworkManager.Device.Wireless">
@@ -34,13 +34,13 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.2.3.26.3"></a><h2>Signals</h2>
+<a name="id-1.3.3.26.3"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Vxlan.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.26.4"></a><h2>Properties</h2>
+<a name="id-1.3.3.26.4"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.Parent" title='The "Parent" property'>Parent</a>      readable   o
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html#gdbus-property-org-freedesktop-NetworkManager-Device-Vxlan.HwAddress" title='The "HwAddress" property'>HwAddress</a>   readable   s
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.WiMax.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.WiMax.html
index 2bd82f0a..345ec7e2 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.WiMax.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.WiMax.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.Device.WiMax: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.Device.WiMax: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html" title="org.freedesktop.NetworkManager.Device.Wireless">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.DHCP4Config.html" title="org.freedesktop.NetworkManager.DHCP4Config">
@@ -40,7 +40,7 @@
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.28.4"></a><h2>Signals</h2>
+<a name="id-1.3.3.28.4"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-signal-org-freedesktop-NetworkManager-Device-WiMax.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-signal-org-freedesktop-NetworkManager-Device-WiMax.NspAdded" title='The "NspAdded" signal'>NspAdded</a>          (o     nsp);
@@ -48,7 +48,7 @@
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.28.5"></a><h2>Properties</h2>
+<a name="id-1.3.3.28.5"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-property-org-freedesktop-NetworkManager-Device-WiMax.Nsps" title='The "Nsps" property'>Nsps</a>             readable   ao
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html#gdbus-property-org-freedesktop-NetworkManager-Device-WiMax.HwAddress" title='The "HwAddress" property'>HwAddress</a>        readable   s
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Wired.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Wired.html
index 498b1e9b..240ff74f 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Wired.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Wired.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.Device.Wired: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.Device.Wired: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Bluetooth.html" title="org.freedesktop.NetworkManager.Device.Bluetooth">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Generic.html" title="org.freedesktop.NetworkManager.Device.Generic">
@@ -34,13 +34,13 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.2.3.15.3"></a><h2>Signals</h2>
+<a name="id-1.3.3.15.3"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Wired.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Wired.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.15.4"></a><h2>Properties</h2>
+<a name="id-1.3.3.15.4"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Wired.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wired.HwAddress" title='The "HwAddress" property'>HwAddress</a>        readable   s
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Wired.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wired.PermHwAddress" title='The "PermHwAddress" property'>PermHwAddress</a>    readable   s
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Wireless.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Wireless.html
index 6992176a..b13c244c 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Wireless.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.Wireless.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.Device.Wireless: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.Device.Wireless: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Device.Vxlan.html" title="org.freedesktop.NetworkManager.Device.Vxlan">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.WiMax.html" title="org.freedesktop.NetworkManager.Device.WiMax">
@@ -42,7 +42,7 @@
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.27.4"></a><h2>Signals</h2>
+<a name="id-1.3.3.27.4"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Wireless.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a>  (a{sv} properties);
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-signal-org-freedesktop-NetworkManager-Device-Wireless.AccessPointAdded" title='The "AccessPointAdded" signal'>AccessPointAdded</a>   (o     access_point);
@@ -50,7 +50,7 @@
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.27.5"></a><h2>Properties</h2>
+<a name="id-1.3.3.27.5"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.HwAddress" title='The "HwAddress" property'>HwAddress</a>             readable   s
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.Wireless.html#gdbus-property-org-freedesktop-NetworkManager-Device-Wireless.PermHwAddress" title='The "PermHwAddress" property'>PermHwAddress</a>         readable   s
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.html
index 03f74ce4..3acd8a78 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Device.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.Device: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.Device: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html" title="org.freedesktop.NetworkManager.Connection.Active">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Device.Adsl.html" title="org.freedesktop.NetworkManager.Device.Adsl">
@@ -47,7 +47,7 @@
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.10.4"></a><h2>Signals</h2>
+<a name="id-1.3.3.10.4"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-signal-org-freedesktop-NetworkManager-Device.StateChanged" title='The "StateChanged" signal'>StateChanged</a> (u new_state,
               u old_state,
@@ -55,7 +55,7 @@
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.10.5"></a><h2>Properties</h2>
+<a name="id-1.3.3.10.5"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Udi" title='The "Udi" property'>Udi</a>                   readable   s
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Device.html#gdbus-property-org-freedesktop-NetworkManager-Device.Interface" title='The "Interface" property'>Interface</a>             readable   s
@@ -494,7 +494,7 @@ Metered  readable   u
 <p>        Whether the amount of traffic flowing through the device is subject to
         limitations, for example set by service providers.
 </p>
-<p>        Returns: NMMetered
+<p>        Returns: <a href="https://developer.gnome.org/libnm/1.0/libnm-nm-dbus-interface.html#NMMetered">NMMetered</a>
 </p>
 </div>
 <hr>
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.IP4Config.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.IP4Config.html
index 7405a23c..fd291730 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.IP4Config.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.IP4Config.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.IP4Config: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.IP4Config: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.DHCP6Config.html" title="org.freedesktop.NetworkManager.DHCP6Config">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html" title="org.freedesktop.NetworkManager.IP6Config">
@@ -34,13 +34,13 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.2.3.31.3"></a><h2>Signals</h2>
+<a name="id-1.3.3.31.3"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-signal-org-freedesktop-NetworkManager-IP4Config.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.31.4"></a><h2>Properties</h2>
+<a name="id-1.3.3.31.4"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.Addresses" title='The "Addresses" property'>Addresses</a>    readable   aau
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html#gdbus-property-org-freedesktop-NetworkManager-IP4Config.AddressData" title='The "AddressData" property'>AddressData</a>  readable   aa{sv}
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.IP6Config.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.IP6Config.html
index fba5de80..9bd4562a 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.IP6Config.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.IP6Config.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.IP6Config: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.IP6Config: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.IP4Config.html" title="org.freedesktop.NetworkManager.IP4Config">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html" title="org.freedesktop.NetworkManager.VPN.Plugin">
@@ -34,13 +34,13 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.2.3.32.3"></a><h2>Signals</h2>
+<a name="id-1.3.3.32.3"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-signal-org-freedesktop-NetworkManager-IP6Config.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.32.4"></a><h2>Properties</h2>
+<a name="id-1.3.3.32.4"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-property-org-freedesktop-NetworkManager-IP6Config.Addresses" title='The "Addresses" property'>Addresses</a>    readable   a(ayuay)
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html#gdbus-property-org-freedesktop-NetworkManager-IP6Config.AddressData" title='The "AddressData" property'>AddressData</a>  readable   aa{sv}
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.PPP.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.PPP.html
index 40a183dc..0768f315 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.PPP.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.PPP.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.PPP: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.PPP: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.AccessPoint.html" title="org.freedesktop.NetworkManager.AccessPoint">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html" title="org.freedesktop.NetworkManager.Settings.Connection">
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.SecretAgent.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.SecretAgent.html
index 7899f99b..6022ef16 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.SecretAgent.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.SecretAgent.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.SecretAgent: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.SecretAgent: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html" title="org.freedesktop.NetworkManager.VPN.Plugin">
 <link rel="next" href="ref-settings.html" title="Network Configuration Setting Specification">
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Settings.Connection.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Settings.Connection.html
index b985416f..6d33c280 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Settings.Connection.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Settings.Connection.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.Settings.Connection: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.Settings.Connection: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.PPP.html" title="org.freedesktop.NetworkManager.PPP">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.VPN.Connection.html" title="org.freedesktop.NetworkManager.VPN.Connection">
@@ -47,7 +47,7 @@
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.7.4"></a><h2>Signals</h2>
+<a name="id-1.3.3.7.4"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-signal-org-freedesktop-NetworkManager-Settings-Connection.Updated" title='The "Updated" signal'>Updated</a>           ();
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-signal-org-freedesktop-NetworkManager-Settings-Connection.Removed" title='The "Removed" signal'>Removed</a>           ();
@@ -55,7 +55,7 @@
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.7.5"></a><h2>Properties</h2>
+<a name="id-1.3.3.7.5"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html#gdbus-property-org-freedesktop-NetworkManager-Settings-Connection.Unsaved" title='The "Unsaved" property'>Unsaved</a>  readable   b
 </pre>
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Settings.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Settings.html
index e2064236..5f601e51 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.Settings.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.Settings.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.Settings: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.Settings: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.html" title="org.freedesktop.NetworkManager">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.AgentManager.html" title="org.freedesktop.NetworkManager.AgentManager">
@@ -51,7 +51,7 @@
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.3.4"></a><h2>Signals</h2>
+<a name="id-1.3.3.3.4"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-signal-org-freedesktop-NetworkManager-Settings.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-signal-org-freedesktop-NetworkManager-Settings.NewConnection" title='The "NewConnection" signal'>NewConnection</a>     (o     connection);
@@ -59,7 +59,7 @@
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.3.5"></a><h2>Properties</h2>
+<a name="id-1.3.3.3.5"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-property-org-freedesktop-NetworkManager-Settings.Connections" title='The "Connections" property'>Connections</a>  readable   ao
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.Settings.html#gdbus-property-org-freedesktop-NetworkManager-Settings.Hostname" title='The "Hostname" property'>Hostname</a>     readable   s
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.VPN.Connection.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.VPN.Connection.html
index 331d3a5e..ebaad8d8 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.VPN.Connection.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.VPN.Connection.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.VPN.Connection: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.VPN.Connection: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.Settings.Connection.html" title="org.freedesktop.NetworkManager.Settings.Connection">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Connection.Active.html" title="org.freedesktop.NetworkManager.Connection.Active">
@@ -34,7 +34,7 @@
 <td class="gallery_image" valign="top" align="right"></td>
 </tr></table></div>
 <div class="refsect1">
-<a name="id-1.2.3.8.3"></a><h2>Signals</h2>
+<a name="id-1.3.3.8.3"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.VPN.Connection.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Connection.PropertiesChanged" title='The "PropertiesChanged" signal'>PropertiesChanged</a> (a{sv} properties);
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.VPN.Connection.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Connection.VpnStateChanged" title='The "VpnStateChanged" signal'>VpnStateChanged</a>   (u     state,
@@ -42,7 +42,7 @@
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.8.4"></a><h2>Properties</h2>
+<a name="id-1.3.3.8.4"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.VPN.Connection.html#gdbus-property-org-freedesktop-NetworkManager-VPN-Connection.VpnState" title='The "VpnState" property'>VpnState</a>  readable   u
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.VPN.Connection.html#gdbus-property-org-freedesktop-NetworkManager-VPN-Connection.Banner" title='The "Banner" property'>Banner</a>    readable   s
@@ -89,11 +89,11 @@ VpnStateChanged (u state,
 <tbody>
 <tr>
 <td><p><span class="term"><code class="literal">u <em class="parameter"><code>state</code></em></code>:</span></p></td>
-<td><p>(NMVpnConnectionState) The new state of the VPN connection.</p></td>
+<td><p>(<a href="https://developer.gnome.org/libnm/1.0/libnm-nm-vpn-dbus-interface.html#NMVpnConnectionState">NMVpnConnectionState</a>) The new state of the VPN connection.</p></td>
 </tr>
 <tr>
 <td><p><span class="term"><code class="literal">u <em class="parameter"><code>reason</code></em></code>:</span></p></td>
-<td><p>(NMVpnConnectionStateReason) Reason code describing the change to the new state.</p></td>
+<td><p>(<a href="https://developer.gnome.org/libnm/1.0/libnm-nm-vpn-dbus-interface.html#NMVpnConnectionStateReason">NMVpnConnectionStateReason</a>) Reason code describing the change to the new state.</p></td>
 </tr>
 </tbody>
 </table></div>
@@ -108,7 +108,7 @@ VpnState  readable   u
 </pre>
 <p>        The VPN-specific state of the connection.
 </p>
-<p>        Returns: NMVpnConnectionState
+<p>        Returns: <a href="https://developer.gnome.org/libnm/1.0/libnm-nm-vpn-dbus-interface.html#NMVpnConnectionState">NMVpnConnectionState</a>
 </p>
 </div>
 <hr>
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html
index bc21c67c..a5dc49ec 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager.VPN.Plugin: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager.VPN.Plugin: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.IP6Config.html" title="org.freedesktop.NetworkManager.IP6Config">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.SecretAgent.html" title="org.freedesktop.NetworkManager.SecretAgent">
@@ -50,7 +50,7 @@
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.33.4"></a><h2>Signals</h2>
+<a name="id-1.3.3.33.4"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Plugin.StateChanged" title='The "StateChanged" signal'>StateChanged</a>    (u     state);
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-signal-org-freedesktop-NetworkManager-VPN-Plugin.SecretsRequired" title='The "SecretsRequired" signal'>SecretsRequired</a> (s     message,
@@ -63,7 +63,7 @@
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.33.5"></a><h2>Properties</h2>
+<a name="id-1.3.3.33.5"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.VPN.Plugin.html#gdbus-property-org-freedesktop-NetworkManager-VPN-Plugin.State" title='The "State" property'>State</a>  readable   u
 </pre>
@@ -272,7 +272,7 @@ StateChanged (u state);
 </colgroup>
 <tbody><tr>
 <td><p><span class="term"><code class="literal">u <em class="parameter"><code>state</code></em></code>:</span></p></td>
-<td><p>(NMVpnServiceState) The new state of the plugin.</p></td>
+<td><p>(<a href="https://developer.gnome.org/libnm/1.0/libnm-nm-vpn-dbus-interface.html#NMVpnServiceState">NMVpnServiceState</a>) The new state of the plugin.</p></td>
 </tr></tbody>
 </table></div>
 </div>
@@ -395,7 +395,7 @@ Failure (u reason);
 </colgroup>
 <tbody><tr>
 <td><p><span class="term"><code class="literal">u <em class="parameter"><code>reason</code></em></code>:</span></p></td>
-<td><p>(NMVpnPluginFailure) Reason code for the failure.</p></td>
+<td><p>(<a href="https://developer.gnome.org/libnm/1.0/libnm-nm-vpn-dbus-interface.html#NMVpnPluginFailure">NMVpnPluginFailure</a>) Reason code for the failure.</p></td>
 </tr></tbody>
 </table></div>
 </div>
@@ -409,7 +409,7 @@ State  readable   u
 </pre>
 <p>        The state of the plugin.
 </p>
-<p>        Returns: NMVpnServiceState
+<p>        Returns: <a href="https://developer.gnome.org/libnm/1.0/libnm-nm-vpn-dbus-interface.html#NMVpnServiceState">NMVpnServiceState</a>
 </p>
 </div>
 </div>
diff --git a/docs/api/html/gdbus-org.freedesktop.NetworkManager.html b/docs/api/html/gdbus-org.freedesktop.NetworkManager.html
index d028c602..4fd2675c 100644
--- a/docs/api/html/gdbus-org.freedesktop.NetworkManager.html
+++ b/docs/api/html/gdbus-org.freedesktop.NetworkManager.html
@@ -2,9 +2,9 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>org.freedesktop.NetworkManager: NetworkManager D-Bus API Reference Manual</title>
+<title>org.freedesktop.NetworkManager: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="spec.html#dbus-interfaces" title="Interfaces">
 <link rel="prev" href="spec.html" title="D-Bus API Reference">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.Settings.html" title="org.freedesktop.NetworkManager.Settings">
@@ -62,7 +62,7 @@
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.2.4"></a><h2>Signals</h2>
+<a name="id-1.3.3.2.4"></a><h2>Signals</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-signal-org-freedesktop-NetworkManager.CheckPermissions" title='The "CheckPermissions" signal'>CheckPermissions</a>  ();
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-signal-org-freedesktop-NetworkManager.StateChanged" title='The "StateChanged" signal'>StateChanged</a>      (u     state);
@@ -72,7 +72,7 @@
 </pre>
 </div>
 <div class="refsect1">
-<a name="id-1.2.3.2.5"></a><h2>Properties</h2>
+<a name="id-1.3.3.2.5"></a><h2>Properties</h2>
 <pre class="synopsis">
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.Devices" title='The "Devices" property'>Devices</a>                  readable   ao
 <a class="link" href="gdbus-org.freedesktop.NetworkManager.html#gdbus-property-org-freedesktop-NetworkManager.AllDevices" title='The "AllDevices" property'>AllDevices</a>               readable   ao
@@ -643,7 +643,7 @@ Metered  readable   u
 <p>        Indicates whether the connectivity is metered. This is equivalent to the
         metered property of the device associated with the primary connection.
 </p>
-<p>        Returns: NMMetered
+<p>        Returns: <a href="https://developer.gnome.org/libnm/1.0/libnm-nm-dbus-interface.html#NMMetered">NMMetered</a>
 </p>
 </div>
 <hr>
diff --git a/docs/api/html/index.html b/docs/api/html/index.html
index 79677afb..c3c1b2dc 100644
--- a/docs/api/html/index.html
+++ b/docs/api/html/index.html
@@ -2,10 +2,10 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>NetworkManager D-Bus API Reference Manual: NetworkManager D-Bus API Reference Manual</title>
+<title>NetworkManager Reference Manual: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
-<link rel="next" href="spec.html" title="D-Bus API Reference">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
+<link rel="next" href="manpages.html" title="Manual Pages">
 <meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -13,10 +13,10 @@
 <div class="book">
 <div class="titlepage">
 <div>
-<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">NetworkManager D-Bus API Reference Manual</p></th></tr></table></div>
-<div><p class="releaseinfo">Version 1.1.93
+<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">NetworkManager Reference Manual</p></th></tr></table></div>
+<div><p class="releaseinfo">Version 1.1.94
 </p></div>
-<div><p class="copyright">Copyright © 2012, 2016 The NetworkManager Authors</p></div>
+<div><p class="copyright">Copyright © 2012, 2013, 2014, 2015, 2016 The NetworkManager Authors</p></div>
 <div><div class="legalnotice">
 <a name="id-1.1.4"></a><p>
 	Permission is granted to copy, distribute and/or modify this
@@ -43,6 +43,36 @@
 <hr>
 </div>
 <div class="toc"><dl class="toc">
+<dt><span class="chapter"><a href="manpages.html">Manual Pages</a></span></dt>
+<dd><dl>
+<dt>
+<span class="refentrytitle"><a href="nmcli.html">nmcli</a></span><span class="refpurpose"> — command-line tool for controlling NetworkManager</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="nmtui.html">nmtui</a></span><span class="refpurpose"> — Text User Interface for controlling NetworkManager</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="nm-online.html">nm-online</a></span><span class="refpurpose"> — ask NetworkManager whether the network is connected</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="NetworkManager.conf.html">NetworkManager.conf</a></span><span class="refpurpose"> — NetworkManager configuration file</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="nm-settings.html">nm-settings</a></span><span class="refpurpose"> — Description of settings and properties of NetworkManager connection profiles</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="nm-settings-keyfile.html">nm-settings-keyfile</a></span><span class="refpurpose"> — Description of <span class="emphasis"><em>keyfile</em></span> settings plugin</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="nm-settings-ifcfg-rh.html">nm-settings-ifcfg-rh</a></span><span class="refpurpose"> — Description of <span class="emphasis"><em>ifcfg-rh</em></span> settings plugin</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="nmcli-examples.html">nmcli-examples</a></span><span class="refpurpose"> — usage examples of nmcli</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="NetworkManager.html">NetworkManager</a></span><span class="refpurpose"> — network management daemon</span>
+</dt>
+</dl></dd>
 <dt><span class="chapter"><a href="spec.html">D-Bus API Reference</a></span></dt>
 <dd><dl>
 <dt><span class="section"><a href="spec.html#dbus-interfaces">Interfaces</a></span></dt>
@@ -150,39 +180,9 @@
 </dl></dd>
 <dt><span class="chapter"><a href="ref-settings.html">Network Configuration Setting Specification</a></span></dt>
 <dd><dl>
-<dt><span class="section"><a href="ref-settings.html#id-1.3.3">Configuration Settings</a></span></dt>
+<dt><span class="section"><a href="ref-settings.html#id-1.4.3">Configuration Settings</a></span></dt>
 <dt><span class="section"><a href="secrets-flags.html">Secret flag types</a></span></dt>
 </dl></dd>
-<dt><span class="chapter"><a href="manpages.html">UNIX Manual Pages</a></span></dt>
-<dd><dl>
-<dt>
-<span class="refentrytitle"><a href="nmcli.html">nmcli</a></span><span class="refpurpose"> — command-line tool for controlling NetworkManager</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="nmtui.html">nmtui</a></span><span class="refpurpose"> — Text User Interface for controlling NetworkManager</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="nm-online.html">nm-online</a></span><span class="refpurpose"> — ask NetworkManager whether the network is connected</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="NetworkManager.html">NetworkManager</a></span><span class="refpurpose"> — network management daemon</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="NetworkManager.conf.html">NetworkManager.conf</a></span><span class="refpurpose"> — NetworkManager configuration file</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="nmcli-examples.html">nmcli-examples</a></span><span class="refpurpose"> — usage examples of nmcli</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="nm-settings.html">nm-settings</a></span><span class="refpurpose"> — Description of settings and properties of NetworkManager connection profiles</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="nm-settings-keyfile.html">nm-settings-keyfile</a></span><span class="refpurpose"> — Description of <span class="emphasis"><em>keyfile</em></span> settings plugin</span>
-</dt>
-<dt>
-<span class="refentrytitle"><a href="nm-settings-ifcfg-rh.html">nm-settings-ifcfg-rh</a></span><span class="refpurpose"> — Description of <span class="emphasis"><em>ifcfg-rh</em></span> settings plugin</span>
-</dt>
-</dl></dd>
 <dt><span class="index"><a href="ix01.html">Index</a></span></dt>
 <dt><span class="appendix"><a href="license.html">A. License</a></span></dt>
 </dl></div>
diff --git a/docs/api/html/index.sgml b/docs/api/html/index.sgml
index 583682f2..4b1a83ec 100644
--- a/docs/api/html/index.sgml
+++ b/docs/api/html/index.sgml
@@ -1,3 +1,55 @@
+<ANCHOR id="nmcli" href="NetworkManager/nmcli.html">
+<ANCHOR id="synopsis" href="NetworkManager/nmcli.html#synopsis">
+<ANCHOR id="description" href="NetworkManager/nmcli.html#description">
+<ANCHOR id="options" href="NetworkManager/nmcli.html#options">
+<ANCHOR id="general" href="NetworkManager/nmcli.html#general">
+<ANCHOR id="networking" href="NetworkManager/nmcli.html#networking">
+<ANCHOR id="radio" href="NetworkManager/nmcli.html#radio">
+<ANCHOR id="monitor" href="NetworkManager/nmcli.html#monitor">
+<ANCHOR id="connection" href="NetworkManager/nmcli.html#connection">
+<ANCHOR id="device" href="NetworkManager/nmcli.html#device">
+<ANCHOR id="agent" href="NetworkManager/nmcli.html#agent">
+<ANCHOR id="environment_variables" href="NetworkManager/nmcli.html#environment_variables">
+<ANCHOR id="internationalization_notes" href="NetworkManager/nmcli.html#internationalization_notes">
+<ANCHOR id="exit_status" href="NetworkManager/nmcli.html#exit_status">
+<ANCHOR id="examples" href="NetworkManager/nmcli.html#examples">
+<ANCHOR id="notes" href="NetworkManager/nmcli.html#notes">
+<ANCHOR id="bugs" href="NetworkManager/nmcli.html#bugs">
+<ANCHOR id="see_also" href="NetworkManager/nmcli.html#see_also">
+<ANCHOR id="nmtui" href="NetworkManager/nmtui.html">
+<ANCHOR id="synopsis" href="NetworkManager/nmtui.html#synopsis">
+<ANCHOR id="description" href="NetworkManager/nmtui.html#description">
+<ANCHOR id="see_also" href="NetworkManager/nmtui.html#see_also">
+<ANCHOR id="nm-online" href="NetworkManager/nm-online.html">
+<ANCHOR id="synopsis" href="NetworkManager/nm-online.html#synopsis">
+<ANCHOR id="description" href="NetworkManager/nm-online.html#description">
+<ANCHOR id="options" href="NetworkManager/nm-online.html#options">
+<ANCHOR id="exit_status" href="NetworkManager/nm-online.html#exit_status">
+<ANCHOR id="see_also" href="NetworkManager/nm-online.html#see_also">
+<ANCHOR id="NetworkManager.conf" href="NetworkManager/NetworkManager.conf.html">
+<ANCHOR id="device-spec" href="NetworkManager/NetworkManager.conf.html#device-spec">
+<ANCHOR id="nm-settings" href="NetworkManager/nm-settings.html">
+<ANCHOR id="description" href="NetworkManager/nm-settings.html#description">
+<ANCHOR id="secrets-flags" href="NetworkManager/nm-settings.html#secrets-flags">
+<ANCHOR id="files" href="NetworkManager/nm-settings.html#files">
+<ANCHOR id="see_also" href="NetworkManager/nm-settings.html#see_also">
+<ANCHOR id="nm-settings-keyfile" href="NetworkManager/nm-settings-keyfile.html">
+<ANCHOR id="description" href="NetworkManager/nm-settings-keyfile.html#description">
+<ANCHOR id="file_format" href="NetworkManager/nm-settings-keyfile.html#file_format">
+<ANCHOR id="details" href="NetworkManager/nm-settings-keyfile.html#details">
+<ANCHOR id="secrets-flags" href="NetworkManager/nm-settings-keyfile.html#secrets-flags">
+<ANCHOR id="files" href="NetworkManager/nm-settings-keyfile.html#files">
+<ANCHOR id="see_also" href="NetworkManager/nm-settings-keyfile.html#see_also">
+<ANCHOR id="nm-settings-ifcfg-rh" href="NetworkManager/nm-settings-ifcfg-rh.html">
+<ANCHOR id="description" href="NetworkManager/nm-settings-ifcfg-rh.html#description">
+<ANCHOR id="file_format" href="NetworkManager/nm-settings-ifcfg-rh.html#file_format">
+<ANCHOR id="differences_against_initscripts" href="NetworkManager/nm-settings-ifcfg-rh.html#differences_against_initscripts">
+<ANCHOR id="details" href="NetworkManager/nm-settings-ifcfg-rh.html#details">
+<ANCHOR id="secrets-flags" href="NetworkManager/nm-settings-ifcfg-rh.html#secrets-flags">
+<ANCHOR id="files" href="NetworkManager/nm-settings-ifcfg-rh.html#files">
+<ANCHOR id="see_also" href="NetworkManager/nm-settings-ifcfg-rh.html#see_also">
+<ANCHOR id="nmcli-examples" href="NetworkManager/nmcli-examples.html">
+<ANCHOR id="NetworkManager" href="NetworkManager/NetworkManager.html">
 <ANCHOR id="gdbus-org.freedesktop.NetworkManager" href="NetworkManager/gdbus-org.freedesktop.NetworkManager.html">
 <ANCHOR id="gdbus-interface-org-freedesktop-NetworkManager" href="NetworkManager/gdbus-org.freedesktop.NetworkManager.html#gdbus-interface-org-freedesktop-NetworkManager">
 <ANCHOR id="gdbus-methods-org.freedesktop.NetworkManager" href="NetworkManager/gdbus-org.freedesktop.NetworkManager.html#gdbus-methods-org.freedesktop.NetworkManager">
@@ -422,55 +474,3 @@
 <ANCHOR id="gdbus-method-org-freedesktop-NetworkManager-SecretAgent.CancelGetSecrets" href="NetworkManager/gdbus-org.freedesktop.NetworkManager.SecretAgent.html#gdbus-method-org-freedesktop-NetworkManager-SecretAgent.CancelGetSecrets">
 <ANCHOR id="gdbus-method-org-freedesktop-NetworkManager-SecretAgent.SaveSecrets" href="NetworkManager/gdbus-org.freedesktop.NetworkManager.SecretAgent.html#gdbus-method-org-freedesktop-NetworkManager-SecretAgent.SaveSecrets">
 <ANCHOR id="gdbus-method-org-freedesktop-NetworkManager-SecretAgent.DeleteSecrets" href="NetworkManager/gdbus-org.freedesktop.NetworkManager.SecretAgent.html#gdbus-method-org-freedesktop-NetworkManager-SecretAgent.DeleteSecrets">
-<ANCHOR id="nmcli" href="NetworkManager/nmcli.html">
-<ANCHOR id="synopsis" href="NetworkManager/nmcli.html#synopsis">
-<ANCHOR id="description" href="NetworkManager/nmcli.html#description">
-<ANCHOR id="options" href="NetworkManager/nmcli.html#options">
-<ANCHOR id="general" href="NetworkManager/nmcli.html#general">
-<ANCHOR id="networking" href="NetworkManager/nmcli.html#networking">
-<ANCHOR id="radio" href="NetworkManager/nmcli.html#radio">
-<ANCHOR id="monitor" href="NetworkManager/nmcli.html#monitor">
-<ANCHOR id="connection" href="NetworkManager/nmcli.html#connection">
-<ANCHOR id="device" href="NetworkManager/nmcli.html#device">
-<ANCHOR id="agent" href="NetworkManager/nmcli.html#agent">
-<ANCHOR id="environment_variables" href="NetworkManager/nmcli.html#environment_variables">
-<ANCHOR id="internationalization_notes" href="NetworkManager/nmcli.html#internationalization_notes">
-<ANCHOR id="exit_status" href="NetworkManager/nmcli.html#exit_status">
-<ANCHOR id="examples" href="NetworkManager/nmcli.html#examples">
-<ANCHOR id="notes" href="NetworkManager/nmcli.html#notes">
-<ANCHOR id="bugs" href="NetworkManager/nmcli.html#bugs">
-<ANCHOR id="see_also" href="NetworkManager/nmcli.html#see_also">
-<ANCHOR id="nmtui" href="NetworkManager/nmtui.html">
-<ANCHOR id="synopsis" href="NetworkManager/nmtui.html#synopsis">
-<ANCHOR id="description" href="NetworkManager/nmtui.html#description">
-<ANCHOR id="see_also" href="NetworkManager/nmtui.html#see_also">
-<ANCHOR id="nm-online" href="NetworkManager/nm-online.html">
-<ANCHOR id="synopsis" href="NetworkManager/nm-online.html#synopsis">
-<ANCHOR id="description" href="NetworkManager/nm-online.html#description">
-<ANCHOR id="options" href="NetworkManager/nm-online.html#options">
-<ANCHOR id="exit_status" href="NetworkManager/nm-online.html#exit_status">
-<ANCHOR id="see_also" href="NetworkManager/nm-online.html#see_also">
-<ANCHOR id="NetworkManager" href="NetworkManager/NetworkManager.html">
-<ANCHOR id="NetworkManager.conf" href="NetworkManager/NetworkManager.conf.html">
-<ANCHOR id="device-spec" href="NetworkManager/NetworkManager.conf.html#device-spec">
-<ANCHOR id="nmcli-examples" href="NetworkManager/nmcli-examples.html">
-<ANCHOR id="nm-settings" href="NetworkManager/nm-settings.html">
-<ANCHOR id="description" href="NetworkManager/nm-settings.html#description">
-<ANCHOR id="secrets-flags" href="NetworkManager/nm-settings.html#secrets-flags">
-<ANCHOR id="files" href="NetworkManager/nm-settings.html#files">
-<ANCHOR id="see_also" href="NetworkManager/nm-settings.html#see_also">
-<ANCHOR id="nm-settings-keyfile" href="NetworkManager/nm-settings-keyfile.html">
-<ANCHOR id="description" href="NetworkManager/nm-settings-keyfile.html#description">
-<ANCHOR id="file_format" href="NetworkManager/nm-settings-keyfile.html#file_format">
-<ANCHOR id="details" href="NetworkManager/nm-settings-keyfile.html#details">
-<ANCHOR id="secrets-flags" href="NetworkManager/nm-settings-keyfile.html#secrets-flags">
-<ANCHOR id="files" href="NetworkManager/nm-settings-keyfile.html#files">
-<ANCHOR id="see_also" href="NetworkManager/nm-settings-keyfile.html#see_also">
-<ANCHOR id="nm-settings-ifcfg-rh" href="NetworkManager/nm-settings-ifcfg-rh.html">
-<ANCHOR id="description" href="NetworkManager/nm-settings-ifcfg-rh.html#description">
-<ANCHOR id="file_format" href="NetworkManager/nm-settings-ifcfg-rh.html#file_format">
-<ANCHOR id="differences_against_initscripts" href="NetworkManager/nm-settings-ifcfg-rh.html#differences_against_initscripts">
-<ANCHOR id="details" href="NetworkManager/nm-settings-ifcfg-rh.html#details">
-<ANCHOR id="secrets-flags" href="NetworkManager/nm-settings-ifcfg-rh.html#secrets-flags">
-<ANCHOR id="files" href="NetworkManager/nm-settings-ifcfg-rh.html#files">
-<ANCHOR id="see_also" href="NetworkManager/nm-settings-ifcfg-rh.html#see_also">
diff --git a/docs/api/html/ix01.html b/docs/api/html/ix01.html
index f8e1c9d6..1747da1c 100644
--- a/docs/api/html/ix01.html
+++ b/docs/api/html/ix01.html
@@ -2,11 +2,11 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Index: NetworkManager D-Bus API Reference Manual</title>
+<title>Index: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
-<link rel="up" href="index.html" title="NetworkManager D-Bus API Reference Manual">
-<link rel="prev" href="nm-settings-ifcfg-rh.html" title="nm-settings-ifcfg-rh">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
+<link rel="up" href="index.html" title="NetworkManager Reference Manual">
+<link rel="prev" href="secrets-flags.html" title="Secret flag types">
 <link rel="next" href="license.html" title="Appendix A. License">
 <meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
@@ -16,7 +16,7 @@
 <td width="100%" align="left" class="shortcuts"></td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
-<td><a accesskey="p" href="nm-settings-ifcfg-rh.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="secrets-flags.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="license.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="index">
diff --git a/docs/api/html/license.html b/docs/api/html/license.html
index 85292624..d7ed9e1c 100644
--- a/docs/api/html/license.html
+++ b/docs/api/html/license.html
@@ -2,10 +2,10 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Appendix A. License: NetworkManager D-Bus API Reference Manual</title>
+<title>Appendix A. License: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
-<link rel="up" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
+<link rel="up" href="index.html" title="NetworkManager Reference Manual">
 <link rel="prev" href="ix01.html" title="Index">
 <meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
diff --git a/docs/api/html/manpages.html b/docs/api/html/manpages.html
index 36b8e931..a81ed762 100644
--- a/docs/api/html/manpages.html
+++ b/docs/api/html/manpages.html
@@ -2,11 +2,11 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>UNIX Manual Pages: NetworkManager D-Bus API Reference Manual</title>
+<title>Manual Pages: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
-<link rel="up" href="index.html" title="NetworkManager D-Bus API Reference Manual">
-<link rel="prev" href="secrets-flags.html" title="Secret flag types">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
+<link rel="up" href="index.html" title="NetworkManager Reference Manual">
+<link rel="prev" href="index.html" title="NetworkManager Reference Manual">
 <link rel="next" href="nmcli.html" title="nmcli">
 <meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
@@ -16,12 +16,12 @@
 <td width="100%" align="left" class="shortcuts"></td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
-<td><a accesskey="p" href="secrets-flags.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="index.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="nmcli.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="chapter">
 <div class="titlepage"><div><div><h1 class="title">
-<a name="manpages"></a>UNIX Manual Pages</h1></div></div></div>
+<a name="manpages"></a>Manual Pages</h1></div></div></div>
 <div class="toc"><dl class="toc">
 <dt>
 <span class="refentrytitle"><a href="nmcli.html">nmcli</a></span><span class="refpurpose"> — command-line tool for controlling NetworkManager</span>
@@ -33,15 +33,9 @@
 <span class="refentrytitle"><a href="nm-online.html">nm-online</a></span><span class="refpurpose"> — ask NetworkManager whether the network is connected</span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="NetworkManager.html">NetworkManager</a></span><span class="refpurpose"> — network management daemon</span>
-</dt>
-<dt>
 <span class="refentrytitle"><a href="NetworkManager.conf.html">NetworkManager.conf</a></span><span class="refpurpose"> — NetworkManager configuration file</span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="nmcli-examples.html">nmcli-examples</a></span><span class="refpurpose"> — usage examples of nmcli</span>
-</dt>
-<dt>
 <span class="refentrytitle"><a href="nm-settings.html">nm-settings</a></span><span class="refpurpose"> — Description of settings and properties of NetworkManager connection profiles</span>
 </dt>
 <dt>
@@ -50,6 +44,12 @@
 <dt>
 <span class="refentrytitle"><a href="nm-settings-ifcfg-rh.html">nm-settings-ifcfg-rh</a></span><span class="refpurpose"> — Description of <span class="emphasis"><em>ifcfg-rh</em></span> settings plugin</span>
 </dt>
+<dt>
+<span class="refentrytitle"><a href="nmcli-examples.html">nmcli-examples</a></span><span class="refpurpose"> — usage examples of nmcli</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="NetworkManager.html">NetworkManager</a></span><span class="refpurpose"> — network management daemon</span>
+</dt>
 </dl></div>
 </div>
 <div class="footer">
diff --git a/docs/api/html/nm-online.html b/docs/api/html/nm-online.html
index 90d3ecb5..d2181325 100644
--- a/docs/api/html/nm-online.html
+++ b/docs/api/html/nm-online.html
@@ -2,12 +2,12 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>nm-online: NetworkManager D-Bus API Reference Manual</title>
+<title>nm-online: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
-<link rel="up" href="manpages.html" title="UNIX Manual Pages">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
+<link rel="up" href="manpages.html" title="Manual Pages">
 <link rel="prev" href="nmtui.html" title="nmtui">
-<link rel="next" href="NetworkManager.html" title="NetworkManager">
+<link rel="next" href="NetworkManager.conf.html" title="NetworkManager.conf">
 <meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -17,7 +17,7 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="manpages.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="nmtui.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="NetworkManager.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="NetworkManager.conf.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="nm-online"></a><div class="titlepage"></div>
diff --git a/docs/api/html/nm-settings-ifcfg-rh.html b/docs/api/html/nm-settings-ifcfg-rh.html
index 7323d808..338cd158 100644
--- a/docs/api/html/nm-settings-ifcfg-rh.html
+++ b/docs/api/html/nm-settings-ifcfg-rh.html
@@ -2,12 +2,12 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>nm-settings-ifcfg-rh: NetworkManager D-Bus API Reference Manual</title>
+<title>nm-settings-ifcfg-rh: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
-<link rel="up" href="manpages.html" title="UNIX Manual Pages">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
+<link rel="up" href="manpages.html" title="Manual Pages">
 <link rel="prev" href="nm-settings-keyfile.html" title="nm-settings-keyfile">
-<link rel="next" href="ix01.html" title="Index">
+<link rel="next" href="nmcli-examples.html" title="nmcli-examples">
 <meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -17,7 +17,7 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="manpages.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="nm-settings-keyfile.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="ix01.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="nmcli-examples.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="nm-settings-ifcfg-rh"></a><div class="titlepage"></div>
@@ -249,7 +249,7 @@ DEVICETYPE=TeamPort
           are NetworkManager specific extensions not understood by traditional initscripts.
         </p>
 <div class="table">
-<a name="id-1.4.10.7.3"></a><p class="title"><b>Table 69. 802-1x setting</b></p>
+<a name="id-1.2.8.7.3"></a><p class="title"><b>Table 39. 802-1x setting</b></p>
 <div class="table-contents"><table summary="802-1x setting" border="1">
 <colgroup>
 <col>
@@ -444,7 +444,7 @@ Example: </strong></span>IEEE_8021X_INNER_CLIENT_CERT=/home/joe/mycert.crt</td>
 <td align="left">IEEE_8021X_PASSWORD_FLAGS<span class="emphasis"><em>(+)</em></span>
 </td>
 <td align="left"> </td>
-<td align="left">Password flags for IEEE_8021X_PASSWORD password. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for _FLAGS values)</td>
+<td align="left">Password flags for IEEE_8021X_PASSWORD password. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for _FLAGS values)</td>
 </tr>
 <tr>
 <td align="left">password-raw</td>
@@ -479,7 +479,7 @@ Example: </strong></span>IEEE_8021X_PRIVATE_KEY=/home/joe/mykey.p12</td>
 <td align="left">IEEE_8021X_PRIVATE_KEY_PASSWORD_FLAGS<span class="emphasis"><em>(+)</em></span>
 </td>
 <td align="left"> </td>
-<td align="left">Password flags for IEEE_8021X_PRIVATE_KEY_PASSWORD password. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for _FLAGS values)</td>
+<td align="left">Password flags for IEEE_8021X_PRIVATE_KEY_PASSWORD password. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for _FLAGS values)</td>
 </tr>
 <tr>
 <td align="left">phase2-private-key</td>
@@ -500,7 +500,7 @@ Example: </strong></span>IEEE_8021X_PRIVATE_KEY=/home/joe/mykey.p12</td>
 <td align="left">IEEE_8021X_INNER_PRIVATE_KEY_PASSWORD_FLAGS<span class="emphasis"><em>(+)</em></span>
 </td>
 <td align="left"> </td>
-<td align="left">Password flags for IEEE_8021X_INNER_PRIVATE_KEY_PASSWORD password. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for _FLAGS values)</td>
+<td align="left">Password flags for IEEE_8021X_INNER_PRIVATE_KEY_PASSWORD password. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for _FLAGS values)</td>
 </tr>
 <tr>
 <td align="left">pin</td>
@@ -524,7 +524,7 @@ Example: </strong></span>IEEE_8021X_PRIVATE_KEY=/home/joe/mykey.p12</td>
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.10.7.4"></a><p class="title"><b>Table 70. bond setting</b></p>
+<a name="id-1.2.8.7.4"></a><p class="title"><b>Table 40. bond setting</b></p>
 <div class="table-contents"><table summary="bond setting" border="1">
 <colgroup>
 <col>
@@ -549,7 +549,7 @@ Example: </strong></span>BONDING_OPTS="miimon=100 mode=broadcast"</td>
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.10.7.5"></a><p class="title"><b>Table 71. bridge-port setting</b></p>
+<a name="id-1.2.8.7.5"></a><p class="title"><b>Table 41. bridge-port setting</b></p>
 <div class="table-contents"><table summary="bridge-port setting" border="1">
 <colgroup>
 <col>
@@ -590,7 +590,7 @@ Allowed values: </strong></span>1 - 65535</td>
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.10.7.6"></a><p class="title"><b>Table 72. bridge setting</b></p>
+<a name="id-1.2.8.7.6"></a><p class="title"><b>Table 42. bridge setting</b></p>
 <div class="table-contents"><table summary="bridge setting" border="1">
 <colgroup>
 <col>
@@ -670,7 +670,7 @@ Allowed values: </strong></span>0 or 1</td>
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.10.7.7"></a><p class="title"><b>Table 73. connection setting</b></p>
+<a name="id-1.2.8.7.7"></a><p class="title"><b>Table 43. connection setting</b></p>
 <div class="table-contents"><table summary="connection setting" border="1">
 <colgroup>
 <col>
@@ -809,7 +809,7 @@ Allowed values: </strong></span>boolean value or 'rx'</td>
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.10.7.8"></a><p class="title"><b>Table 74. dcb setting</b></p>
+<a name="id-1.2.8.7.8"></a><p class="title"><b>Table 44. dcb setting</b></p>
 <div class="table-contents"><table summary="dcb setting" border="1">
 <colgroup>
 <col>
@@ -944,7 +944,7 @@ Example: </strong></span>DCB_PG_UP2TC=01623701</td>
           used explicitly to enable DCB so that the rest of the DCB_* variables can apply.
         </p>
 <div class="table">
-<a name="id-1.4.10.7.10"></a><p class="title"><b>Table 75. infiniband setting</b></p>
+<a name="id-1.2.8.7.10"></a><p class="title"><b>Table 45. infiniband setting</b></p>
 <div class="table-contents"><table summary="infiniband setting" border="1">
 <colgroup>
 <col>
@@ -999,7 +999,7 @@ Example: </strong></span>PHYSDEV=ib0</td>
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.10.7.11"></a><p class="title"><b>Table 76. ip-tunnel setting</b></p>
+<a name="id-1.2.8.7.11"></a><p class="title"><b>Table 46. ip-tunnel setting</b></p>
 <div class="table-contents"><table summary="ip-tunnel setting" border="1">
 <colgroup>
 <col>
@@ -1017,7 +1017,7 @@ Example: </strong></span>PHYSDEV=ib0</td>
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.10.7.12"></a><p class="title"><b>Table 77. ipv4 setting</b></p>
+<a name="id-1.2.8.7.12"></a><p class="title"><b>Table 47. ipv4 setting</b></p>
 <div class="table-contents"><table summary="ipv4 setting" border="1">
 <colgroup>
 <col>
@@ -1160,7 +1160,7 @@ Example: </strong></span>DHCP_FQDN=foo.bar.com</td>
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.10.7.13"></a><p class="title"><b>Table 78. ipv6 setting</b></p>
+<a name="id-1.2.8.7.13"></a><p class="title"><b>Table 48. ipv6 setting</b></p>
 <div class="table-contents"><table summary="ipv6 setting" border="1">
 <colgroup>
 <col>
@@ -1280,7 +1280,7 @@ Allowed values: </strong></span>IPV6_ADDR_GEN_MODE: eui64, stable-privacy</td>
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.10.7.14"></a><p class="title"><b>Table 79. macvlan setting</b></p>
+<a name="id-1.2.8.7.14"></a><p class="title"><b>Table 49. macvlan setting</b></p>
 <div class="table-contents"><table summary="macvlan setting" border="1">
 <colgroup>
 <col>
@@ -1298,7 +1298,7 @@ Allowed values: </strong></span>IPV6_ADDR_GEN_MODE: eui64, stable-privacy</td>
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.10.7.15"></a><p class="title"><b>Table 80. team-port setting</b></p>
+<a name="id-1.2.8.7.15"></a><p class="title"><b>Table 50. team-port setting</b></p>
 <div class="table-contents"><table summary="team-port setting" border="1">
 <colgroup>
 <col>
@@ -1321,7 +1321,7 @@ Allowed values: </strong></span>IPV6_ADDR_GEN_MODE: eui64, stable-privacy</td>
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.10.7.16"></a><p class="title"><b>Table 81. team setting</b></p>
+<a name="id-1.2.8.7.16"></a><p class="title"><b>Table 51. team setting</b></p>
 <div class="table-contents"><table summary="team setting" border="1">
 <colgroup>
 <col>
@@ -1344,7 +1344,7 @@ Allowed values: </strong></span>IPV6_ADDR_GEN_MODE: eui64, stable-privacy</td>
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.10.7.17"></a><p class="title"><b>Table 82. tun setting</b></p>
+<a name="id-1.2.8.7.17"></a><p class="title"><b>Table 52. tun setting</b></p>
 <div class="table-contents"><table summary="tun setting" border="1">
 <colgroup>
 <col>
@@ -1362,7 +1362,7 @@ Allowed values: </strong></span>IPV6_ADDR_GEN_MODE: eui64, stable-privacy</td>
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.10.7.18"></a><p class="title"><b>Table 83. vlan setting</b></p>
+<a name="id-1.2.8.7.18"></a><p class="title"><b>Table 53. vlan setting</b></p>
 <div class="table-contents"><table summary="vlan setting" border="1">
 <colgroup>
 <col>
@@ -1425,7 +1425,7 @@ Example: </strong></span>PHYSDEV=eth0, VLAN_ID=12; or DEVICE=eth0.12</td>
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.10.7.19"></a><p class="title"><b>Table 84. vxlan setting</b></p>
+<a name="id-1.2.8.7.19"></a><p class="title"><b>Table 54. vxlan setting</b></p>
 <div class="table-contents"><table summary="vxlan setting" border="1">
 <colgroup>
 <col>
@@ -1443,7 +1443,7 @@ Example: </strong></span>PHYSDEV=eth0, VLAN_ID=12; or DEVICE=eth0.12</td>
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.10.7.20"></a><p class="title"><b>Table 85. 802-3-ethernet setting</b></p>
+<a name="id-1.2.8.7.20"></a><p class="title"><b>Table 55. 802-3-ethernet setting</b></p>
 <div class="table-contents"><table summary="802-3-ethernet setting" border="1">
 <colgroup>
 <col>
@@ -1537,7 +1537,7 @@ Allowed values: </strong></span>"qeth", "lcs" or "ctc"</td>
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.10.7.21"></a><p class="title"><b>Table 86. 802-11-wireless-security setting</b></p>
+<a name="id-1.2.8.7.21"></a><p class="title"><b>Table 56. 802-11-wireless-security setting</b></p>
 <div class="table-contents"><table summary="802-11-wireless-security setting" border="1">
 <colgroup>
 <col>
@@ -1645,7 +1645,7 @@ Allowed values: </strong></span>CCMP, TKIP, WEP40, WEP104</td>
 <td align="left">WEP_KEY_FLAGS<span class="emphasis"><em>(+)</em></span>
 </td>
 <td align="left"> </td>
-<td align="left">Password flags for KEY&lt;i&gt;, KEY_PASSPHRASE&lt;i&gt; password. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for _FLAGS values)</td>
+<td align="left">Password flags for KEY&lt;i&gt;, KEY_PASSPHRASE&lt;i&gt; password. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for _FLAGS values)</td>
 </tr>
 <tr>
 <td align="left">psk</td>
@@ -1658,7 +1658,7 @@ Allowed values: </strong></span>CCMP, TKIP, WEP40, WEP104</td>
 <td align="left">WPA_PSK_FLAGS<span class="emphasis"><em>(+)</em></span>
 </td>
 <td align="left"> </td>
-<td align="left">Password flags for WPA_PSK_FLAGS. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for _FLAGS values)<span class="bold"><strong>
+<td align="left">Password flags for WPA_PSK_FLAGS. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for _FLAGS values)<span class="bold"><strong>
 
 Example: </strong></span>WPA_PSK_FLAGS=user</td>
 </tr>
@@ -1674,7 +1674,7 @@ Example: </strong></span>WPA_PSK_FLAGS=user</td>
 <td align="left">IEEE_8021X_PASSWORD_FLAGS<span class="emphasis"><em>(+)</em></span>
 </td>
 <td align="left"> </td>
-<td align="left">Password flags for IEEE_8021X_PASSWORD_FLAGS. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for _FLAGS values)</td>
+<td align="left">Password flags for IEEE_8021X_PASSWORD_FLAGS. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for _FLAGS values)</td>
 </tr>
 <tr>
 <td align="left">wep-key-type</td>
@@ -1689,7 +1689,7 @@ Example: </strong></span>KEY1=s:ahoj, KEY1=0a1c45bc02, KEY_PASSPHRASE1=mysuperse
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.10.7.22"></a><p class="title"><b>Table 87. 802-11-wireless setting</b></p>
+<a name="id-1.2.8.7.22"></a><p class="title"><b>Table 57. 802-11-wireless setting</b></p>
 <div class="table-contents"><table summary="802-11-wireless setting" border="1">
 <colgroup>
 <col>
diff --git a/docs/api/html/nm-settings-keyfile.html b/docs/api/html/nm-settings-keyfile.html
index 428f8bd2..24188009 100644
--- a/docs/api/html/nm-settings-keyfile.html
+++ b/docs/api/html/nm-settings-keyfile.html
@@ -2,10 +2,10 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>nm-settings-keyfile: NetworkManager D-Bus API Reference Manual</title>
+<title>nm-settings-keyfile: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
-<link rel="up" href="manpages.html" title="UNIX Manual Pages">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
+<link rel="up" href="manpages.html" title="Manual Pages">
 <link rel="prev" href="nm-settings.html" title="nm-settings">
 <link rel="next" href="nm-settings-ifcfg-rh.html" title="nm-settings-ifcfg-rh">
 <meta name="generator" content="GTK-Doc V1.24 (XML mode)">
@@ -188,7 +188,7 @@ id=4
 <tr><td>802-11-wireless-security  =  wifi-security</td></tr>
 </table>
 <div class="table">
-<a name="id-1.4.9.6.4"></a><p class="title"><b>Table 61. bridge setting (section)</b></p>
+<a name="id-1.2.7.6.4"></a><p class="title"><b>Table 31. bridge setting (section)</b></p>
 <div class="table-contents"><table summary="bridge setting (section)" border="1">
 <colgroup>
 <col>
@@ -213,7 +213,7 @@ Example: </strong></span>mac-address=00:22:68:12:79:A2 mac-address=0;34;104;18;1
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.9.6.5"></a><p class="title"><b>Table 62. infiniband setting (section)</b></p>
+<a name="id-1.2.7.6.5"></a><p class="title"><b>Table 32. infiniband setting (section)</b></p>
 <div class="table-contents"><table summary="infiniband setting (section)" border="1">
 <colgroup>
 <col>
@@ -238,7 +238,7 @@ Example: </strong></span>mac-address= 80:00:00:6d:fe:80:00:00:00:00:00:00:00:02:
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.9.6.6"></a><p class="title"><b>Table 63. ipv4 setting (section)</b></p>
+<a name="id-1.2.7.6.6"></a><p class="title"><b>Table 33. ipv4 setting (section)</b></p>
 <div class="table-contents"><table summary="ipv4 setting (section)" border="1">
 <colgroup>
 <col>
@@ -289,7 +289,7 @@ Example: </strong></span>route1=8.8.8.0/24,10.1.1.1,77 route2=7.7.0.0/16</td>
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.9.6.7"></a><p class="title"><b>Table 64. ipv6 setting (section)</b></p>
+<a name="id-1.2.7.6.7"></a><p class="title"><b>Table 34. ipv6 setting (section)</b></p>
 <div class="table-contents"><table summary="ipv6 setting (section)" border="1">
 <colgroup>
 <col>
@@ -340,7 +340,7 @@ Example: </strong></span>route1=2001:4860:4860::/64,2620:52:0:2219:222:68ff:fe11
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.9.6.8"></a><p class="title"><b>Table 65. serial setting (section)</b></p>
+<a name="id-1.2.7.6.8"></a><p class="title"><b>Table 35. serial setting (section)</b></p>
 <div class="table-contents"><table summary="serial setting (section)" border="1">
 <colgroup>
 <col>
@@ -365,7 +365,7 @@ Example: </strong></span>parity=n</td>
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.9.6.9"></a><p class="title"><b>Table 66. vpn setting (section)</b></p>
+<a name="id-1.2.7.6.9"></a><p class="title"><b>Table 36. vpn setting (section)</b></p>
 <div class="table-contents"><table summary="vpn setting (section)" border="1">
 <colgroup>
 <col>
@@ -400,7 +400,7 @@ Example: </strong></span>password=Popocatepetl</td>
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.9.6.10"></a><p class="title"><b>Table 67. 802-3-ethernet setting (section)</b></p>
+<a name="id-1.2.7.6.10"></a><p class="title"><b>Table 37. 802-3-ethernet setting (section)</b></p>
 <div class="table-contents"><table summary="802-3-ethernet setting (section)" border="1">
 <colgroup>
 <col>
@@ -439,7 +439,7 @@ Example: </strong></span>mac-address-blacklist= 00:22:68:12:79:A6;00:22:68:12:79
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.9.6.11"></a><p class="title"><b>Table 68. 802-11-wireless setting (section)</b></p>
+<a name="id-1.2.7.6.11"></a><p class="title"><b>Table 38. 802-11-wireless setting (section)</b></p>
 <div class="table-contents"><table summary="802-11-wireless setting (section)" border="1">
 <colgroup>
 <col>
diff --git a/docs/api/html/nm-settings.html b/docs/api/html/nm-settings.html
index 3a540262..9077d8e3 100644
--- a/docs/api/html/nm-settings.html
+++ b/docs/api/html/nm-settings.html
@@ -2,11 +2,11 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>nm-settings: NetworkManager D-Bus API Reference Manual</title>
+<title>nm-settings: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
-<link rel="up" href="manpages.html" title="UNIX Manual Pages">
-<link rel="prev" href="nmcli-examples.html" title="nmcli-examples">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
+<link rel="up" href="manpages.html" title="Manual Pages">
+<link rel="prev" href="NetworkManager.conf.html" title="NetworkManager.conf">
 <link rel="next" href="nm-settings-keyfile.html" title="nm-settings-keyfile">
 <meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
@@ -16,7 +16,7 @@
 <td width="100%" align="left" class="shortcuts"></td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="manpages.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="nmcli-examples.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="NetworkManager.conf.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="nm-settings-keyfile.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
@@ -94,7 +94,7 @@
 </table>
 </div>
 <div class="table">
-<a name="id-1.4.8.4.3"></a><p class="title"><b>Table 31. 802-1x setting</b></p>
+<a name="id-1.2.6.4.3"></a><p class="title"><b>Table 1. 802-1x setting</b></p>
 <div class="table-contents"><table summary="802-1x setting" border="1">
 <colgroup>
 <col>
@@ -179,7 +179,7 @@
 <td align="left">password-flags</td>
 <td align="left">NMSettingSecretFlags (uint32)</td>
 <td align="left"> </td>
-<td>Flags indicating how to handle the "password" property. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td>
+<td>Flags indicating how to handle the "password" property. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td>
 </tr>
 <tr>
 <td align="left">password-raw</td>
@@ -191,7 +191,7 @@
 <td align="left">password-raw-flags</td>
 <td align="left">NMSettingSecretFlags (uint32)</td>
 <td align="left"> </td>
-<td>Flags indicating how to handle the "password-raw" property. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td>
+<td>Flags indicating how to handle the "password-raw" property. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td>
 </tr>
 <tr>
 <td align="left">phase1-fast-provisioning</td>
@@ -269,7 +269,7 @@
 <td align="left">phase2-private-key-password-flags</td>
 <td align="left">NMSettingSecretFlags (uint32)</td>
 <td align="left"> </td>
-<td>Flags indicating how to handle the "phase2-private-key-password" property. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td>
+<td>Flags indicating how to handle the "phase2-private-key-password" property. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td>
 </tr>
 <tr>
 <td align="left">phase2-subject-match</td>
@@ -287,7 +287,7 @@
 <td align="left">pin-flags</td>
 <td align="left">NMSettingSecretFlags (uint32)</td>
 <td align="left"> </td>
-<td>Flags indicating how to handle the "pin" property. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td>
+<td>Flags indicating how to handle the "pin" property. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td>
 </tr>
 <tr>
 <td align="left">private-key</td>
@@ -305,7 +305,7 @@
 <td align="left">private-key-password-flags</td>
 <td align="left">NMSettingSecretFlags (uint32)</td>
 <td align="left"> </td>
-<td>Flags indicating how to handle the "private-key-password" property. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td>
+<td>Flags indicating how to handle the "private-key-password" property. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td>
 </tr>
 <tr>
 <td align="left">subject-match</td>
@@ -323,7 +323,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.4"></a><p class="title"><b>Table 32. adsl setting</b></p>
+<a name="id-1.2.6.4.4"></a><p class="title"><b>Table 2. adsl setting</b></p>
 <div class="table-contents"><table summary="adsl setting" border="1">
 <colgroup>
 <col>
@@ -360,7 +360,7 @@
 <td align="left">password-flags</td>
 <td align="left">NMSettingSecretFlags (uint32)</td>
 <td align="left"> </td>
-<td>Flags indicating how to handle the "password" property. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td>
+<td>Flags indicating how to handle the "password" property. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td>
 </tr>
 <tr>
 <td align="left">protocol</td>
@@ -390,7 +390,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.5"></a><p class="title"><b>Table 33. bluetooth setting</b></p>
+<a name="id-1.2.6.4.5"></a><p class="title"><b>Table 3. bluetooth setting</b></p>
 <div class="table-contents"><table summary="bluetooth setting" border="1">
 <colgroup>
 <col>
@@ -427,7 +427,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.6"></a><p class="title"><b>Table 34. bond setting</b></p>
+<a name="id-1.2.6.4.6"></a><p class="title"><b>Table 4. bond setting</b></p>
 <div class="table-contents"><table summary="bond setting" border="1">
 <colgroup>
 <col>
@@ -464,7 +464,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.7"></a><p class="title"><b>Table 35. bridge setting</b></p>
+<a name="id-1.2.6.4.7"></a><p class="title"><b>Table 5. bridge setting</b></p>
 <div class="table-contents"><table summary="bridge setting" border="1">
 <colgroup>
 <col>
@@ -543,7 +543,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.8"></a><p class="title"><b>Table 36. bridge-port setting</b></p>
+<a name="id-1.2.6.4.8"></a><p class="title"><b>Table 6. bridge-port setting</b></p>
 <div class="table-contents"><table summary="bridge-port setting" border="1">
 <colgroup>
 <col>
@@ -586,7 +586,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.9"></a><p class="title"><b>Table 37. cdma setting</b></p>
+<a name="id-1.2.6.4.9"></a><p class="title"><b>Table 7. cdma setting</b></p>
 <div class="table-contents"><table summary="cdma setting" border="1">
 <colgroup>
 <col>
@@ -623,7 +623,7 @@
 <td align="left">password-flags</td>
 <td align="left">NMSettingSecretFlags (uint32)</td>
 <td align="left"> </td>
-<td>Flags indicating how to handle the "password" property. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td>
+<td>Flags indicating how to handle the "password" property. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td>
 </tr>
 <tr>
 <td align="left">username</td>
@@ -635,7 +635,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.10"></a><p class="title"><b>Table 38. connection setting</b></p>
+<a name="id-1.2.6.4.10"></a><p class="title"><b>Table 8. connection setting</b></p>
 <div class="table-contents"><table summary="connection setting" border="1">
 <colgroup>
 <col>
@@ -762,7 +762,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.11"></a><p class="title"><b>Table 39. dcb setting</b></p>
+<a name="id-1.2.6.4.11"></a><p class="title"><b>Table 9. dcb setting</b></p>
 <div class="table-contents"><table summary="dcb setting" border="1">
 <colgroup>
 <col>
@@ -877,7 +877,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.12"></a><p class="title"><b>Table 40. generic setting</b></p>
+<a name="id-1.2.6.4.12"></a><p class="title"><b>Table 10. generic setting</b></p>
 <div class="table-contents"><table summary="generic setting" border="1">
 <colgroup>
 <col>
@@ -900,7 +900,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.13"></a><p class="title"><b>Table 41. gsm setting</b></p>
+<a name="id-1.2.6.4.13"></a><p class="title"><b>Table 11. gsm setting</b></p>
 <div class="table-contents"><table summary="gsm setting" border="1">
 <colgroup>
 <col>
@@ -961,7 +961,7 @@
 <td align="left">password-flags</td>
 <td align="left">NMSettingSecretFlags (uint32)</td>
 <td align="left"> </td>
-<td>Flags indicating how to handle the "password" property. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td>
+<td>Flags indicating how to handle the "password" property. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td>
 </tr>
 <tr>
 <td align="left">pin</td>
@@ -973,7 +973,7 @@
 <td align="left">pin-flags</td>
 <td align="left">NMSettingSecretFlags (uint32)</td>
 <td align="left"> </td>
-<td>Flags indicating how to handle the "pin" property. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td>
+<td>Flags indicating how to handle the "pin" property. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td>
 </tr>
 <tr>
 <td align="left">sim-id</td>
@@ -997,7 +997,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.14"></a><p class="title"><b>Table 42. infiniband setting</b></p>
+<a name="id-1.2.6.4.14"></a><p class="title"><b>Table 12. infiniband setting</b></p>
 <div class="table-contents"><table summary="infiniband setting" border="1">
 <colgroup>
 <col>
@@ -1052,7 +1052,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.15"></a><p class="title"><b>Table 43. ipv4 setting</b></p>
+<a name="id-1.2.6.4.15"></a><p class="title"><b>Table 13. ipv4 setting</b></p>
 <div class="table-contents"><table summary="ipv4 setting" border="1">
 <colgroup>
 <col>
@@ -1197,7 +1197,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.16"></a><p class="title"><b>Table 44. ipv6 setting</b></p>
+<a name="id-1.2.6.4.16"></a><p class="title"><b>Table 14. ipv6 setting</b></p>
 <div class="table-contents"><table summary="ipv6 setting" border="1">
 <colgroup>
 <col>
@@ -1342,7 +1342,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.17"></a><p class="title"><b>Table 45. ip-tunnel setting</b></p>
+<a name="id-1.2.6.4.17"></a><p class="title"><b>Table 15. ip-tunnel setting</b></p>
 <div class="table-contents"><table summary="ip-tunnel setting" border="1">
 <colgroup>
 <col>
@@ -1439,7 +1439,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.18"></a><p class="title"><b>Table 46. macvlan setting</b></p>
+<a name="id-1.2.6.4.18"></a><p class="title"><b>Table 16. macvlan setting</b></p>
 <div class="table-contents"><table summary="macvlan setting" border="1">
 <colgroup>
 <col>
@@ -1488,7 +1488,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.19"></a><p class="title"><b>Table 47. 802-11-olpc-mesh setting</b></p>
+<a name="id-1.2.6.4.19"></a><p class="title"><b>Table 17. 802-11-olpc-mesh setting</b></p>
 <div class="table-contents"><table summary="802-11-olpc-mesh setting" border="1">
 <colgroup>
 <col>
@@ -1531,7 +1531,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.20"></a><p class="title"><b>Table 48. ppp setting</b></p>
+<a name="id-1.2.6.4.20"></a><p class="title"><b>Table 18. ppp setting</b></p>
 <div class="table-contents"><table summary="ppp setting" border="1">
 <colgroup>
 <col>
@@ -1664,7 +1664,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.21"></a><p class="title"><b>Table 49. pppoe setting</b></p>
+<a name="id-1.2.6.4.21"></a><p class="title"><b>Table 19. pppoe setting</b></p>
 <div class="table-contents"><table summary="pppoe setting" border="1">
 <colgroup>
 <col>
@@ -1695,7 +1695,7 @@
 <td align="left">password-flags</td>
 <td align="left">NMSettingSecretFlags (uint32)</td>
 <td align="left"> </td>
-<td>Flags indicating how to handle the "password" property. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td>
+<td>Flags indicating how to handle the "password" property. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td>
 </tr>
 <tr>
 <td align="left">service</td>
@@ -1713,7 +1713,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.22"></a><p class="title"><b>Table 50. serial setting</b></p>
+<a name="id-1.2.6.4.22"></a><p class="title"><b>Table 20. serial setting</b></p>
 <div class="table-contents"><table summary="serial setting" border="1">
 <colgroup>
 <col>
@@ -1768,7 +1768,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.23"></a><p class="title"><b>Table 51. team setting</b></p>
+<a name="id-1.2.6.4.23"></a><p class="title"><b>Table 21. team setting</b></p>
 <div class="table-contents"><table summary="team setting" border="1">
 <colgroup>
 <col>
@@ -1805,7 +1805,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.24"></a><p class="title"><b>Table 52. team-port setting</b></p>
+<a name="id-1.2.6.4.24"></a><p class="title"><b>Table 22. team-port setting</b></p>
 <div class="table-contents"><table summary="team-port setting" border="1">
 <colgroup>
 <col>
@@ -1836,7 +1836,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.25"></a><p class="title"><b>Table 53. tun setting</b></p>
+<a name="id-1.2.6.4.25"></a><p class="title"><b>Table 23. tun setting</b></p>
 <div class="table-contents"><table summary="tun setting" border="1">
 <colgroup>
 <col>
@@ -1897,7 +1897,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.26"></a><p class="title"><b>Table 54. vlan setting</b></p>
+<a name="id-1.2.6.4.26"></a><p class="title"><b>Table 24. vlan setting</b></p>
 <div class="table-contents"><table summary="vlan setting" border="1">
 <colgroup>
 <col>
@@ -1958,7 +1958,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.27"></a><p class="title"><b>Table 55. vpn setting</b></p>
+<a name="id-1.2.6.4.27"></a><p class="title"><b>Table 25. vpn setting</b></p>
 <div class="table-contents"><table summary="vpn setting" border="1">
 <colgroup>
 <col>
@@ -2019,7 +2019,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.28"></a><p class="title"><b>Table 56. vxlan setting</b></p>
+<a name="id-1.2.6.4.28"></a><p class="title"><b>Table 26. vxlan setting</b></p>
 <div class="table-contents"><table summary="vxlan setting" border="1">
 <colgroup>
 <col>
@@ -2140,7 +2140,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.29"></a><p class="title"><b>Table 57. wimax setting</b></p>
+<a name="id-1.2.6.4.29"></a><p class="title"><b>Table 27. wimax setting</b></p>
 <div class="table-contents"><table summary="wimax setting" border="1">
 <colgroup>
 <col>
@@ -2177,7 +2177,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.30"></a><p class="title"><b>Table 58. 802-3-ethernet setting</b></p>
+<a name="id-1.2.6.4.30"></a><p class="title"><b>Table 28. 802-3-ethernet setting</b></p>
 <div class="table-contents"><table summary="802-3-ethernet setting" border="1">
 <colgroup>
 <col>
@@ -2280,7 +2280,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.31"></a><p class="title"><b>Table 59. 802-11-wireless setting</b></p>
+<a name="id-1.2.6.4.31"></a><p class="title"><b>Table 29. 802-11-wireless setting</b></p>
 <div class="table-contents"><table summary="802-11-wireless setting" border="1">
 <colgroup>
 <col>
@@ -2401,7 +2401,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id-1.4.8.4.32"></a><p class="title"><b>Table 60. 802-11-wireless-security setting</b></p>
+<a name="id-1.2.6.4.32"></a><p class="title"><b>Table 30. 802-11-wireless-security setting</b></p>
 <div class="table-contents"><table summary="802-11-wireless-security setting" border="1">
 <colgroup>
 <col>
@@ -2444,7 +2444,7 @@
 <td align="left">leap-password-flags</td>
 <td align="left">NMSettingSecretFlags (uint32)</td>
 <td align="left"> </td>
-<td>Flags indicating how to handle the "leap-password" property. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td>
+<td>Flags indicating how to handle the "leap-password" property. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td>
 </tr>
 <tr>
 <td align="left">leap-username</td>
@@ -2480,13 +2480,13 @@
 <td align="left">psk-flags</td>
 <td align="left">NMSettingSecretFlags (uint32)</td>
 <td align="left"> </td>
-<td>Flags indicating how to handle the "psk" property. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td>
+<td>Flags indicating how to handle the "psk" property. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td>
 </tr>
 <tr>
 <td align="left">wep-key-flags</td>
 <td align="left">NMSettingSecretFlags (uint32)</td>
 <td align="left"> </td>
-<td>Flags indicating how to handle the "wep-key0", "wep-key1", "wep-key2", and "wep-key3" properties. (see <a class="xref" href="secrets-flags.html" title="Secret flag types">the section called “Secret flag types”</a> for flag values)</td>
+<td>Flags indicating how to handle the "wep-key0", "wep-key1", "wep-key2", and "wep-key3" properties. (see <a class="xref" href="nm-settings.html#secrets-flags" title="Secret flag types:">the section called “Secret flag types:”</a> for flag values)</td>
 </tr>
 <tr>
 <td align="left">wep-key-type</td>
diff --git a/docs/api/html/nmcli-examples.html b/docs/api/html/nmcli-examples.html
index e903cd68..3e9d0b52 100644
--- a/docs/api/html/nmcli-examples.html
+++ b/docs/api/html/nmcli-examples.html
@@ -2,12 +2,12 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>nmcli-examples: NetworkManager D-Bus API Reference Manual</title>
+<title>nmcli-examples: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
-<link rel="up" href="manpages.html" title="UNIX Manual Pages">
-<link rel="prev" href="NetworkManager.conf.html" title="NetworkManager.conf">
-<link rel="next" href="nm-settings.html" title="nm-settings">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
+<link rel="up" href="manpages.html" title="Manual Pages">
+<link rel="prev" href="nm-settings-ifcfg-rh.html" title="nm-settings-ifcfg-rh">
+<link rel="next" href="NetworkManager.html" title="NetworkManager">
 <meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -16,8 +16,8 @@
 <td width="100%" align="left" class="shortcuts"></td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="manpages.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="NetworkManager.conf.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="nm-settings.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="nm-settings-ifcfg-rh.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="NetworkManager.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="nmcli-examples"></a><div class="titlepage"></div>
@@ -30,10 +30,10 @@
 </tr></table></div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
-<div class="cmdsynopsis"><p><code class="command">nmcli [OPTIONS...]</code> </p></div>
+<div class="cmdsynopsis"><p><code class="command">nmcli</code>  [OPTIONS...]</p></div>
 </div>
 <div class="refsect1">
-<a name="id-1.4.7.5"></a><h2>Description</h2>
+<a name="id-1.2.9.5"></a><h2>Description</h2>
 <p>
       <span class="emphasis"><em>nmcli</em></span> is a command-line client for NetworkManager. It
       allows controlling NetworkManager and reporting its status. For more information
@@ -44,14 +44,13 @@
       The purpose of this manual page is to provide you with various examples and
       usage scenarios of <span class="emphasis"><em>nmcli</em></span>.
     </p>
-<p>Note: this page has "work-in-progress" status.</p>
 </div>
 <div class="refsect1">
-<a name="id-1.4.7.6"></a><h2>Examples</h2>
+<a name="id-1.2.9.6"></a><h2>Examples</h2>
 <div class="example">
-<a name="id-1.4.7.6.2"></a><p class="title"><b>Example 1. Listing available Wi-Fi APs</b></p>
+<a name="id-1.2.9.6.2"></a><p class="title"><b>Example 1. Listing available Wi-Fi APs</b></p>
 <div class="example-contents">
-<pre class="screen"><strong class="userinput"><code>$ nmcli device wifi list</code></strong>
+<pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>nmcli device wifi list</code></strong>
 *  SSID               MODE    CHAN  RATE       SIGNAL  BARS  SECURITY
    netdatacomm_local  Infra   6     54 Mbit/s  37      ▂▄__  WEP
 *  F1                 Infra   11    54 Mbit/s  98      ▂▄▆█  WPA1
@@ -72,9 +71,9 @@
 </div>
 </div>
 <br class="example-break"><div class="example">
-<a name="id-1.4.7.6.3"></a><p class="title"><b>Example 2. Showing general information and properties for a Wi-Fi interface</b></p>
+<a name="id-1.2.9.6.3"></a><p class="title"><b>Example 2. Showing general information and properties for a Wi-Fi interface</b></p>
 <div class="example-contents">
-<pre class="screen"><strong class="userinput"><code>$ nmcli -p -f general,wifi-properties device show wlan0</code></strong>
+<pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>nmcli -p -f general,wifi-properties device show wlan0</code></strong>
 ===========================================================================
                         Device details (wlan0)
 ===========================================================================
@@ -114,9 +113,9 @@ WIFI-PROPERTIES.ADHOC:    yes
 </div>
 </div>
 <br class="example-break"><div class="example">
-<a name="id-1.4.7.6.4"></a><p class="title"><b>Example 3. Listing NetworkManager polkit permissions</b></p>
+<a name="id-1.2.9.6.4"></a><p class="title"><b>Example 3. Listing NetworkManager polkit permissions</b></p>
 <div class="example-contents">
-<pre class="screen"><strong class="userinput"><code>$ nmcli general permissions</code></strong>
+<pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>nmcli general permissions</code></strong>
 PERMISSION                                                VALUE
 org.freedesktop.NetworkManager.enable-disable-network     yes
 org.freedesktop.NetworkManager.enable-disable-wifi        yes
@@ -145,9 +144,9 @@ org.freedesktop.NetworkManager.settings.modify.hostname   auth</pre>
 </div>
 </div>
 <br class="example-break"><div class="example">
-<a name="id-1.4.7.6.5"></a><p class="title"><b>Example 4. Listing NetworkManager log level and domains</b></p>
+<a name="id-1.2.9.6.5"></a><p class="title"><b>Example 4. Listing NetworkManager log level and domains</b></p>
 <div class="example-contents">
-<pre class="screen"><strong class="userinput"><code>$ nmcli general logging</code></strong>
+<pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>nmcli general logging</code></strong>
 LEVEL  DOMAINS
 INFO   PLATFORM,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,WIFI_SCAN,IP4,IP6,A
 UTOIP4,DNS,VPN,SHARING,SUPPLICANT,AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC,
@@ -159,10 +158,10 @@ B,DISPATCH</pre>
 </div>
 </div>
 <br class="example-break"><div class="example">
-<a name="id-1.4.7.6.6"></a><p class="title"><b>Example 5. Changing NetworkManager logging</b></p>
+<a name="id-1.2.9.6.6"></a><p class="title"><b>Example 5. Changing NetworkManager logging</b></p>
 <div class="example-contents">
-<pre class="screen"><strong class="userinput"><code>$ nmcli g log level DEBUG domains CORE,ETHER,IP</code></strong>
-<strong class="userinput"><code>$ nmcli g log level INFO domains DEFAULT</code></strong></pre>
+<pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>nmcli g log level DEBUG domains CORE,ETHER,IP</code></strong>
+<code class="prompt">$ </code><strong class="userinput"><code>nmcli g log level INFO domains DEFAULT</code></strong></pre>
 <p>
         The first command makes NetworkManager log in DEBUG level, and only for CORE, ETHER and
         IP domains. The second command restores the default logging state. Please refer to the
@@ -172,11 +171,11 @@ B,DISPATCH</pre>
 </div>
 </div>
 <br class="example-break"><div class="example">
-<a name="id-1.4.7.6.7"></a><p class="title"><b>Example 6. Adding a bonding master and two slave connection profiles</b></p>
+<a name="id-1.2.9.6.7"></a><p class="title"><b>Example 6. Adding a bonding master and two slave connection profiles</b></p>
 <div class="example-contents">
-<pre class="screen"><strong class="userinput"><code>$ nmcli con add type bond ifname mybond0 mode active-backup</code></strong>
-<strong class="userinput"><code>$ nmcli con add type ethernet ifname eth1 master mybond0</code></strong>
-<strong class="userinput"><code>$ nmcli con add type ethernet ifname eth2 master mybond0</code></strong></pre>
+<pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>nmcli con add type bond ifname mybond0 mode active-backup</code></strong>
+<code class="prompt">$ </code><strong class="userinput"><code>nmcli con add type ethernet ifname eth1 master mybond0</code></strong>
+<code class="prompt">$ </code><strong class="userinput"><code>nmcli con add type ethernet ifname eth2 master mybond0</code></strong></pre>
 <p>
         This example demonstrates adding a bond master connection and two slaves. The
         first command adds a master bond connection, naming the bonding interface
@@ -188,11 +187,11 @@ B,DISPATCH</pre>
 </div>
 </div>
 <br class="example-break"><div class="example">
-<a name="id-1.4.7.6.8"></a><p class="title"><b>Example 7. Adding a team master and two slave connection profiles</b></p>
+<a name="id-1.2.9.6.8"></a><p class="title"><b>Example 7. Adding a team master and two slave connection profiles</b></p>
 <div class="example-contents">
-<pre class="screen"><strong class="userinput"><code>$ nmcli con add type team con-name Team1 ifname Team1 config team1-master-json.conf</code></strong>
-<strong class="userinput"><code>$ nmcli con add type ethernet con-name Team1-slave1 ifname em1 master Team1</code></strong>
-<strong class="userinput"><code>$ nmcli con add type ethernet con-name Team1-slave2 ifname em2 master Team1</code></strong></pre>
+<pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>nmcli con add type team con-name Team1 ifname Team1 config team1-master-json.conf</code></strong>
+<code class="prompt">$ </code><strong class="userinput"><code>nmcli con add type ethernet con-name Team1-slave1 ifname em1 master Team1</code></strong>
+<code class="prompt">$ </code><strong class="userinput"><code>nmcli con add type ethernet con-name Team1-slave2 ifname em2 master Team1</code></strong></pre>
 <p>
         This example demonstrates adding a team master connection profile and two slaves. It is
         very similar to the bonding example. The first command adds a master team profile, naming
@@ -206,8 +205,8 @@ B,DISPATCH</pre>
         <span class="emphasis"><em>teamd</em></span> will use its default configuration. You will activate the whole setup
         by activating both slaves:
 </p>
-<pre class="screen">  <strong class="userinput"><code>$ nmcli con up Team1-slave1</code></strong>
-  <strong class="userinput"><code>$ nmcli con up Team1-slave2</code></strong></pre>
+<pre class="screen">  <code class="prompt">$ </code><strong class="userinput"><code>nmcli con up Team1-slave1</code></strong>
+  <code class="prompt">$ </code><strong class="userinput"><code>nmcli con up Team1-slave2</code></strong></pre>
 <p>
         By default, the created profiles are marked for auto-activation. But if another
         connection has been activated on the device, the new profile won't activate
@@ -216,12 +215,12 @@ B,DISPATCH</pre>
 </div>
 </div>
 <br class="example-break"><div class="example">
-<a name="id-1.4.7.6.9"></a><p class="title"><b>Example 8. Adding a bridge and two slave profiles</b></p>
+<a name="id-1.2.9.6.9"></a><p class="title"><b>Example 8. Adding a bridge and two slave profiles</b></p>
 <div class="example-contents">
-<pre class="screen"><strong class="userinput"><code>$ nmcli con add type bridge con-name TowerBridge ifname TowerBridge</code></strong>
-<strong class="userinput"><code>$ nmcli con add type ethernet con-name br-slave-1 ifname ens3 master TowerBridge</code></strong>
-<strong class="userinput"><code>$ nmcli con add type ethernet con-name br-slave-2 ifname ens4 master TowerBridge</code></strong>
-<strong class="userinput"><code>$ nmcli con modify TowerBridge bridge.stp no</code></strong></pre>
+<pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>nmcli con add type bridge con-name TowerBridge ifname TowerBridge</code></strong>
+<code class="prompt">$ </code><strong class="userinput"><code>nmcli con add type ethernet con-name br-slave-1 ifname ens3 master TowerBridge</code></strong>
+<code class="prompt">$ </code><strong class="userinput"><code>nmcli con add type ethernet con-name br-slave-2 ifname ens4 master TowerBridge</code></strong>
+<code class="prompt">$ </code><strong class="userinput"><code>nmcli con modify TowerBridge bridge.stp no</code></strong></pre>
 <p>
         This example demonstrates adding a bridge master connection and two slaves. The
         first command adds a master bridge connection, naming the bridge interface and
@@ -235,14 +234,14 @@ B,DISPATCH</pre>
 </div>
 </div>
 <br class="example-break"><div class="example">
-<a name="id-1.4.7.6.10"></a><p class="title"><b>Example 9. Adding an ethernet connection profile with manual IP configuration</b></p>
+<a name="id-1.2.9.6.10"></a><p class="title"><b>Example 9. Adding an ethernet connection profile with manual IP configuration</b></p>
 <div class="example-contents">
-<pre class="screen"><strong class="userinput"><code>$ nmcli con add con-name my-con-em1 ifname em1 type ethernet \
+<pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>nmcli con add con-name my-con-em1 ifname em1 type ethernet \
   ip4 192.168.100.100/24 gw4 192.168.100.1 ip4 1.2.3.4 ip6 abbe::cafe</code></strong>
-<strong class="userinput"><code>$ nmcli con mod my-con-em1 ipv4.dns "8.8.8.8 8.8.4.4"</code></strong>
-<strong class="userinput"><code>$ nmcli con mod my-con-em1 +ipv4.dns 1.2.3.4</code></strong>
-<strong class="userinput"><code>$ nmcli con mod my-con-em1 ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844"</code></strong>
-<strong class="userinput"><code>$ nmcli -p con show my-con-em1</code></strong></pre>
+<code class="prompt">$ </code><strong class="userinput"><code>nmcli con mod my-con-em1 ipv4.dns "8.8.8.8 8.8.4.4"</code></strong>
+<code class="prompt">$ </code><strong class="userinput"><code>nmcli con mod my-con-em1 +ipv4.dns 1.2.3.4</code></strong>
+<code class="prompt">$ </code><strong class="userinput"><code>nmcli con mod my-con-em1 ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844"</code></strong>
+<code class="prompt">$ </code><strong class="userinput"><code>nmcli -p con show my-con-em1</code></strong></pre>
 <p>
         The first command adds an Ethernet connection profile named <span class="emphasis"><em>my-con-em1</em></span>
         that is bound to interface name <span class="emphasis"><em>em1</em></span>. The profile is configured
@@ -258,9 +257,9 @@ B,DISPATCH</pre>
 </div>
 </div>
 <br class="example-break"><div class="example">
-<a name="id-1.4.7.6.11"></a><p class="title"><b>Example 10. Escaping colon characters in tabular mode</b></p>
+<a name="id-1.2.9.6.11"></a><p class="title"><b>Example 10. Escaping colon characters in tabular mode</b></p>
 <div class="example-contents">
-<pre class="screen"><strong class="userinput"><code>$ nmcli -t -f general -e yes -m tab dev show eth0</code></strong>
+<pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>nmcli -t -f general -e yes -m tab dev show eth0</code></strong>
 GENERAL:eth0:ethernet:Intel Corporation:82567LM Gigabit Network Connection:
 e1000e:2.1.4-k:1.8-3:00\:22\:68\:15\:29\:21:1500:100 (connected):0 (No reas
 on given):/sys/devices/pci0000\:00/0000\:00\:19.0/net/eth0:eth0:yes:yes:no:
@@ -273,7 +272,7 @@ nager/ActiveConnection/9</pre>
 </div>
 </div>
 <br class="example-break"><div class="example">
-<a name="id-1.4.7.6.12"></a><p class="title"><b>Example 11. nmcli usage in a NetworkManager dispatcher script to make Ethernet and Wi-Fi mutually exclusive</b></p>
+<a name="id-1.2.9.6.12"></a><p class="title"><b>Example 11. nmcli usage in a NetworkManager dispatcher script to make Ethernet and Wi-Fi mutually exclusive</b></p>
 <div class="example-contents">
 <pre class="programlisting">
 #!/bin/bash
@@ -311,9 +310,9 @@ fi
 </div>
 <br class="example-break"><p><span class="bold"><strong>Example sessions of interactive connection editor</strong></span></p>
 <div class="example">
-<a name="id-1.4.7.6.14"></a><p class="title"><b>Example 12. Adding an ethernet connection profile in interactive editor (a)</b></p>
+<a name="id-1.2.9.6.14"></a><p class="title"><b>Example 12. Adding an ethernet connection profile in interactive editor (a)</b></p>
 <div class="example-contents">
-<pre class="screen"><strong class="userinput"><code>$ nmcli connection edit type ethernet</code></strong>
+<pre class="screen"><code class="prompt">$ </code><strong class="userinput"><code>nmcli connection edit type ethernet</code></strong>
 
 ===| nmcli interactive connection editor |===
 
@@ -324,7 +323,7 @@ Type 'describe [&lt;setting&gt;.&lt;prop&gt;]' for detailed property description
 
 You may edit the following settings: connection, 802-3-ethernet (ethernet),
 802-1x, ipv4, ipv6, dcb
-nmcli&gt; <strong class="userinput"><code>print</code></strong>
+<code class="prompt">nmcli&gt; </code><strong class="userinput"><code>print</code></strong>
 ===========================================================================
                           Connection details
 ===========================================================================
@@ -384,13 +383,13 @@ ipv6.may-fail:                      yes
 ipv6.ip6-privacy:                   -1 (unknown)
 ipv6.dhcp-hostname:                 --
 ---------------------------------------------------------------------------
-nmcli&gt; <strong class="userinput"><code>goto ethernet</code></strong>
+<code class="prompt">nmcli&gt; </code><strong class="userinput"><code>goto ethernet</code></strong>
 You may edit the following properties: port, speed, duplex, auto-negotiate,
  mac-address, cloned-mac-address, mac-address-blacklist, mtu, s390-subchann
 els, s390-nettype, s390-options
 nmcli 802-3-ethernet&gt; set mtu 1492
 nmcli 802-3-ethernet&gt; b
-nmcli&gt; <strong class="userinput"><code>goto ipv4.addresses</code></strong>
+<code class="prompt">nmcli&gt; </code><strong class="userinput"><code>goto ipv4.addresses</code></strong>
 nmcli ipv4.addresses&gt; desc
 
 === [addresses] ===
@@ -411,10 +410,10 @@ nmcli ipv4.addresses&gt; print
 addresses: 192.168.1.100/24
 nmcli ipv4.addresses&gt; back
 nmcli ipv4&gt; b
-nmcli&gt; <strong class="userinput"><code>set ipv4.gateway 192.168.1.1</code></strong>
-nmcli&gt; <strong class="userinput"><code>verify</code></strong>
+<code class="prompt">nmcli&gt; </code><strong class="userinput"><code>set ipv4.gateway 192.168.1.1</code></strong>
+<code class="prompt">nmcli&gt; </code><strong class="userinput"><code>verify</code></strong>
 Verify connection: OK
-nmcli&gt; <strong class="userinput"><code>print</code></strong>
+<code class="prompt">nmcli&gt; </code><strong class="userinput"><code>print</code></strong>
 ===========================================================================
                           Connection details
 ===========================================================================
@@ -473,8 +472,8 @@ ipv6.may-fail:                      yes
 ipv6.ip6-privacy:                   -1 (unknown)
 ipv6.dhcp-hostname:                 --
 ---------------------------------------------------------------------------
-nmcli&gt; <strong class="userinput"><code>set ipv4.dns 8.8.8.8 8.8.4.4</code></strong>
-nmcli&gt; <strong class="userinput"><code>print</code></strong>
+<code class="prompt">nmcli&gt; </code><strong class="userinput"><code>set ipv4.dns 8.8.8.8 8.8.4.4</code></strong>
+<code class="prompt">nmcli&gt; </code><strong class="userinput"><code>print</code></strong>
 ===========================================================================
                           Connection details
 ===========================================================================
@@ -534,12 +533,12 @@ ipv6.may-fail:                      yes
 ipv6.ip6-privacy:                   -1 (unknown)
 ipv6.dhcp-hostname:                 --
 ---------------------------------------------------------------------------
-nmcli&gt; <strong class="userinput"><code>verify</code></strong>
+<code class="prompt">nmcli&gt; </code><strong class="userinput"><code>verify</code></strong>
 Verify connection: OK
-nmcli&gt; <strong class="userinput"><code>save</code></strong>
+<code class="prompt">nmcli&gt; </code><strong class="userinput"><code>save</code></strong>
 Connection 'ethernet-4' (de89cdeb-a3e1-4d53-8fa0-c22546c775f4) successfully
  saved.
-nmcli&gt; <strong class="userinput"><code>quit</code></strong></pre>
+<code class="prompt">nmcli&gt; </code><strong class="userinput"><code>quit</code></strong></pre>
 <p>
         Example session in the nmcli interactive connection editor.
         The scenario creates an Ethernet connection profile with static addressing (IPs and DNS).
@@ -549,7 +548,7 @@ nmcli&gt; <strong class="userinput"><code>quit</code></strong></pre>
 <br class="example-break">
 </div>
 <div class="refsect1">
-<a name="id-1.4.7.7"></a><h2>See Also</h2>
+<a name="id-1.2.9.7"></a><h2>See Also</h2>
 <p>
       <span class="citerefentry"><span class="refentrytitle">nmcli</span>(1)</span>,
       <span class="citerefentry"><span class="refentrytitle">NetworkManager</span>(8)</span>,
diff --git a/docs/api/html/nmcli.html b/docs/api/html/nmcli.html
index ef756f49..91d1e2b5 100644
--- a/docs/api/html/nmcli.html
+++ b/docs/api/html/nmcli.html
@@ -2,11 +2,11 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>nmcli: NetworkManager D-Bus API Reference Manual</title>
+<title>nmcli: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
-<link rel="up" href="manpages.html" title="UNIX Manual Pages">
-<link rel="prev" href="manpages.html" title="UNIX Manual Pages">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
+<link rel="up" href="manpages.html" title="Manual Pages">
+<link rel="prev" href="manpages.html" title="Manual Pages">
 <link rel="next" href="nmtui.html" title="nmtui">
 <meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
diff --git a/docs/api/html/nmtui.html b/docs/api/html/nmtui.html
index ca11c834..80e5c700 100644
--- a/docs/api/html/nmtui.html
+++ b/docs/api/html/nmtui.html
@@ -2,10 +2,10 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>nmtui: NetworkManager D-Bus API Reference Manual</title>
+<title>nmtui: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
-<link rel="up" href="manpages.html" title="UNIX Manual Pages">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
+<link rel="up" href="manpages.html" title="Manual Pages">
 <link rel="prev" href="nmcli.html" title="nmcli">
 <link rel="next" href="nm-online.html" title="nm-online">
 <meta name="generator" content="GTK-Doc V1.24 (XML mode)">
diff --git a/docs/api/html/ref-settings.html b/docs/api/html/ref-settings.html
index e8de233c..e66100c7 100644
--- a/docs/api/html/ref-settings.html
+++ b/docs/api/html/ref-settings.html
@@ -2,10 +2,10 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Network Configuration Setting Specification: NetworkManager D-Bus API Reference Manual</title>
+<title>Network Configuration Setting Specification: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
-<link rel="up" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
+<link rel="up" href="index.html" title="NetworkManager Reference Manual">
 <link rel="prev" href="gdbus-org.freedesktop.NetworkManager.SecretAgent.html" title="org.freedesktop.NetworkManager.SecretAgent">
 <link rel="next" href="secrets-flags.html" title="Secret flag types">
 <meta name="generator" content="GTK-Doc V1.24 (XML mode)">
@@ -23,7 +23,7 @@
 <div class="titlepage"><div><div><h1 class="title">
 <a name="ref-settings"></a>Network Configuration Setting Specification</h1></div></div></div>
 <div class="toc"><dl class="toc">
-<dt><span class="section"><a href="ref-settings.html#id-1.3.3">Configuration Settings</a></span></dt>
+<dt><span class="section"><a href="ref-settings.html#id-1.4.3">Configuration Settings</a></span></dt>
 <dt><span class="section"><a href="secrets-flags.html">Secret flag types</a></span></dt>
 </dl></div>
 <p>
@@ -35,9 +35,9 @@
     </p>
 <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id-1.3.3"></a>Configuration Settings</h2></div></div></div>
+<a name="id-1.4.3"></a>Configuration Settings</h2></div></div></div>
 <div class="table">
-<a name="id-1.3.3.2.1"></a><p class="title"><b>Table 1. 802-1x setting</b></p>
+<a name="id-1.4.3.2.1"></a><p class="title"><b>Table 58. 802-1x setting</b></p>
 <div class="table-contents"><table summary="802-1x setting" border="1">
 <colgroup>
 <col>
@@ -267,7 +267,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.3.1"></a><p class="title"><b>Table 2. adsl setting</b></p>
+<a name="id-1.4.3.3.1"></a><p class="title"><b>Table 59. adsl setting</b></p>
 <div class="table-contents"><table summary="adsl setting" border="1">
 <colgroup>
 <col>
@@ -335,7 +335,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.4.1"></a><p class="title"><b>Table 3. bluetooth setting</b></p>
+<a name="id-1.4.3.4.1"></a><p class="title"><b>Table 60. bluetooth setting</b></p>
 <div class="table-contents"><table summary="bluetooth setting" border="1">
 <colgroup>
 <col>
@@ -373,7 +373,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.5.1"></a><p class="title"><b>Table 4. bond setting</b></p>
+<a name="id-1.4.3.5.1"></a><p class="title"><b>Table 61. bond setting</b></p>
 <div class="table-contents"><table summary="bond setting" border="1">
 <colgroup>
 <col>
@@ -411,7 +411,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.6.1"></a><p class="title"><b>Table 5. bridge setting</b></p>
+<a name="id-1.4.3.6.1"></a><p class="title"><b>Table 62. bridge setting</b></p>
 <div class="table-contents"><table summary="bridge setting" border="1">
 <colgroup>
 <col>
@@ -491,7 +491,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.7.1"></a><p class="title"><b>Table 6. bridge-port setting</b></p>
+<a name="id-1.4.3.7.1"></a><p class="title"><b>Table 63. bridge-port setting</b></p>
 <div class="table-contents"><table summary="bridge-port setting" border="1">
 <colgroup>
 <col>
@@ -535,7 +535,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.8.1"></a><p class="title"><b>Table 7. cdma setting</b></p>
+<a name="id-1.4.3.8.1"></a><p class="title"><b>Table 64. cdma setting</b></p>
 <div class="table-contents"><table summary="cdma setting" border="1">
 <colgroup>
 <col>
@@ -585,7 +585,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.9.1"></a><p class="title"><b>Table 8. connection setting</b></p>
+<a name="id-1.4.3.9.1"></a><p class="title"><b>Table 65. connection setting</b></p>
 <div class="table-contents"><table summary="connection setting" border="1">
 <colgroup>
 <col>
@@ -713,7 +713,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.10.1"></a><p class="title"><b>Table 9. dcb setting</b></p>
+<a name="id-1.4.3.10.1"></a><p class="title"><b>Table 66. dcb setting</b></p>
 <div class="table-contents"><table summary="dcb setting" border="1">
 <colgroup>
 <col>
@@ -829,7 +829,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.11.1"></a><p class="title"><b>Table 10. generic setting</b></p>
+<a name="id-1.4.3.11.1"></a><p class="title"><b>Table 67. generic setting</b></p>
 <div class="table-contents"><table summary="generic setting" border="1">
 <colgroup>
 <col>
@@ -853,7 +853,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.12.1"></a><p class="title"><b>Table 11. gsm setting</b></p>
+<a name="id-1.4.3.12.1"></a><p class="title"><b>Table 68. gsm setting</b></p>
 <div class="table-contents"><table summary="gsm setting" border="1">
 <colgroup>
 <col>
@@ -951,7 +951,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.13.1"></a><p class="title"><b>Table 12. infiniband setting</b></p>
+<a name="id-1.4.3.13.1"></a><p class="title"><b>Table 69. infiniband setting</b></p>
 <div class="table-contents"><table summary="infiniband setting" border="1">
 <colgroup>
 <col>
@@ -1007,7 +1007,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.14.1"></a><p class="title"><b>Table 13. ipv4 setting</b></p>
+<a name="id-1.4.3.14.1"></a><p class="title"><b>Table 70. ipv4 setting</b></p>
 <div class="table-contents"><table summary="ipv4 setting" border="1">
 <colgroup>
 <col>
@@ -1153,7 +1153,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.15.1"></a><p class="title"><b>Table 14. ipv6 setting</b></p>
+<a name="id-1.4.3.15.1"></a><p class="title"><b>Table 71. ipv6 setting</b></p>
 <div class="table-contents"><table summary="ipv6 setting" border="1">
 <colgroup>
 <col>
@@ -1299,7 +1299,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.16.1"></a><p class="title"><b>Table 15. ip-tunnel setting</b></p>
+<a name="id-1.4.3.16.1"></a><p class="title"><b>Table 72. ip-tunnel setting</b></p>
 <div class="table-contents"><table summary="ip-tunnel setting" border="1">
 <colgroup>
 <col>
@@ -1397,7 +1397,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.17.1"></a><p class="title"><b>Table 16. macvlan setting</b></p>
+<a name="id-1.4.3.17.1"></a><p class="title"><b>Table 73. macvlan setting</b></p>
 <div class="table-contents"><table summary="macvlan setting" border="1">
 <colgroup>
 <col>
@@ -1447,7 +1447,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.18.1"></a><p class="title"><b>Table 17. 802-11-olpc-mesh setting</b></p>
+<a name="id-1.4.3.18.1"></a><p class="title"><b>Table 74. 802-11-olpc-mesh setting</b></p>
 <div class="table-contents"><table summary="802-11-olpc-mesh setting" border="1">
 <colgroup>
 <col>
@@ -1491,7 +1491,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.19.1"></a><p class="title"><b>Table 18. ppp setting</b></p>
+<a name="id-1.4.3.19.1"></a><p class="title"><b>Table 75. ppp setting</b></p>
 <div class="table-contents"><table summary="ppp setting" border="1">
 <colgroup>
 <col>
@@ -1625,7 +1625,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.20.1"></a><p class="title"><b>Table 19. pppoe setting</b></p>
+<a name="id-1.4.3.20.1"></a><p class="title"><b>Table 76. pppoe setting</b></p>
 <div class="table-contents"><table summary="pppoe setting" border="1">
 <colgroup>
 <col>
@@ -1675,7 +1675,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.21.1"></a><p class="title"><b>Table 20. serial setting</b></p>
+<a name="id-1.4.3.21.1"></a><p class="title"><b>Table 77. serial setting</b></p>
 <div class="table-contents"><table summary="serial setting" border="1">
 <colgroup>
 <col>
@@ -1731,7 +1731,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.22.1"></a><p class="title"><b>Table 21. team setting</b></p>
+<a name="id-1.4.3.22.1"></a><p class="title"><b>Table 78. team setting</b></p>
 <div class="table-contents"><table summary="team setting" border="1">
 <colgroup>
 <col>
@@ -1769,7 +1769,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.23.1"></a><p class="title"><b>Table 22. team-port setting</b></p>
+<a name="id-1.4.3.23.1"></a><p class="title"><b>Table 79. team-port setting</b></p>
 <div class="table-contents"><table summary="team-port setting" border="1">
 <colgroup>
 <col>
@@ -1801,7 +1801,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.24.1"></a><p class="title"><b>Table 23. tun setting</b></p>
+<a name="id-1.4.3.24.1"></a><p class="title"><b>Table 80. tun setting</b></p>
 <div class="table-contents"><table summary="tun setting" border="1">
 <colgroup>
 <col>
@@ -1863,7 +1863,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.25.1"></a><p class="title"><b>Table 24. vlan setting</b></p>
+<a name="id-1.4.3.25.1"></a><p class="title"><b>Table 81. vlan setting</b></p>
 <div class="table-contents"><table summary="vlan setting" border="1">
 <colgroup>
 <col>
@@ -1925,7 +1925,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.26.1"></a><p class="title"><b>Table 25. vpn setting</b></p>
+<a name="id-1.4.3.26.1"></a><p class="title"><b>Table 82. vpn setting</b></p>
 <div class="table-contents"><table summary="vpn setting" border="1">
 <colgroup>
 <col>
@@ -1987,7 +1987,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.27.1"></a><p class="title"><b>Table 26. vxlan setting</b></p>
+<a name="id-1.4.3.27.1"></a><p class="title"><b>Table 83. vxlan setting</b></p>
 <div class="table-contents"><table summary="vxlan setting" border="1">
 <colgroup>
 <col>
@@ -2109,7 +2109,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.28.1"></a><p class="title"><b>Table 27. wimax setting</b></p>
+<a name="id-1.4.3.28.1"></a><p class="title"><b>Table 84. wimax setting</b></p>
 <div class="table-contents"><table summary="wimax setting" border="1">
 <colgroup>
 <col>
@@ -2147,7 +2147,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.29.1"></a><p class="title"><b>Table 28. 802-3-ethernet setting</b></p>
+<a name="id-1.4.3.29.1"></a><p class="title"><b>Table 85. 802-3-ethernet setting</b></p>
 <div class="table-contents"><table summary="802-3-ethernet setting" border="1">
 <colgroup>
 <col>
@@ -2251,7 +2251,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.30.1"></a><p class="title"><b>Table 29. 802-11-wireless setting</b></p>
+<a name="id-1.4.3.30.1"></a><p class="title"><b>Table 86. 802-11-wireless setting</b></p>
 <div class="table-contents"><table summary="802-11-wireless setting" border="1">
 <colgroup>
 <col>
@@ -2373,7 +2373,7 @@
 </div>
 <p><br class="table-break"></p>
 <div class="table">
-<a name="id-1.3.3.31.1"></a><p class="title"><b>Table 30. 802-11-wireless-security setting</b></p>
+<a name="id-1.4.3.31.1"></a><p class="title"><b>Table 87. 802-11-wireless-security setting</b></p>
 <div class="table-contents"><table summary="802-11-wireless-security setting" border="1">
 <colgroup>
 <col>
diff --git a/docs/api/html/secrets-flags.html b/docs/api/html/secrets-flags.html
index 89e2ca77..fcaba3b3 100644
--- a/docs/api/html/secrets-flags.html
+++ b/docs/api/html/secrets-flags.html
@@ -2,12 +2,12 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Secret flag types: NetworkManager D-Bus API Reference Manual</title>
+<title>Secret flag types: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
 <link rel="up" href="ref-settings.html" title="Network Configuration Setting Specification">
 <link rel="prev" href="ref-settings.html" title="Network Configuration Setting Specification">
-<link rel="next" href="manpages.html" title="UNIX Manual Pages">
+<link rel="next" href="ix01.html" title="Index">
 <meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -17,7 +17,7 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ref-settings.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="ref-settings.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="manpages.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="ix01.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
diff --git a/docs/api/html/spec.html b/docs/api/html/spec.html
index 45b98a21..8259f088 100644
--- a/docs/api/html/spec.html
+++ b/docs/api/html/spec.html
@@ -2,11 +2,11 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>D-Bus API Reference: NetworkManager D-Bus API Reference Manual</title>
+<title>D-Bus API Reference: NetworkManager Reference Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="NetworkManager D-Bus API Reference Manual">
-<link rel="up" href="index.html" title="NetworkManager D-Bus API Reference Manual">
-<link rel="prev" href="index.html" title="NetworkManager D-Bus API Reference Manual">
+<link rel="home" href="index.html" title="NetworkManager Reference Manual">
+<link rel="up" href="index.html" title="NetworkManager Reference Manual">
+<link rel="prev" href="NetworkManager.html" title="NetworkManager">
 <link rel="next" href="gdbus-org.freedesktop.NetworkManager.html" title="org.freedesktop.NetworkManager">
 <meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
@@ -16,7 +16,7 @@
 <td width="100%" align="left" class="shortcuts"></td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
-<td><a accesskey="p" href="index.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="NetworkManager.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="gdbus-org.freedesktop.NetworkManager.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="chapter">
diff --git a/docs/api/network-manager-docs.xml b/docs/api/network-manager-docs.xml
index 3cf2c9ed..ff1cb82d 100644
--- a/docs/api/network-manager-docs.xml
+++ b/docs/api/network-manager-docs.xml
@@ -5,11 +5,14 @@
 ]>
 <book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
   <bookinfo>
-    <title>NetworkManager D-Bus API Reference Manual</title>
+    <title>NetworkManager Reference Manual</title>
     <releaseinfo>Version &version;</releaseinfo>
 
     <copyright>
       <year>2012</year>
+      <year>2013</year>
+      <year>2014</year>
+      <year>2015</year>
       <year>2016</year>
       <holder>The NetworkManager Authors</holder>
     </copyright>
@@ -37,6 +40,19 @@
     </legalnotice>
   </bookinfo>
 
+  <chapter id="manpages">
+    <title>Manual Pages</title>
+    <xi:include href="../../man/nmcli.xml"/>
+    <xi:include href="../../man/nmtui.xml"/>
+    <xi:include href="../../man/nm-online.xml"/>
+    <xi:include href="../../man/NetworkManager.conf.xml"/>
+    <xi:include href="../../man/nm-settings.xml"><xi:fallback /></xi:include>
+    <xi:include href="../../man/nm-settings-keyfile.xml"><xi:fallback /></xi:include>
+    <xi:include href="../../man/nm-settings-ifcfg-rh.xml"><xi:fallback /></xi:include>
+    <xi:include href="../../man/nmcli-examples.xml"/>
+    <xi:include href="../../man/NetworkManager.xml"/>
+  </chapter>
+
   <chapter id="spec">
     <title>D-Bus API Reference</title>
 
@@ -142,20 +158,6 @@
     </section>
   </chapter>
 
-  <chapter id="manpages">
-    <title>UNIX Manual Pages</title>
-    <xi:include href="../../man/nmcli.xml"/>
-    <xi:include href="../../man/nmtui.xml"/>
-    <xi:include href="../../man/nm-online.xml"/>
-    <xi:include href="../../man/NetworkManager.xml"/>
-    <xi:include href="../../man/NetworkManager.conf.xml"/>
-    <xi:include href="../../man/nmcli-examples.xml"/>
-    <xi:include href="../../man/nm-settings.xml"><xi:fallback /></xi:include>
-    <xi:include href="../../man/nm-settings-keyfile.xml"><xi:fallback /></xi:include>
-    <xi:include href="../../man/nm-settings-ifcfg-rh.xml"><xi:fallback /></xi:include>
-  </chapter>
-
-
   <index>
     <title>Index</title>
   </index>
diff --git a/docs/api/version.xml b/docs/api/version.xml
index 9a03ea63..ead65f0a 100644
--- a/docs/api/version.xml
+++ b/docs/api/version.xml
@@ -1 +1 @@
-1.1.93
+1.1.94
diff --git a/docs/libnm-glib/html/NMRemoteSettings.html b/docs/libnm-glib/html/NMRemoteSettings.html
index 10d37ade..ebc67526 100644
--- a/docs/libnm-glib/html/NMRemoteSettings.html
+++ b/docs/libnm-glib/html/NMRemoteSettings.html
@@ -377,13 +377,13 @@ the stored object known to NetworkManager.</p>
 <span class="keyword">static</span><span class="normal"> gboolean</span>
 <span class="function">add_wired_connection</span><span class="normal"> </span><span class="symbol">(</span><span class="keyword">const</span><span class="normal"> </span><span class="type">char</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">human_name</span><span class="symbol">)</span>
 <span class="cbracket">{</span>
-<span class="normal">   </span><span class="usertype">NMConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">connection</span><span class="symbol">;</span>
+<span class="normal">   </span><span class="usertype">NMConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal"><a href="/usr/share/gtk-doc/html/NetworkManager/nmcli.html#connection">connection</a></span><span class="symbol">;</span>
 <span class="normal">   </span><span class="usertype">NMSettingConnection</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">s_con</span><span class="symbol">;</span>
 <span class="normal">   </span><span class="usertype">NMSettingWired</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">s_wired</span><span class="symbol">;</span>
 <span class="normal">   </span><span class="type">char</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">uuid</span><span class="symbol">;</span>
 <span class="normal">   </span><span class="usertype">gboolean</span><span class="normal"> success</span><span class="symbol">;</span>
 
-<span class="normal">   connection </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="https://developer.gnome.org/libnm-util/0.9/NMConnection.html#nm-connection-new">nm_connection_new</a></span><span class="normal"> </span><span class="symbol">();</span>
+<span class="normal">   <a href="/usr/share/gtk-doc/html/NetworkManager/nmcli.html#connection">connection</a> </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="https://developer.gnome.org/libnm-util/0.9/NMConnection.html#nm-connection-new">nm_connection_new</a></span><span class="normal"> </span><span class="symbol">();</span>
 
 <span class="normal">   </span><span class="comment">/* Build up the 'connection' setting */</span>
 <span class="normal">   s_con </span><span class="symbol">=</span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="https://developer.gnome.org/libnm-util/0.9/NMSettingConnection.html">NMSettingConnection</a> </span><span class="symbol">*)</span><span class="normal"> </span><span class="function"><a href="https://developer.gnome.org/libnm-util/0.9/NMSettingConnection.html#nm-setting-connection-new">nm_setting_connection_new</a></span><span class="normal"> </span><span class="symbol">();</span>
@@ -394,24 +394,24 @@ the stored object known to NetworkManager.</p>
 <span class="normal">                 <a href="https://developer.gnome.org/libnm-util/0.9/NMSettingConnection.html#NM-SETTING-CONNECTION-TYPE:CAPS">NM_SETTING_CONNECTION_TYPE</a></span><span class="symbol">,</span><span class="normal"> <a href="https://developer.gnome.org/libnm-util/0.9/NMSettingWired.html#NM-SETTING-WIRED-SETTING-NAME:CAPS">NM_SETTING_WIRED_SETTING_NAME</a></span><span class="symbol">,</span>
 <span class="normal">                 NULL</span><span class="symbol">);</span>
 <span class="normal">   </span><span class="function">g_free</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">uuid</span><span class="symbol">);</span>
-<span class="normal">   </span><span class="function"><a href="https://developer.gnome.org/libnm-util/0.9/NMConnection.html#nm-connection-add-setting">nm_connection_add_setting</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">,</span><span class="normal"> </span><span class="function">NM_SETTING</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">s_con</span><span class="symbol">));</span>
+<span class="normal">   </span><span class="function"><a href="https://developer.gnome.org/libnm-util/0.9/NMConnection.html#nm-connection-add-setting">nm_connection_add_setting</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="/usr/share/gtk-doc/html/NetworkManager/nmcli.html#connection">connection</a></span><span class="symbol">,</span><span class="normal"> </span><span class="function">NM_SETTING</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">s_con</span><span class="symbol">));</span>
 
 <span class="normal">   </span><span class="comment">/* Add the required 'wired' setting as this is a wired connection */</span>
-<span class="normal">   </span><span class="function"><a href="https://developer.gnome.org/libnm-util/0.9/NMConnection.html#nm-connection-add-setting">nm_connection_add_setting</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="https://developer.gnome.org/libnm-util/0.9/NMSettingWired.html#nm-setting-wired-new">nm_setting_wired_new</a></span><span class="normal"> </span><span class="symbol">());</span>
+<span class="normal">   </span><span class="function"><a href="https://developer.gnome.org/libnm-util/0.9/NMConnection.html#nm-connection-add-setting">nm_connection_add_setting</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="/usr/share/gtk-doc/html/NetworkManager/nmcli.html#connection">connection</a></span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="https://developer.gnome.org/libnm-util/0.9/NMSettingWired.html#nm-setting-wired-new">nm_setting_wired_new</a></span><span class="normal"> </span><span class="symbol">());</span>
 
 <span class="normal">   </span><span class="comment">/* Add an 'ipv4' setting using AUTO configuration (eg DHCP) */</span>
 <span class="normal">   s_ip4 </span><span class="symbol">=</span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="https://developer.gnome.org/libnm-util/0.9/NMSettingIP4Config.html">NMSettingIP4Config</a> </span><span class="symbol">*)</span><span class="normal"> </span><span class="function"><a href="https://developer.gnome.org/libnm-util/0.9/NMSettingIP4Config.html#nm-setting-ip4-config-new">nm_setting_ip4_config_new</a></span><span class="normal"> </span><span class="symbol">();</span>
 <span class="normal">   </span><span class="function">g_object_set</span><span class="normal"> </span><span class="symbol">(</span><span class="function">G_OBJECT</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">s_ip4</span><span class="symbol">),</span>
 <span class="normal">                 <a href="https://developer.gnome.org/libnm-util/0.9/NMSettingIP4Config.html#NM-SETTING-IP4-CONFIG-METHOD:CAPS">NM_SETTING_IP4_CONFIG_METHOD</a></span><span class="symbol">,</span><span class="normal"> <a href="https://developer.gnome.org/libnm-util/0.9/NMSettingIP4Config.html#NM-SETTING-IP4-CONFIG-METHOD-AUTO:CAPS">NM_SETTING_IP4_CONFIG_METHOD_AUTO</a></span><span class="symbol">,</span>
 <span class="normal">                 NULL</span><span class="symbol">);</span>
-<span class="normal">   </span><span class="function"><a href="https://developer.gnome.org/libnm-util/0.9/NMConnection.html#nm-connection-add-setting">nm_connection_add_setting</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">,</span><span class="normal"> </span><span class="function">NM_SETTING</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">s_ip4</span><span class="symbol">));</span>
+<span class="normal">   </span><span class="function"><a href="https://developer.gnome.org/libnm-util/0.9/NMConnection.html#nm-connection-add-setting">nm_connection_add_setting</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="/usr/share/gtk-doc/html/NetworkManager/nmcli.html#connection">connection</a></span><span class="symbol">,</span><span class="normal"> </span><span class="function">NM_SETTING</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">s_ip4</span><span class="symbol">));</span>
 
 <span class="normal">   </span><span class="comment">/* Ask NetworkManager to store the connection */</span>
-<span class="normal">   success </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="NMRemoteSettings.html#nm-remote-settings-add-connection">nm_remote_settings_add_connection</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">settings</span><span class="symbol">,</span><span class="normal"> connection</span><span class="symbol">,</span><span class="normal"> added_cb</span><span class="symbol">,</span><span class="normal"> loop</span><span class="symbol">);</span>
+<span class="normal">   success </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="NMRemoteSettings.html#nm-remote-settings-add-connection">nm_remote_settings_add_connection</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">settings</span><span class="symbol">,</span><span class="normal"> <a href="/usr/share/gtk-doc/html/NetworkManager/nmcli.html#connection">connection</a></span><span class="symbol">,</span><span class="normal"> added_cb</span><span class="symbol">,</span><span class="normal"> loop</span><span class="symbol">);</span>
 
 <span class="normal">   </span><span class="comment">/* Release the template connection; the actual stored connection will</span>
 <span class="comment">    * be returned in added_cb() */</span>
-<span class="normal">   </span><span class="function">g_object_unref</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">connection</span><span class="symbol">);</span>
+<span class="normal">   </span><span class="function">g_object_unref</span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="/usr/share/gtk-doc/html/NetworkManager/nmcli.html#connection">connection</a></span><span class="symbol">);</span>
 
 <span class="normal">   </span><span class="comment">/* Let glib event loop run and added_cb() will be called when NetworkManager</span>
 <span class="comment">    * is done adding the new connection. */</span>
diff --git a/docs/libnm-glib/html/index.html b/docs/libnm-glib/html/index.html
index 5cc5b13c..5df1127b 100644
--- a/docs/libnm-glib/html/index.html
+++ b/docs/libnm-glib/html/index.html
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">libnm-glib Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for libnm-glib 1.1.93
+      for libnm-glib 1.1.94
 
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="https://developer.gnome.org/libnm-glib/0.9/" target="_top">https://developer.gnome.org/libnm-glib/0.9/</a>.
diff --git a/docs/libnm-glib/version.xml b/docs/libnm-glib/version.xml
index 9a03ea63..ead65f0a 100644
--- a/docs/libnm-glib/version.xml
+++ b/docs/libnm-glib/version.xml
@@ -1 +1 @@
-1.1.93
+1.1.94
diff --git a/docs/libnm-util/html/index.html b/docs/libnm-util/html/index.html
index b8dfdf90..b50fbdbd 100644
--- a/docs/libnm-util/html/index.html
+++ b/docs/libnm-util/html/index.html
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">libnm-util Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for libnm-util 1.1.93
+      for libnm-util 1.1.94
 
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="https://developer.gnome.org/libnm-util/0.9/" target="_top">https://developer.gnome.org/libnm-util/0.9/</a>.
diff --git a/docs/libnm-util/version.xml b/docs/libnm-util/version.xml
index 9a03ea63..ead65f0a 100644
--- a/docs/libnm-util/version.xml
+++ b/docs/libnm-util/version.xml
@@ -1 +1 @@
-1.1.93
+1.1.94
diff --git a/docs/libnm/html/index.html b/docs/libnm/html/index.html
index e004f345..1267d387 100644
--- a/docs/libnm/html/index.html
+++ b/docs/libnm/html/index.html
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">libnm Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for libnm 1.1.93
+      for libnm 1.1.94
 
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="https://developer.gnome.org/libnm/1.0/" target="_top">https://developer.gnome.org/libnm/1.0/</a>.
diff --git a/docs/libnm/version.xml b/docs/libnm/version.xml
index 9a03ea63..ead65f0a 100644
--- a/docs/libnm/version.xml
+++ b/docs/libnm/version.xml
@@ -1 +1 @@
-1.1.93
+1.1.94
diff --git a/libnm-core/nm-setting-ip-config.c b/libnm-core/nm-setting-ip-config.c
index 4e3088a9..3e7f93b0 100644
--- a/libnm-core/nm-setting-ip-config.c
+++ b/libnm-core/nm-setting-ip-config.c
@@ -143,18 +143,16 @@ valid_ip (int family, const char *ip, GError **error)
 }
 
 static gboolean
-valid_prefix (int family, guint prefix, GError **error, gboolean allow_zero_prefix)
+valid_prefix (int family, guint prefix, GError **error)
 {
-	if (   (family == AF_INET && prefix > 32)
-	    || (family == AF_INET6 && prefix > 128)
-	    || (!allow_zero_prefix && prefix == 0)) {
-		g_set_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_FAILED,
-		             family == AF_INET ? _("Invalid IPv4 address prefix '%u'") : _("Invalid IPv6 address prefix '%u'"),
-		             prefix);
-		return FALSE;
-	}
+	if (   (family == AF_INET  && prefix <= 32)
+	    || (family == AF_INET6 && prefix <= 128))
+		return TRUE;
 
-	return TRUE;
+	g_set_error (error, NM_CONNECTION_ERROR, NM_CONNECTION_ERROR_FAILED,
+	             family == AF_INET ? _("Invalid IPv4 address prefix '%u'") : _("Invalid IPv6 address prefix '%u'"),
+	             prefix);
+	return FALSE;
 }
 
 static gboolean
@@ -175,6 +173,9 @@ valid_metric (gint64 metric, GError **error)
 	return TRUE;
 }
 
+/*****************************************************************************
+ * NMIPAddress
+ *****************************************************************************/
 
 G_DEFINE_BOXED_TYPE (NMIPAddress, nm_ip_address, nm_ip_address_dup, nm_ip_address_unref)
 
@@ -211,7 +212,7 @@ nm_ip_address_new (int family,
 
 	if (!valid_ip (family, addr, error))
 		return NULL;
-	if (!valid_prefix (family, prefix, error, FALSE))
+	if (!valid_prefix (family, prefix, error))
 		return NULL;
 
 	address = g_slice_new0 (NMIPAddress);
@@ -248,7 +249,7 @@ nm_ip_address_new_binary (int family,
 	g_return_val_if_fail (family == AF_INET || family == AF_INET6, NULL);
 	g_return_val_if_fail (addr != NULL, NULL);
 
-	if (!valid_prefix (family, prefix, error, FALSE))
+	if (!valid_prefix (family, prefix, error))
 		return NULL;
 
 	address = g_slice_new0 (NMIPAddress);
@@ -484,7 +485,7 @@ nm_ip_address_set_prefix (NMIPAddress *address,
                           guint prefix)
 {
 	g_return_if_fail (address != NULL);
-	g_return_if_fail (valid_prefix (address->family, prefix, NULL, FALSE));
+	g_return_if_fail (valid_prefix (address->family, prefix, NULL));
 
 	address->prefix = prefix;
 }
@@ -566,6 +567,9 @@ nm_ip_address_set_attribute (NMIPAddress *address, const char *name, GVariant *v
 		g_hash_table_remove (address->attributes, name);
 }
 
+/*****************************************************************************
+ * NMIPRoute
+ *****************************************************************************/
 
 G_DEFINE_BOXED_TYPE (NMIPRoute, nm_ip_route, nm_ip_route_dup, nm_ip_route_unref)
 
@@ -610,7 +614,7 @@ nm_ip_route_new (int family,
 
 	if (!valid_ip (family, dest, error))
 		return NULL;
-	if (!valid_prefix (family, prefix, error, TRUE))
+	if (!valid_prefix (family, prefix, error))
 		return NULL;
 	if (next_hop && !valid_ip (family, next_hop, error))
 		return NULL;
@@ -657,7 +661,7 @@ nm_ip_route_new_binary (int family,
 	g_return_val_if_fail (family == AF_INET || family == AF_INET6, NULL);
 	g_return_val_if_fail (dest, NULL);
 
-	if (!valid_prefix (family, prefix, error, TRUE))
+	if (!valid_prefix (family, prefix, error))
 		return NULL;
 	if (!valid_metric (metric, error))
 		return NULL;
@@ -898,7 +902,7 @@ nm_ip_route_set_prefix (NMIPRoute *route,
                         guint prefix)
 {
 	g_return_if_fail (route != NULL);
-	g_return_if_fail (valid_prefix (route->family, prefix, NULL, TRUE));
+	g_return_if_fail (valid_prefix (route->family, prefix, NULL));
 
 	route->prefix = prefix;
 }
@@ -1105,6 +1109,7 @@ nm_ip_route_set_attribute (NMIPRoute *route, const char *name, GVariant *value)
 		g_hash_table_remove (route->attributes, name);
 }
 
+/*****************************************************************************/
 
 G_DEFINE_ABSTRACT_TYPE (NMSettingIPConfig, nm_setting_ip_config, NM_TYPE_SETTING)
 
diff --git a/man/Makefile.am b/man/Makefile.am
index ce84194c..9338edbb 100644
--- a/man/Makefile.am
+++ b/man/Makefile.am
@@ -31,16 +31,6 @@ if ENABLE_GTK_DOC
 
 endif
 
-CLEANFILES += NetworkManager.conf.xml
-EXTRA_DIST += NetworkManager.conf.xml.in
-NetworkManager.conf.xml: $(srcdir)/NetworkManager.conf.xml.in
-	 $(AM_V_GEN)  sed \
-		-e 's|[@]NM_CONFIG_DEFAULT_AUTH_POLKIT_TEXT[@]|$(NM_CONFIG_DEFAULT_AUTH_POLKIT_TEXT)|g' \
-		-e 's|[@]NM_CONFIG_KEYFILE_PATH_DEFAULT[@]|$(nmconfdir)/conf.d|g' \
-		-e 's|[@]NM_CONFIG_LOGGING_BACKEND_DEFAULT_TEXT[@]|$(NM_CONFIG_LOGGING_BACKEND_DEFAULT_TEXT)|g' \
-		-e 's|[@]NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT[@]|$(NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT)|g' \
-		$< >$@
-
 if BUILD_SETTING_DOCS
 
 nm-settings.xml: nm-settings.xsl $(top_builddir)/libnm/nm-setting-docs.xml
diff --git a/man/Makefile.in b/man/Makefile.in
index 551f1a90..c7da7504 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -445,13 +445,12 @@ with_netconfig = @with_netconfig@
 with_resolvconf = @with_resolvconf@
 with_valgrind = @with_valgrind@
 man_MANS = $(am__append_4) $(am__append_6) $(am__append_8)
-CLEANFILES = NetworkManager.conf.xml $(am__append_1) $(am__append_5) \
-	$(am__append_7)
-EXTRA_DIST = NetworkManager.conf.xml.in $(am__append_3) \
-	nm-settings.xml nm-settings.xsl nm-settings-keyfile.xml \
-	nm-settings-keyfile.xsl nm-settings-ifcfg-rh.xml \
-	nm-settings-ifcfg-rh.xsl $(addsuffix .xml,$(basename \
-	$(man_pages))) $(man_pages) $(autogenerated_man_pages)
+CLEANFILES = $(am__append_1) $(am__append_5) $(am__append_7)
+EXTRA_DIST = $(am__append_3) nm-settings.xml nm-settings.xsl \
+	nm-settings-keyfile.xml nm-settings-keyfile.xsl \
+	nm-settings-ifcfg-rh.xml nm-settings-ifcfg-rh.xsl $(addsuffix \
+	.xml,$(basename $(man_pages))) $(man_pages) \
+	$(autogenerated_man_pages)
 XSLTPROC = xsltproc
 XSLTPROC_FLAGS = --xinclude --nonet
 XSLTPROC_MAN_FLAGS = \
@@ -868,13 +867,6 @@ uninstall-man: uninstall-man1 uninstall-man5 uninstall-man7 \
 
 @ENABLE_GTK_DOC_TRUE@%.8: %.xml common.ent
 @ENABLE_GTK_DOC_TRUE@	$(AM_V_GEN) xsltproc $(XSLTPROC_MAN_FLAGS) $<
-NetworkManager.conf.xml: $(srcdir)/NetworkManager.conf.xml.in
-	 $(AM_V_GEN)  sed \
-		-e 's|[@]NM_CONFIG_DEFAULT_AUTH_POLKIT_TEXT[@]|$(NM_CONFIG_DEFAULT_AUTH_POLKIT_TEXT)|g' \
-		-e 's|[@]NM_CONFIG_KEYFILE_PATH_DEFAULT[@]|$(nmconfdir)/conf.d|g' \
-		-e 's|[@]NM_CONFIG_LOGGING_BACKEND_DEFAULT_TEXT[@]|$(NM_CONFIG_LOGGING_BACKEND_DEFAULT_TEXT)|g' \
-		-e 's|[@]NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT[@]|$(NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT)|g' \
-		$< >$@
 
 @BUILD_SETTING_DOCS_TRUE@nm-settings.xml: nm-settings.xsl $(top_builddir)/libnm/nm-setting-docs.xml
 @BUILD_SETTING_DOCS_TRUE@	$(AM_V_GEN) xsltproc --output $@ $^
diff --git a/man/NetworkManager.8 b/man/NetworkManager.8
index 35594cfe..4c06ffa3 100644
--- a/man/NetworkManager.8
+++ b/man/NetworkManager.8
@@ -2,12 +2,12 @@
 .\"     Title: NetworkManager
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
-.\"      Date: 04/05/2016
+.\"      Date: 04/12/2016
 .\"    Manual: Network management daemons
-.\"    Source: NetworkManager 1.1.93
+.\"    Source: NetworkManager 1.1.94
 .\"  Language: English
 .\"
-.TH "NETWORKMANAGER" "8" "" "NetworkManager 1\&.1\&.93" "Network management daemons"
+.TH "NETWORKMANAGER" "8" "" "NetworkManager 1\&.1\&.94" "Network management daemons"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/NetworkManager.conf.5 b/man/NetworkManager.conf.5
index 72fbf38f..95e36983 100644
--- a/man/NetworkManager.conf.5
+++ b/man/NetworkManager.conf.5
@@ -2,12 +2,12 @@
 .\"     Title: NetworkManager.conf
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
-.\"      Date: 04/05/2016
+.\"      Date: 04/12/2016
 .\"    Manual: Configuration
-.\"    Source: NetworkManager 1.2
+.\"    Source: NetworkManager 1.1.94
 .\"  Language: English
 .\"
-.TH "NETWORKMANAGER\&.CON" "5" "" "NetworkManager 1\&.2" "Configuration"
+.TH "NETWORKMANAGER\&.CON" "5" "" "NetworkManager 1\&.1\&.94" "Configuration"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -254,7 +254,7 @@ This key is deprecated and has no effect since the hostname is now stored in /et
 .PP
 \fIpath\fR
 .RS 4
-The location where keyfiles are read and stored\&. This defaults to "/usr/local/etc/NetworkManager/conf\&.d"\&.
+The location where keyfiles are read and stored\&. This defaults to "${prefix}/etc/NetworkManager/conf\&.d"\&.
 .RE
 .PP
 \fIunmanaged\-devices\fR
diff --git a/man/NetworkManager.conf.xml b/man/NetworkManager.conf.xml
index 3427cd64..2ae26f50 100644
--- a/man/NetworkManager.conf.xml
+++ b/man/NetworkManager.conf.xml
@@ -1,9 +1,26 @@
 <?xml version='1.0'?> <!--*-nxml-*-->
+<?xml-stylesheet type="text/xsl" href="http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl"?>
 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
-"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
+"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+<!ENTITY % entities SYSTEM "common.ent" >
+%entities;
+]>
 
 <!--
-Copyright 2010 - 2014 Red Hat, Inc.
+  NetworkManager.conf(5) manual page
+
+  Copyright 2010 - 2016 Red Hat, Inc.
+
+  Permission is granted to copy, distribute and/or modify this document
+  under the terms of the GNU Free Documentation License, Version 1.1
+  or any later version published by the Free Software Foundation;
+  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+  Texts. You may obtain a copy of the GNU Free Documentation License
+  from the Free Software Foundation by visiting their Web site or by
+  writing to:
+
+  Free Software Foundation, Inc.,
+  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 -->
 
 <refentry id="NetworkManager.conf">
@@ -17,7 +34,7 @@ Copyright 2010 - 2014 Red Hat, Inc.
     <manvolnum>5</manvolnum>
     <refmiscinfo class="source">NetworkManager</refmiscinfo>
     <refmiscinfo class="manual">Configuration</refmiscinfo>
-    <refmiscinfo class="version">1.2</refmiscinfo>
+    <refmiscinfo class="version">&NM_VERSION;</refmiscinfo>
   </refmeta>
 
   <refnamediv>
@@ -151,7 +168,7 @@ plugins-=remove-me
         <listitem><para>Whether the system uses PolicyKit for authorization.
         If <literal>false</literal>, all requests will be allowed. If
         <literal>true</literal>, non-root requests are authorized using PolicyKit.
-        The default value is <literal>true</literal>.
+        The default value is <literal>&NM_CONFIG_DEFAULT_AUTH_POLKIT_TEXT;</literal>.
         </para></listitem>
       </varlistentry>
       <varlistentry>
@@ -349,7 +366,7 @@ no-auto-default=*
           <term><varname>path</varname></term>
           <listitem>
             <para>The location where keyfiles are read and stored.
-            This defaults to "<literal>/usr/local/etc/NetworkManager/conf.d</literal>".
+            This defaults to "<filename>&sysconfdir;/NetworkManager/conf.d</filename>".
             </para>
           </listitem>
         </varlistentry>
@@ -496,7 +513,7 @@ unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth
           "<literal>debug</literal>" uses syslog and logs to standard error.
           If NetworkManager is started in debug mode (<literal>--debug</literal>)
           this option is ignored and "<literal>debug</literal>" is always used.
-          Otherwise, the default is "<literal>journal</literal>".
+          Otherwise, the default is "<literal>&NM_CONFIG_LOGGING_BACKEND_DEFAULT_TEXT;</literal>".
           </para></listitem>
         </varlistentry>
         <varlistentry>
@@ -505,7 +522,7 @@ unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth
           auditd, the audit daemon.  If <literal>false</literal>, audit
           records will be sent only to the NetworkManager logging
           system. If set to <literal>true</literal>, they will be also
-          sent to auditd.  The default value is <literal>true</literal>.
+          sent to auditd.  The default value is <literal>&NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT;</literal>.
           </para></listitem>
         </varlistentry>
       </variablelist>
diff --git a/man/NetworkManager.conf.xml.in b/man/NetworkManager.conf.xml.in
deleted file mode 100644
index 2736065e..00000000
--- a/man/NetworkManager.conf.xml.in
+++ /dev/null
@@ -1,1020 +0,0 @@
-<?xml version='1.0'?> <!--*-nxml-*-->
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
-"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
-
-<!--
-Copyright 2010 - 2014 Red Hat, Inc.
--->
-
-<refentry id="NetworkManager.conf">
-  <refentryinfo>
-    <title>NetworkManager.conf</title>
-    <author>NetworkManager developers</author>
-  </refentryinfo>
-
-  <refmeta>
-    <refentrytitle>NetworkManager.conf</refentrytitle>
-    <manvolnum>5</manvolnum>
-    <refmiscinfo class="source">NetworkManager</refmiscinfo>
-    <refmiscinfo class="manual">Configuration</refmiscinfo>
-    <refmiscinfo class="version">1.2</refmiscinfo>
-  </refmeta>
-
-  <refnamediv>
-    <refname>NetworkManager.conf</refname>
-    <refpurpose>NetworkManager configuration file</refpurpose>
-  </refnamediv>
-
-  <refsynopsisdiv>
-    <para><filename>/etc/NetworkManager/NetworkManager.conf</filename>,
-    <filename>/etc/NetworkManager/conf.d/<replaceable>name</replaceable>.conf</filename>,
-    <filename>/usr/lib/NetworkManager/conf.d/<replaceable>name</replaceable>.conf</filename>,
-    <filename>/var/lib/NetworkManager/NetworkManager-intern.conf</filename>
-    </para>
-  </refsynopsisdiv>
-
-  <refsect1>
-    <title>Description</title>
-    <para><literal>NetworkManager.conf</literal> is the configuration file for NetworkManager. It is used
-    to set up various aspects of NetworkManager's behavior. The
-    location of the main file and configuration directories may be changed
-    through use of the <option>--config</option>, <option>--config-dir</option>,
-    <option>--system-config-dir</option>, and <option>--intern-config</option>
-    argument for NetworkManager, respectively.
-    </para>
-    <para>If a default <literal>NetworkManager.conf</literal> is
-    provided by your distribution's packages, you should not modify
-    it, since your changes may get overwritten by package
-    updates. Instead, you can add additional <literal>.conf</literal>
-    files to the <literal>/etc/NetworkManager/conf.d</literal> directory.
-    These will be read in order, with later files overriding earlier ones.
-    Packages might install further configuration snippets to <literal>/usr/lib/NetworkManager/conf.d</literal>.
-    This directory is parsed first, even before <literal>NetworkManager.conf</literal>.
-    The loading of a file <literal>/usr/lib/NetworkManager/conf.d/<replaceable>name</replaceable>.conf</literal>
-    can be prevented by adding a file <literal>/etc/NetworkManager/conf.d/<replaceable>name</replaceable>.conf</literal>.
-    In this case, the file from the etc configuration shadows the file from the
-    system configuration directory.
-    </para>
-    <para>
-    NetworkManager can overwrite certain user configuration options via D-Bus or other internal
-    operations. In this case it writes those changes to <literal>/var/lib/NetworkManager/NetworkManager-intern.conf</literal>.
-    This file is not intended to be modified by the user, but it is read last and can shadow
-    user configuration from <literal>NetworkManager.conf</literal>.
-    </para>
-
-  </refsect1>
-
-  <refsect1>
-    <title>File Format</title>
-    <para>
-      The configuration file format is so-called key file (sort of
-      ini-style format).  It consists of sections (groups) of
-      key-value pairs. Lines beginning with a '#' and blank lines are
-      considered comments. Sections are started by a header line
-      containing the section enclosed in '[' and ']', and ended
-      implicitly by the start of the next section or the end of the
-      file. Each key-value pair must be contained in a section.
-    </para>
-    <para>
-      For keys that take a list of devices as their value, you can
-      specify devices by their MAC addresses or interface names, or
-      "*" to specify all devices. See <xref linkend="device-spec"/>
-      below.
-    </para>
-    <para>
-      Minimal system settings configuration file looks like this:
-      <programlisting>
-[main]
-plugins=keyfile
-</programlisting>
-    </para>
-    <para>
-      As an extension to the normal keyfile format, you can also
-      append a value to a previously-set list-valued key by doing:
-      <programlisting>
-plugins+=another-plugin
-plugins-=remove-me
-</programlisting>
-    </para>
-  </refsect1>
-
-  <refsect1>
-    <title><literal>main</literal> section</title>
-    <variablelist>
-      <varlistentry>
-        <term><varname>plugins</varname></term>
-        <listitem>
-          <para>
-            Lists system settings plugin names separated by ','. These
-            plugins are used to read and write system-wide
-            connections. When multiple plugins are specified, the
-            connections are read from all listed plugins. When writing
-            connections, the plugins will be asked to save the
-            connection in the order listed here; if the first plugin
-            cannot write out that connection type (or can't write out
-            any connections) the next plugin is tried, etc. If none of
-            the plugins can save the connection, an error is returned
-            to the user.
-          </para>
-          <para>
-            If NetworkManager defines a distro-specific
-            network-configuration plugin for your system, then that
-            will normally be listed here. (See below for the available
-            plugins.) Note that the <literal>keyfile</literal> plugin
-            is always appended to the end of this list (if it doesn't
-            already appear earlier in the list), so if there is no
-            distro-specific plugin for your system then you can leave
-            this key unset and NetworkManager will fall back to using
-            <literal>keyfile</literal>.
-          </para>
-        </listitem>
-      </varlistentry>
-      <varlistentry>
-        <term><varname>monitor-connection-files</varname></term>
-        <listitem><para>Whether the configured settings plugin(s)
-        should set up file monitors and immediately pick up changes
-        made to connection files while NetworkManager is running. This
-        is disabled by default; NetworkManager will only read
-        the connection files at startup, and when explicitly requested
-        via the ReloadConnections D-Bus call. If this key is set to
-        '<literal>true</literal>', then NetworkManager will reload
-        connection files any time they changed.
-        Automatic reloading is not advised because there are race conditions
-        involved and it depends on the way how the editor updates the file.
-        In some situations, NetworkManager might first delete and add the
-        connection anew, instead of updating the existing one. Also, NetworkManager
-        might pick up incomplete settings while the user is still editing the files.
-        </para></listitem>
-      </varlistentry>
-      <varlistentry>
-        <term><varname>auth-polkit</varname></term>
-        <listitem><para>Whether the system uses PolicyKit for authorization.
-        If <literal>false</literal>, all requests will be allowed. If
-        <literal>true</literal>, non-root requests are authorized using PolicyKit.
-        The default value is <literal>@NM_CONFIG_DEFAULT_AUTH_POLKIT_TEXT@</literal>.
-        </para></listitem>
-      </varlistentry>
-      <varlistentry>
-        <term><varname>dhcp</varname></term>
-        <listitem><para>This key sets up what DHCP client
-        NetworkManager will use. Allowed values are
-        <literal>dhclient</literal>, <literal>dhcpcd</literal>, and
-        <literal>internal</literal>. The <literal>dhclient</literal>
-        and <literal>dhcpcd</literal> options require the indicated
-        clients to be installed. The <literal>internal</literal>
-        option uses a built-in DHCP client which is not currently as
-        featureful as the external clients.</para>
-        <para>If this key is missing, available DHCP clients are
-        looked for in this order: <literal>dhclient</literal>,
-        <literal>dhcpcd</literal>,
-        <literal>internal</literal>.</para></listitem>
-      </varlistentry>
-      <varlistentry>
-        <term><varname>no-auto-default</varname></term>
-        <listitem><para>Specify devices for which
-        NetworkManager shouldn't create default wired connection
-        (Auto eth0).  By default, NetworkManager creates a temporary
-        wired connection for any Ethernet device that is managed and
-        doesn't have a connection configured. List a device in this
-        option to inhibit creating the default connection for the
-        device. May have the special value <literal>*</literal> to
-        apply to all devices.</para>
-        <para>When the default wired connection is deleted or saved
-        to a new persistent connection by a plugin, the device is
-        added to a list in the file
-        <filename>/var/run/NetworkManager/no-auto-default.state</filename>
-        to prevent creating the default connection for that device
-        again.</para>
-        <para>See <xref linkend="device-spec"/> for the syntax how to
-        specify a device.
-        </para>
-        <para>
-          Example:
-          <programlisting>
-no-auto-default=00:22:68:5c:5d:c4,00:1e:65:ff:aa:ee
-no-auto-default=eth0,eth1
-no-auto-default=*
-</programlisting>
-        </para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term><varname>ignore-carrier</varname></term>
-        <listitem>
-          <para>
-            Specify devices for which NetworkManager will (partially)
-            ignore the carrier state. Normally, for
-            device types that support carrier-detect, such as Ethernet
-            and InfiniBand, NetworkManager will only allow a
-            connection to be activated on the device if carrier is
-            present (ie, a cable is plugged in), and it will
-            deactivate the device if carrier drops for more than a few
-            seconds.
-          </para>
-          <para>
-            Listing a device here will allow activating connections on
-            that device even when it does not have carrier, provided
-            that the connection uses only statically-configured IP
-            addresses. Additionally, it will allow any active
-            connection (whether static or dynamic) to remain active on
-            the device when carrier is lost.
-          </para>
-          <para>
-            Note that the "carrier" property of NMDevices and device D-Bus
-            interfaces will still reflect the actual device state; it's just
-            that NetworkManager will not make use of that information.
-          </para>
-          <para>See <xref linkend="device-spec"/> for the syntax how to
-           specify a device.
-          </para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term><varname>assume-ipv6ll-only</varname></term>
-        <listitem>
-          <para>
-            Specify devices for which NetworkManager will try to
-            generate a connection based on initial configuration when
-            the device only has an IPv6 link-local address.
-          </para>
-          <para>See <xref linkend="device-spec"/> for the syntax how to
-           specify a device.
-          </para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term><varname>configure-and-quit</varname></term>
-        <listitem>
-          <para>
-            When set to '<literal>true</literal>', NetworkManager quits after
-            performing initial network configuration but spawns small helpers
-            to preserve DHCP leases and IPv6 addresses.  This is useful in
-            environments where network setup is more or less static or it is
-            desirable to save process time but still handle some dynamic
-            configurations.  When this option is <literal>true</literal>,
-            network configuration for WiFi, WWAN, Bluetooth, ADSL, and PPPoE
-            interfaces cannot be preserved due to their use of external
-            services, and these devices will be deconfigured when NetworkManager
-            quits even though other interface's configuration may be preserved.
-            Also, to preserve DHCP addresses the '<literal>dhcp</literal>' option
-            must be set to '<literal>internal</literal>'. The default value of
-            the '<literal>configure-and-quit</literal>' option is
-            '<literal>false</literal>', meaning that NetworkManager will continue
-            running after initial network configuration and continue responding
-            to system and hardware events, D-Bus requests, and user commands.
-          </para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term><varname>dns</varname></term>
-        <listitem><para>Set the DNS (<filename>resolv.conf</filename>) processing mode.</para>
-        <para><literal>default</literal>: The default if the key is
-        not specified. NetworkManager will update
-        <filename>resolv.conf</filename> to reflect the nameservers
-        provided by currently active connections.</para>
-        <para><literal>dnsmasq</literal>: NetworkManager will run
-        dnsmasq as a local caching nameserver, using a "split DNS"
-        configuration if you are connected to a VPN, and then update
-        <filename>resolv.conf</filename> to point to the local
-        nameserver.</para>
-        <para><literal>unbound</literal>: NetworkManager will talk
-        to unbound and dnssec-triggerd, providing a "split DNS"
-        configuration with DNSSEC support. The /etc/resolv.conf
-        will be managed by dnssec-trigger daemon.</para>
-        <para><literal>none</literal>: NetworkManager will not
-        modify resolv.conf.</para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term><varname>rc-manager</varname></term>
-        <listitem><para>Set the <filename>resolv.conf</filename>
-        management mode. The default value depends on how NetworkManager
-        was built. Regardless of this setting, NetworkManager will
-        always write resolv.conf to its runtime state directory.</para>
-        <para><literal>none</literal>: NetworkManager will symlink
-        <filename>/etc/resolv.conf</filename> to its private
-        resolv.conf file in the runtime state directory.</para>
-        <para><literal>file</literal>: NetworkManager will write
-        <filename>/etc/resolv.conf</filename> as file.</para>
-        <para><literal>resolvconf</literal>: NetworkManager will run
-        resolvconf to update the DNS configuration.</para>
-        <para><literal>netconfig</literal>: NetworkManager will run
-        netconfig to update the DNS configuration.</para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term><varname>debug</varname></term>
-        <listitem><para>Comma separated list of options to aid
-        debugging. This value will be combined with the environment
-        variable <literal>NM_DEBUG</literal>. Currently the following
-        values are supported:</para>
-        <para>
-          <literal>RLIMIT_CORE</literal>: set ulimit -c unlimited
-          to write out core dumps. Beware, that a core dump can contain
-          sensitive information such as passwords or configuration settings.
-        </para>
-        <para>
-          <literal>fatal-warnings</literal>: set g_log_set_always_fatal()
-          to core dump on warning messages from glib. This is equivalent
-          to the --g-fatal-warnings command line option.
-        </para>
-        </listitem>
-      </varlistentry>
-
-    </variablelist>
-  </refsect1>
-
-  <refsect1>
-    <title><literal>keyfile</literal> section</title>
-    <para>This section contains keyfile-plugin-specific options, and
-    is normally only used when you are not using any other
-    distro-specific plugin.</para>
-
-    <para>
-      <variablelist>
-        <varlistentry>
-          <term><varname>hostname</varname></term>
-          <listitem><para>This key is deprecated and has no effect
-          since the hostname is now stored in /etc/hostname or other
-          system configuration files according to build options.
-          </para></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><varname>path</varname></term>
-          <listitem>
-            <para>The location where keyfiles are read and stored.
-            This defaults to "<literal>@NM_CONFIG_KEYFILE_PATH_DEFAULT@</literal>".
-            </para>
-          </listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><varname>unmanaged-devices</varname></term>
-          <listitem><para>Set devices that should be ignored by
-           NetworkManager.
-          </para>
-          <para>See <xref linkend="device-spec"/> for the syntax how to
-           specify a device.
-          </para>
-          <para>
-            Example:
-            <programlisting>
-unmanaged-devices=interface-name:em4
-unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth2
-</programlisting>
-          </para>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-    </para>
-  </refsect1>
-
-  <refsect1>
-    <title><literal>ifupdown</literal> section</title>
-    <para>This section contains ifupdown-specific options and thus only
-    has effect when using the <literal>ifupdown</literal> plugin.</para>
-
-    <para>
-      <variablelist>
-        <varlistentry>
-          <term><varname>managed</varname></term>
-          <listitem><para>If set to <literal>true</literal>, then
-          interfaces listed in
-          <filename>/etc/network/interfaces</filename> are managed by
-          NetworkManager.  If set to <literal>false</literal>, then
-          any interface listed in
-          <filename>/etc/network/interfaces</filename> will be ignored
-          by NetworkManager. Remember that NetworkManager controls the
-          default route, so because the interface is ignored,
-          NetworkManager may assign the default route to some other
-          interface.</para>
-          <para>
-            The default value is <literal>false</literal>.
-          </para>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-    </para>
-  </refsect1>
-
-  <refsect1>
-    <title><literal>logging</literal> section</title>
-    <para>This section controls NetworkManager's logging.  Any
-    settings here are overridden by the <option>--log-level</option>
-    and <option>--log-domains</option> command-line options.</para>
-
-    <para>
-      <variablelist>
-        <varlistentry>
-          <term><varname>level</varname></term>
-          <listitem><para>The default logging verbosity level.
-          One of <literal>OFF</literal>, <literal>ERR</literal>,
-          <literal>WARN</literal>, <literal>INFO</literal>,
-          <literal>DEBUG</literal>, <literal>TRACE</literal>.  The ERR
-          level logs only critical errors.  WARN logs warnings that may
-          reflect operation. INFO logs various informational messages that
-          are useful for tracking state and operations.  DEBUG enables
-          verbose logging for debugging purposes. TRACE enables even more
-          verbose logging then DEBUG level.  Subsequent levels also log
-          all messages from earlier levels; thus setting the log level
-          to INFO also logs error and warning messages.</para></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><varname>domains</varname></term>
-          <listitem><para>The following log domains are available:
-          PLATFORM, RFKILL, ETHER, WIFI, BT, MB, DHCP4, DHCP6, PPP,
-          WIFI_SCAN, IP4, IP6, AUTOIP4, DNS, VPN, SHARING, SUPPLICANT,
-          AGENTS, SETTINGS, SUSPEND, CORE, DEVICE, OLPC, WIMAX,
-          INFINIBAND, FIREWALL, ADSL, BOND, VLAN, BRIDGE, DBUS_PROPS,
-          TEAM, CONCHECK, DCB, DISPATCH, AUDIT.</para>
-          <para>In addition, these special domains can be used: NONE,
-          ALL, DEFAULT, DHCP, IP.</para>
-          <para>You can specify per-domain log level overrides by
-          adding a colon and a log level to any domain. E.g.,
-          "<literal>WIFI:DEBUG,WIFI_SCAN:OFF</literal>".</para></listitem>
-        </varlistentry>
-        <varlistentry>
-          <para>Domain descriptions:
-          <simplelist type="horiz" columns="1">
-          <member>PLATFORM    : OS (platform) operations</member>
-          <member>RFKILL      : RFKill subsystem operations</member>
-          <member>ETHER       : Ethernet device operations</member>
-          <member>WIFI        : Wi-Fi device operations</member>
-          <member>BT          : Bluetooth operations</member>
-          <member>MB          : Mobile broadband operations</member>
-          <member>DHCP4       : DHCP for IPv4</member>
-          <member>DHCP6       : DHCP for IPv6</member>
-          <member>PPP         : Point-to-point protocol operations</member>
-          <member>WIFI_SCAN   : Wi-Fi scanning operations</member>
-          <member>IP4         : IPv4-related operations</member>
-          <member>IP6         : IPv6-related operations</member>
-          <member>AUTOIP4     : AutoIP operations</member>
-          <member>DNS         : Domain Name System related operations</member>
-          <member>VPN         : Virtual Private Network connections and operations</member>
-          <member>SHARING     : Connection sharing</member>
-          <member>SUPPLICANT  : WPA supplicant related operations</member>
-          <member>AGENTS      : Secret agents operations and communication</member>
-          <member>SETTINGS    : Settings/config service operations</member>
-          <member>SUSPEND     : Suspend/resume</member>
-          <member>CORE        : Core daemon and policy operations</member>
-          <member>DEVICE      : Activation and general interface operations</member>
-          <member>OLPC        : OLPC Mesh device operations</member>
-          <member>WIMAX       : WiMAX device operations</member>
-          <member>INFINIBAND  : InfiniBand device operations</member>
-          <member>FIREWALL    : FirewallD related operations</member>
-          <member>ADSL        : ADSL device operations</member>
-          <member>BOND        : Bonding operations</member>
-          <member>VLAN        : VLAN operations</member>
-          <member>BRIDGE      : Bridging operations</member>
-          <member>DBUS_PROPS  : D-Bus property changes</member>
-          <member>TEAM        : Teaming operations</member>
-          <member>CONCHECK    : Connectivity check</member>
-          <member>DCB         : Data Center Bridging (DCB) operations</member>
-          <member>DISPATCH    : Dispatcher scripts</member>
-          <member>AUDIT       : Audit records</member>
-          <member> </member>
-          <member>NONE        : when given by itself logging is disabled</member>
-          <member>ALL         : all log domains</member>
-          <member>DEFAULT     : default log domains</member>
-          <member>DHCP        : shortcut for "DHCP4,DHCP6"</member>
-          <member>IP          : shortcut for "IP4,IP6"</member>
-          <member> </member>
-          <member>HW          : deprecated alias for "PLATFORM"</member>
-          </simplelist>
-          </para>
-        </varlistentry>
-        <varlistentry>
-          <term><varname>backend</varname></term>
-          <listitem><para>The logging backend. Supported values
-          are "<literal>debug</literal>", "<literal>syslog</literal>",
-          "<literal>journal</literal>".
-          "<literal>debug</literal>" uses syslog and logs to standard error.
-          If NetworkManager is started in debug mode (<literal>--debug</literal>)
-          this option is ignored and "<literal>debug</literal>" is always used.
-          Otherwise, the default is "<literal>@NM_CONFIG_LOGGING_BACKEND_DEFAULT_TEXT@</literal>".
-          </para></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><varname>audit</varname></term>
-          <listitem><para>Whether the audit records are delivered to
-          auditd, the audit daemon.  If <literal>false</literal>, audit
-          records will be sent only to the NetworkManager logging
-          system. If set to <literal>true</literal>, they will be also
-          sent to auditd.  The default value is <literal>@NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT@</literal>.
-          </para></listitem>
-        </varlistentry>
-      </variablelist>
-    </para>
-  </refsect1>
-
-  <refsect1>
-    <title><literal>connection</literal> section</title>
-    <para>Specify default values for connections.
-    </para>
-    <para>
-      Example:
-<programlisting>
-[connection]
-ipv6.ip6-privacy=0
-</programlisting>
-    </para>
-    <refsect2>
-    <title>Supported Properties</title>
-    <para>
-      Not all properties can be overwritten, only the following
-      properties are supported to have their default values configured
-      (see <citerefentry><refentrytitle>nm-settings</refentrytitle><manvolnum>5</manvolnum></citerefentry> for details).
-      A default value is only consulted if the corresponding per-connection value
-      explicitly allows for that.
-      <variablelist>
-        <varlistentry>
-          <term><varname>connection.autoconnect-slaves</varname></term>
-        </varlistentry>
-        <varlistentry>
-          <term><varname>connection.lldp</varname></term>
-        </varlistentry>
-        <varlistentry>
-          <term><varname>ethernet.wake-on-lan</varname></term>
-        </varlistentry>
-        <varlistentry>
-          <term><varname>ipv4.dad-timeout</varname></term>
-        </varlistentry>
-        <varlistentry>
-          <term><varname>ipv4.dhcp-timeout</varname></term>
-          <listitem><para>If left unspecified, the default value for
-           the interface type is used.</para></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><varname>ipv4.route-metric</varname></term>
-        </varlistentry>
-        <varlistentry>
-          <term><varname>ipv6.ip6-privacy</varname></term>
-          <listitem><para>If <literal>ipv6.ip6-privacy</literal> is unset, use the content of
-            "/proc/sys/net/ipv6/conf/default/use_tempaddr" as last fallback.
-          </para></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><varname>ipv6.route-metric</varname></term>
-        </varlistentry>
-        <varlistentry>
-          <term><varname>vpn.timeout</varname></term>
-          <listitem><para>If left unspecified, default value of 60 seconds is used.</para></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><varname>wifi.mac-address-randomization</varname></term>
-          <listitem><para>If left unspecified, MAC address randomization is disabled.</para></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><varname>wifi.powersave</varname></term>
-          <listitem><para>If left unspecified, the default value
-          "<literal>ignore</literal>" will be used.</para></listitem>
-        </varlistentry>
-      </variablelist>
-    </para>
-    </refsect2>
-
-    <refsect2>
-    <title>Sections</title>
-    <para>
-        You can configure multiple <literal>connection</literal>
-        sections, by having different sections with a name that all start
-        with "connection".
-        Example:
-<programlisting>
-[connection]
-ipv6.ip6-privacy=0
-connection.autoconnect-slaves=1
-vpn.timeout=120
-
-[connection-wifi-wlan0]
-match-device=interface-name:wlan0
-ipv4.route-metric=50
-
-[connection-wifi-other]
-match-device=type:wifi
-ipv4.route-metric=55
-ipv6.ip6-privacy=1
-</programlisting>
-    </para>
-
-    <para>
-        The sections within one file are considered in order of appearance, with the
-        exception that the <literal>[connection]</literal> section is always
-        considered last. In the example above, this order is <literal>[connection-wifi-wlan0]</literal>,
-        <literal>[connection-wlan-other]</literal>, and <literal>[connection]</literal>.
-        When checking for a default configuration value, the sections are searched until
-        the requested value is found.
-        In the example above, "ipv4.route-metric" for wlan0 interface is set to 50,
-        and for all other Wi-Fi typed interfaces to 55. Also, Wi-Fi devices would have
-        IPv6 private addresses enabled by default, but other devices would have it disabled.
-        Note that also "wlan0" gets "ipv6.ip6-privacy=1", because although the section
-        "[connection-wifi-wlan0]" matches the device, it does not contain that property
-        and the search continues.
-    </para>
-    <para>
-        When having different sections in multiple files, sections from files that are read
-        later have higher priority. So within one file the priority of the sections is
-        top-to-bottom. Across multiple files later definitions take precedence.
-    </para>
-
-    <para>
-      The following properties further control how a connection section applies.
-      <variablelist>
-        <varlistentry>
-          <term><varname>match-device</varname></term>
-          <listitem><para>An optional device spec that restricts
-          when the section applies. See <xref linkend="device-spec"/>
-          for the possible values.
-          </para></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><varname>stop-match</varname></term>
-          <listitem><para>An optional boolean value which defaults to
-          <literal>no</literal>. If the section matches (based on
-          <literal>match-device</literal>), further sections will not be
-          considered even if the property in question is not present. In
-          the example above, if <literal>[connection-wifi-wlan0]</literal> would
-          have <literal>stop-match</literal> set to <literal>yes</literal>,
-          its <literal>ipv6.ip6-privacy</literal> value would be
-          unspecified.
-          </para></listitem>
-        </varlistentry>
-      </variablelist>
-    </para>
-    </refsect2>
-  </refsect1>
-
-  <refsect1>
-    <title><literal>connectivity</literal> section</title>
-    <para>This section controls NetworkManager's optional connectivity
-    checking functionality.  This allows NetworkManager to detect
-    whether or not the system can actually access the internet or
-    whether it is behind a captive portal.</para>
-
-    <para>
-      <variablelist>
-        <varlistentry>
-          <term><varname>uri</varname></term>
-          <listitem><para>The URI of a web page to periodically
-          request when connectivity is being checked.  This page
-          should return the header "X-NetworkManager-Status" with a
-          value of "online".  Alternatively, it's body content should
-          be set to "NetworkManager is online".  The body content
-          check can be controlled by the <literal>response</literal>
-          option.  If this option is blank or missing, connectivity
-          checking is disabled.
-          </para></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><varname>interval</varname></term>
-          <listitem><para>Specified in seconds; controls how often
-          connectivity is checked when a network connection exists. If
-          set to 0 connectivity checking is disabled.  If missing, the
-          default is 300 seconds.</para></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><varname>response</varname></term>
-          <listitem><para>If set controls what body content
-          NetworkManager checks for when requesting the URI for
-          connectivity checking.  If missing, defaults to
-          "NetworkManager is online" </para></listitem>
-        </varlistentry>
-      </variablelist>
-    </para>
-  </refsect1>
-
-  <refsect1>
-    <title><literal>global-dns</literal> section</title>
-    <para>This section specifies global DNS settings that override
-    connection-specific configuration.</para>
-    <para>
-      <variablelist>
-        <varlistentry>
-          <term><varname>searches</varname></term>
-          <listitem>
-            <para>
-             A list of search domains to be used during hostname lookup.
-           </para>
-          </listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><varname>options</varname></term>
-          <listitem>
-            <para>
-             A list of of options to be passed to the hostname resolver.
-           </para>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-    </para>
-  </refsect1>
-
-  <refsect1>
-    <title><literal>global-dns-domain</literal> sections</title>
-    <para>Sections with a name starting with the "global-dns-domain-"
-    prefix allow to define global DNS configuration for specific
-    domains.  The part of section name after "global-dns-domain-"
-    specifies the domain name a section applies to.  More specific
-    domains have the precedence over less specific ones and the
-    default domain is represented by the wildcard "*".  A default
-    domain section is mandatory.
-    </para>
-    <para>
-      <variablelist>
-        <varlistentry>
-          <term><varname>servers</varname></term>
-          <listitem>
-            <para>
-             A list of addresses of DNS servers to be used for the given domain.
-           </para>
-          </listitem>
-        </varlistentry>
-        <varlistentry>
-          <term><varname>options</varname></term>
-          <listitem>
-            <para>
-             A list of domain-specific DNS options. Not used at the moment.
-           </para>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-    </para>
-  </refsect1>
-
-  <refsect1>
-    <title><literal>.config</literal> sections</title>
-      <para>This is a special section that contains options which apply
-      to the configuration file that contains the option.
-    </para>
-    <para>
-      <variablelist>
-        <varlistentry>
-          <term><varname>enable</varname></term>
-          <listitem>
-            <para>
-              Defaults to "<literal>true</literal>". If "<literal>false</literal>",
-              the configuration file will be skipped during loading.
-              Note that the main configuration file <literal>NetworkManager.conf</literal>
-              cannot be disabled.
-<programlisting>
-# always skip loading the config file
-[.config]
-enable=false
-</programlisting>
-            </para>
-            <para>
-              You can also match against the version of NetworkManager. For example
-              the following are valid configurations:
-<programlisting>
-# only load on version 1.0.6
-[.config]
-enable=nm-version:1.0.6
-
-# load on all versions 1.0.x, but not 1.2.x
-[.config]
-enable=nm-version:1.0
-
-# only load on versions &gt;= 1.1.6. This does not match
-# with version 1.2.0 or 1.4.4. Only the last digit is considered.
-[.config]
-enable=nm-version-min:1.1.6
-
-# only load on versions &gt;= 1.2. Contrary to the previous
-# example, this also matches with 1.2.0, 1.2.10, 1.4.4, etc.
-[.config]
-enable=nm-version-min:1.2
-
-# Match against the maximum allowed version. The example matches
-# versions 1.2.0, 1.2.2, 1.2.4. Again, only the last version digit
-# is allowed to be smaller. So this would not match match on 1.1.10.
-[.config]
-enable=nm-version-max:1.2.6
-</programlisting>
-            </para>
-            <para>
-              You can also match against the value of the environment variable
-              <literal>NM_CONFIG_ENABLE_TAG</literal>, like:
-<programlisting>
-# always skip loading the file when running NetworkManager with
-# environment variable "NM_CONFIG_ENABLE_TAG=TAG1"
-[.config]
-enable=env:TAG1
-</programlisting>
-            </para>
-            <para>
-              More then one match can be specified. The configuration will be
-              enabled if one of the predicates matches ("or"). The special prefix "except:" can
-              be used to negate the match. Note that if one except-predicate
-              matches, the entire configuration will be disabled.
-              In other words, a except predicate always wins over other predicates.
-<programlisting>
-# enable the configuration either when the environment variable
-# is present or the version is at least 1.2.0.
-[.config]
-enable=env:TAG2,nm-version-min:1.2
-
-# enable the configuration for version &gt;= 1.2.0, but disable
-# it when the environment variable is set to "TAG3"
-[.config]
-enable=except:env:TAG3,nm-version-min:1.2
-
-# enable the configuration on &gt;= 1.3, &gt;= 1.2.6, and &gt;= 1.0.16.
-# Useful if a certain feature is only present since those releases.
-[.config]
-enable=nm-version-min:1.3,nm-version-min:1.2.6,nm-version-min:1.0.16
-</programlisting>
-            </para>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-    </para>
-  </refsect1>
-
-  <refsect1>
-    <title>Plugins</title>
-
-    <variablelist>
-      <varlistentry>
-        <term><varname>keyfile</varname></term>
-        <listitem>
-          <para>
-            The <literal>keyfile</literal> plugin is the generic
-            plugin that supports all the connection types and
-            capabilities that NetworkManager has. It writes files out
-            in an .ini-style format in
-            /etc/NetworkManager/system-connections.
-          </para>
-          <para>
-            The stored connection file may contain passwords and
-            private keys, so it will be made readable only to root,
-            and the plugin will ignore files that are readable or
-            writable by any user or group other than root.
-          </para>
-          <para>
-            This plugin is always active, and will automatically be
-            used to store any connections that aren't supported by any
-            other active plugin.
-          </para>
-        </listitem>
-      </varlistentry>
-      <varlistentry>
-        <term><varname>ifcfg-rh</varname></term>
-        <listitem>
-          <para>
-            This plugin is used on the Fedora and Red Hat Enterprise
-            Linux distributions to read and write configuration from
-            the standard
-            <filename>/etc/sysconfig/network-scripts/ifcfg-*</filename>
-            files. It currently supports reading Ethernet, Wi-Fi,
-            InfiniBand, VLAN, Bond, Bridge, and Team connections.
-            Enabling <literal>ifcfg-rh</literal> implicitly enables
-            <literal>ibft</literal> plugin, if it is available.
-            This can be disabled by adding <literal>no-ibft</literal>.
-          </para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term><varname>ifcfg-suse</varname></term>
-        <listitem>
-          <para>
-            This plugin is deprecated and its selection has no effect.
-            The <literal>keyfile</literal> plugin should be used
-            instead.
-          </para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term><varname>ifupdown</varname></term>
-        <listitem>
-          <para>
-            This plugin is used on the Debian and Ubuntu
-            distributions, and reads Ethernet and Wi-Fi connections
-            from <filename>/etc/network/interfaces</filename>.
-          </para>
-          <para>
-            This plugin is read-only; any connections (of any type)
-            added from within NetworkManager when you are using this
-            plugin will be saved using the <literal>keyfile</literal>
-            plugin instead.
-          </para>
-        </listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term><varname>ibft</varname>, <varname>no-ibft</varname></term>
-        <listitem>
-          <para>
-            This plugin allows to read iBFT configuration (iSCSI Boot Firmware Table).
-            The configuration is read using /sbin/iscsiadm. Users are expected to
-            configure iBFT connections via the firmware interfaces.
-            If ibft support is available, it is automatically enabled after
-            <literal>ifcfg-rh</literal>. This can be disabled by <literal>no-ibft</literal>.
-            You can also explicitly specify <literal>ibft</literal> to load the
-            plugin without <literal>ifcfg-rh</literal> or to change the plugin order.
-          </para>
-        </listitem>
-      </varlistentry>
-
-    </variablelist>
-  </refsect1>
-
-  <refsect1>
-    <title>Appendix</title>
-    <refsect2 id="device-spec">
-      <title>Device List Format</title>
-      <para>
-          The configuration options <literal>main.no-auto-default</literal>, <literal>main.ignore-carrier</literal>,
-          and <literal>keyfile.unmanaged-devices</literal> select devices based on a list of matchings.
-          Devices can be specified using the following format:
-      </para>
-      <para>
-      <variablelist>
-        <varlistentry>
-          <term>*</term>
-          <listitem><para>Matches every device.</para></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term>IFNAME</term>
-          <listitem><para>Case sensitive match of interface name of the device. Globbing is not supported.</para></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term>HWADDR</term>
-          <listitem><para>Match the MAC address of the device. Globbing is not supported</para></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term>interface-name:IFNAME</term>
-          <term>interface-name:~IFNAME</term>
-          <listitem><para>Case sensitive match of interface name of the device. Simple globbing is supported with
-             <literal>*</literal> and <literal>?</literal>. Ranges and escaping is not supported.</para></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term>interface-name:=IFNAME</term>
-          <listitem><para>Case sensitive match of interface name of the device. Globbing is disabled and <literal>IFNAME</literal>
-             is taken literally.</para></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term>mac:HWADDR</term>
-          <listitem><para>Match the MAC address of the device. Globbing is not supported</para></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term>s390-subchannels:HWADDR</term>
-          <listitem><para>Match the device based on the subchannel address. Globbing is not supported</para></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term>type:TYPE</term>
-          <listitem><para>Match the device type. Valid type names are as reported by "<literal>nmcli -f GENERAL.TYPE device show</literal>".
-          Globbing is not supported.</para></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term>except:SPEC</term>
-          <listitem><para>Negative match of a device. <literal>SPEC</literal> must be explicitly qualified with
-             a prefix such as <literal>interface-name:</literal>. A negative match has higher priority then the positive
-             matches above.</para></listitem>
-        </varlistentry>
-        <varlistentry>
-          <term>SPEC[,;]SPEC</term>
-          <listitem><para>Multiple specs can be concatenated with commas or semicolons. The order does not matter as
-            matches are either inclusive or negative (<literal>except:</literal>), with negative matches having higher
-            priority.
-            </para>
-            <para>Backslash is supported to escape the separators ';' and ',', and to express special
-            characters such as newline ('\n'), tabulator ('\t'), whitespace ('\s') and backslash ('\\'). The globbing of
-            interface names cannot be escaped. Whitespace is not a separator but will be trimmed between
-            two specs (unless escaped as '\s').
-            </para>
-          </listitem>
-        </varlistentry>
-      </variablelist>
-      </para>
-      <para>
-        Example:
-        <programlisting>
-interface-name:em4
-mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth2
-interface-name:vboxnet*,except:interface-name:vboxnet2
-*,except:mac:00:22:68:1c:59:b1
-</programlisting>
-      </para>
-    </refsect2>
-  </refsect1>
-
-  <refsect1>
-    <title>See Also</title>
-    <para>
-      <citerefentry><refentrytitle>NetworkManager</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
-      <citerefentry><refentrytitle>nmcli</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
-      <citerefentry><refentrytitle>nmcli-examples</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
-      <citerefentry><refentrytitle>nm-online</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
-      <citerefentry><refentrytitle>nm-settings</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
-      <citerefentry><refentrytitle>nm-applet</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
-      <citerefentry><refentrytitle>nm-connection-editor</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-    </para>
-  </refsect1>
-</refentry>
diff --git a/man/NetworkManager.xml b/man/NetworkManager.xml
index 3c4b733e..1088cc9c 100644
--- a/man/NetworkManager.xml
+++ b/man/NetworkManager.xml
@@ -7,9 +7,22 @@
 ]>
 
 <!--
- Copyright 2005 - 2014 Red Hat, Inc.
- Copyright 2005 - 2009 Novell, Inc.
- Copyright 2005 Robert Love
+  NetworkManager(8) manual page
+
+  Copyright 2005 - 2016 Red Hat, Inc.
+  Copyright 2005 - 2009 Novell, Inc.
+  Copyright 2005 Robert Love
+
+  Permission is granted to copy, distribute and/or modify this document
+  under the terms of the GNU Free Documentation License, Version 1.1
+  or any later version published by the Free Software Foundation;
+  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+  Texts. You may obtain a copy of the GNU Free Documentation License
+  from the Free Software Foundation by visiting their Web site or by
+  writing to:
+
+  Free Software Foundation, Inc.,
+  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 -->
 
 <refentry id="NetworkManager">
diff --git a/man/common.ent.in b/man/common.ent.in
index cd43b8d8..ae8897eb 100644
--- a/man/common.ent.in
+++ b/man/common.ent.in
@@ -1,2 +1,6 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <!ENTITY NM_VERSION "@NM_VERSION@">
+<!ENTITY sysconfdir "@sysconfdir@">
+<!ENTITY NM_CONFIG_DEFAULT_AUTH_POLKIT_TEXT "@NM_CONFIG_DEFAULT_AUTH_POLKIT_TEXT@">
+<!ENTITY NM_CONFIG_LOGGING_BACKEND_DEFAULT_TEXT "@NM_CONFIG_LOGGING_BACKEND_DEFAULT_TEXT@">
+<!ENTITY NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT "@NM_CONFIG_DEFAULT_LOGGING_AUDIT_TEXT@">
diff --git a/man/nm-online.1 b/man/nm-online.1
index 94e6406c..7a0c8087 100644
--- a/man/nm-online.1
+++ b/man/nm-online.1
@@ -2,12 +2,12 @@
 .\"     Title: nm-online
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
-.\"      Date: 04/05/2016
+.\"      Date: 04/12/2016
 .\"    Manual: General Commands Manual
-.\"    Source: NetworkManager 1.1.93
+.\"    Source: NetworkManager 1.1.94
 .\"  Language: English
 .\"
-.TH "NM\-ONLINE" "1" "" "NetworkManager 1\&.1\&.93" "General Commands Manual"
+.TH "NM\-ONLINE" "1" "" "NetworkManager 1\&.1\&.94" "General Commands Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/nm-online.xml b/man/nm-online.xml
index f1f7a0d4..7fdd2f3e 100644
--- a/man/nm-online.xml
+++ b/man/nm-online.xml
@@ -9,26 +9,18 @@
 <!--
   nm-online(1) manual page
 
-  This is free documentation; you can redistribute it and/or
-  modify it under the terms of the GNU General Public License as
-  published by the Free Software Foundation; either version 2 of
-  the License, or (at your option) any later version.
-
-  The GNU General Public License's references to "object code"
-  and "executables" are to be interpreted as the output of any
-  document formatting or typesetting system, including
-  intermediate and printed output.
-
-  This manual is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public Licence along
-  with this manual; if not, write to the Free Software Foundation, Inc.,
-  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
   Copyright 2010 - 2016 Red Hat, Inc.
+
+  Permission is granted to copy, distribute and/or modify this document
+  under the terms of the GNU Free Documentation License, Version 1.1
+  or any later version published by the Free Software Foundation;
+  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+  Texts. You may obtain a copy of the GNU Free Documentation License
+  from the Free Software Foundation by visiting their Web site or by
+  writing to:
+
+  Free Software Foundation, Inc.,
+  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 -->
 
 <refentry id='nm-online'>
diff --git a/man/nm-settings-ifcfg-rh.5 b/man/nm-settings-ifcfg-rh.5
index 6eef8eb8..1dbc66dc 100644
--- a/man/nm-settings-ifcfg-rh.5
+++ b/man/nm-settings-ifcfg-rh.5
@@ -2,12 +2,12 @@
 .\"     Title: nm-settings-ifcfg-rh
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
-.\"      Date: 04/05/2016
+.\"      Date: 04/12/2016
 .\"    Manual: Configuration
-.\"    Source: NetworkManager 1.1.93
+.\"    Source: NetworkManager 1.1.94
 .\"  Language: English
 .\"
-.TH "NM\-SETTINGS\-IFCFG\" "5" "" "NetworkManager 1\&.1\&.93" "Configuration"
+.TH "NM\-SETTINGS\-IFCFG\" "5" "" "NetworkManager 1\&.1\&.94" "Configuration"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/nm-settings-ifcfg-rh.xml b/man/nm-settings-ifcfg-rh.xml
index 02b6bb14..b7af978f 100644
--- a/man/nm-settings-ifcfg-rh.xml
+++ b/man/nm-settings-ifcfg-rh.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
-<refentry id="nm-settings-ifcfg-rh"><refentryinfo><title>nm-settings-ifcfg-rh</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings-ifcfg-rh</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.1.93</refmiscinfo></refmeta><refnamediv><refname>nm-settings-ifcfg-rh</refname><refpurpose>Description of <emphasis>ifcfg-rh</emphasis> settings plugin</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para>
+<refentry id="nm-settings-ifcfg-rh"><refentryinfo><title>nm-settings-ifcfg-rh</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings-ifcfg-rh</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.1.94</refmiscinfo></refmeta><refnamediv><refname>nm-settings-ifcfg-rh</refname><refpurpose>Description of <emphasis>ifcfg-rh</emphasis> settings plugin</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para>
           NetworkManager is based on the concept of connection profiles that contain
           network configuration (see <citerefentry><refentrytitle>nm-settings</refentrytitle><manvolnum>5</manvolnum></citerefentry> for details). The profiles can be
           stored in various formats. NetworkManager uses plugins for reading and writing
diff --git a/man/nm-settings-keyfile.5 b/man/nm-settings-keyfile.5
index aa258355..5f187d5d 100644
--- a/man/nm-settings-keyfile.5
+++ b/man/nm-settings-keyfile.5
@@ -2,12 +2,12 @@
 .\"     Title: nm-settings-keyfile
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
-.\"      Date: 04/05/2016
+.\"      Date: 04/12/2016
 .\"    Manual: Configuration
-.\"    Source: NetworkManager 1.1.93
+.\"    Source: NetworkManager 1.1.94
 .\"  Language: English
 .\"
-.TH "NM\-SETTINGS\-KEYFIL" "5" "" "NetworkManager 1\&.1\&.93" "Configuration"
+.TH "NM\-SETTINGS\-KEYFIL" "5" "" "NetworkManager 1\&.1\&.94" "Configuration"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/nm-settings-keyfile.xml b/man/nm-settings-keyfile.xml
index fe3c4423..f4c8e322 100644
--- a/man/nm-settings-keyfile.xml
+++ b/man/nm-settings-keyfile.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
-<refentry id="nm-settings-keyfile"><refentryinfo><title>nm-settings-keyfile</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings-keyfile</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.1.93</refmiscinfo></refmeta><refnamediv><refname>nm-settings-keyfile</refname><refpurpose>Description of <emphasis>keyfile</emphasis> settings plugin</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para>
+<refentry id="nm-settings-keyfile"><refentryinfo><title>nm-settings-keyfile</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings-keyfile</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.1.94</refmiscinfo></refmeta><refnamediv><refname>nm-settings-keyfile</refname><refpurpose>Description of <emphasis>keyfile</emphasis> settings plugin</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para>
           NetworkManager is based on the concept of connection profiles that contain
           network configuration (see <citerefentry><refentrytitle>nm-settings</refentrytitle><manvolnum>5</manvolnum></citerefentry> for details). The profiles can be
           stored in various formats. NetworkManager uses plugins for reading and writing
diff --git a/man/nm-settings.5 b/man/nm-settings.5
index d1c61ade..3f94730c 100644
--- a/man/nm-settings.5
+++ b/man/nm-settings.5
@@ -2,12 +2,12 @@
 .\"     Title: nm-settings
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
-.\"      Date: 04/05/2016
+.\"      Date: 04/12/2016
 .\"    Manual: Configuration
-.\"    Source: NetworkManager 1.1.93
+.\"    Source: NetworkManager 1.1.94
 .\"  Language: English
 .\"
-.TH "NM\-SETTINGS" "5" "" "NetworkManager 1\&.1\&.93" "Configuration"
+.TH "NM\-SETTINGS" "5" "" "NetworkManager 1\&.1\&.94" "Configuration"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/nm-settings.xml b/man/nm-settings.xml
index b1ee7208..4d51f648 100644
--- a/man/nm-settings.xml
+++ b/man/nm-settings.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
-<refentry id="nm-settings"><refentryinfo><title>nm-settings</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.1.93</refmiscinfo></refmeta><refnamediv><refname>nm-settings</refname><refpurpose>Description of settings and properties of NetworkManager connection profiles</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para>
+<refentry id="nm-settings"><refentryinfo><title>nm-settings</title><author>NetworkManager developers</author></refentryinfo><refmeta><refentrytitle>nm-settings</refentrytitle><manvolnum>5</manvolnum><refmiscinfo class="source">NetworkManager</refmiscinfo><refmiscinfo class="manual">Configuration</refmiscinfo><refmiscinfo class="version">1.1.94</refmiscinfo></refmeta><refnamediv><refname>nm-settings</refname><refpurpose>Description of settings and properties of NetworkManager connection profiles</refpurpose></refnamediv><refsect1 id="description"><title>Description</title><para>
           NetworkManager is based on a concept of connection profiles, sometimes referred to as
           connections only. These connection profiles contain a network configuration. When
           NetworkManager activates a connection profile on a network device the configuration will
diff --git a/man/nmcli-examples.7 b/man/nmcli-examples.7
index 2bb5bb77..9c173aff 100644
--- a/man/nmcli-examples.7
+++ b/man/nmcli-examples.7
@@ -2,12 +2,12 @@
 .\"     Title: nmcli-examples
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
-.\"      Date: 04/05/2016
+.\"      Date: 04/12/2016
 .\"    Manual: Examples
-.\"    Source: NetworkManager 1.1.93
+.\"    Source: NetworkManager 1.1.94
 .\"  Language: English
 .\"
-.TH "NMCLI\-EXAMPLES" "7" "" "NetworkManager 1\&.1\&.93" "Examples"
+.TH "NMCLI\-EXAMPLES" "7" "" "NetworkManager 1\&.1\&.94" "Examples"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -30,8 +30,8 @@
 .SH "NAME"
 nmcli-examples \- usage examples of nmcli
 .SH "SYNOPSIS"
-.HP \w'\fBnmcli\ \fR\fB[OPTIONS...]\fR\ 'u
-\fBnmcli \fR\fB[OPTIONS...]\fR
+.HP \w'\fBnmcli\fR\ 'u
+\fBnmcli\fR [OPTIONS...]
 .SH "DESCRIPTION"
 .PP
 \fInmcli\fR
@@ -41,8 +41,6 @@ manual page\&.
 .PP
 The purpose of this manual page is to provide you with various examples and usage scenarios of
 \fInmcli\fR\&.
-.PP
-Note: this page has "work\-in\-progress" status\&.
 .SH "EXAMPLES"
 .PP
 \fBExample\ \&1.\ \&Listing available Wi-Fi APs\fR
@@ -51,7 +49,7 @@ Note: this page has "work\-in\-progress" status\&.
 .RS 4
 .\}
 .nf
-\fB$ nmcli device wifi list\fR
+$ \fBnmcli device wifi list\fR
 *  SSID               MODE    CHAN  RATE       SIGNAL  BARS  SECURITY
    netdatacomm_local  Infra   6     54 Mbit/s  37      ▂▄__  WEP
 *  F1                 Infra   11    54 Mbit/s  98      ▂▄▆█  WPA1
@@ -81,7 +79,7 @@ will show all of them\&.
 .RS 4
 .\}
 .nf
-\fB$ nmcli \-p \-f general,wifi\-properties device show wlan0\fR
+$ \fBnmcli \-p \-f general,wifi\-properties device show wlan0\fR
 ===========================================================================
                         Device details (wlan0)
 ===========================================================================
@@ -128,7 +126,7 @@ This command shows information about a Wi\-Fi device\&.
 .RS 4
 .\}
 .nf
-\fB$ nmcli general permissions\fR
+$ \fBnmcli general permissions\fR
 PERMISSION                                                VALUE
 org\&.freedesktop\&.NetworkManager\&.enable\-disable\-network     yes
 org\&.freedesktop\&.NetworkManager\&.enable\-disable\-wifi        yes
@@ -170,7 +168,7 @@ More information about polkit can be found at http://www\&.freedesktop\&.org/wik
 .RS 4
 .\}
 .nf
-\fB$ nmcli general logging\fR
+$ \fBnmcli general logging\fR
 LEVEL  DOMAINS
 INFO   PLATFORM,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,WIFI_SCAN,IP4,IP6,A
 UTOIP4,DNS,VPN,SHARING,SUPPLICANT,AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC,
@@ -189,8 +187,8 @@ This command shows current NetworkManager logging status\&.
 .RS 4
 .\}
 .nf
-\fB$ nmcli g log level DEBUG domains CORE,ETHER,IP\fR
-\fB$ nmcli g log level INFO domains DEFAULT\fR
+$ \fBnmcli g log level DEBUG domains CORE,ETHER,IP\fR
+$ \fBnmcli g log level INFO domains DEFAULT\fR
 .fi
 .if n \{\
 .RE
@@ -206,9 +204,9 @@ manual page for available logging levels and domains\&.
 .RS 4
 .\}
 .nf
-\fB$ nmcli con add type bond ifname mybond0 mode active\-backup\fR
-\fB$ nmcli con add type ethernet ifname eth1 master mybond0\fR
-\fB$ nmcli con add type ethernet ifname eth2 master mybond0\fR
+$ \fBnmcli con add type bond ifname mybond0 mode active\-backup\fR
+$ \fBnmcli con add type ethernet ifname eth1 master mybond0\fR
+$ \fBnmcli con add type ethernet ifname eth2 master mybond0\fR
 .fi
 .if n \{\
 .RE
@@ -230,9 +228,9 @@ interface, the second to
 .RS 4
 .\}
 .nf
-\fB$ nmcli con add type team con\-name Team1 ifname Team1 config team1\-master\-json\&.conf\fR
-\fB$ nmcli con add type ethernet con\-name Team1\-slave1 ifname em1 master Team1\fR
-\fB$ nmcli con add type ethernet con\-name Team1\-slave2 ifname em2 master Team1\fR
+$ \fBnmcli con add type team con\-name Team1 ifname Team1 config team1\-master\-json\&.conf\fR
+$ \fBnmcli con add type ethernet con\-name Team1\-slave1 ifname em1 master Team1\fR
+$ \fBnmcli con add type ethernet con\-name Team1\-slave2 ifname em2 master Team1\fR
 .fi
 .if n \{\
 .RE
@@ -257,8 +255,8 @@ will use its default configuration\&. You will activate the whole setup by activ
 .RS 4
 .\}
 .nf
-  \fB$ nmcli con up Team1\-slave1\fR
-  \fB$ nmcli con up Team1\-slave2\fR
+  $ \fBnmcli con up Team1\-slave1\fR
+  $ \fBnmcli con up Team1\-slave2\fR
 .fi
 .if n \{\
 .RE
@@ -272,10 +270,10 @@ By default, the created profiles are marked for auto\-activation\&. But if anoth
 .RS 4
 .\}
 .nf
-\fB$ nmcli con add type bridge con\-name TowerBridge ifname TowerBridge\fR
-\fB$ nmcli con add type ethernet con\-name br\-slave\-1 ifname ens3 master TowerBridge\fR
-\fB$ nmcli con add type ethernet con\-name br\-slave\-2 ifname ens4 master TowerBridge\fR
-\fB$ nmcli con modify TowerBridge bridge\&.stp no\fR
+$ \fBnmcli con add type bridge con\-name TowerBridge ifname TowerBridge\fR
+$ \fBnmcli con add type ethernet con\-name br\-slave\-1 ifname ens3 master TowerBridge\fR
+$ \fBnmcli con add type ethernet con\-name br\-slave\-2 ifname ens4 master TowerBridge\fR
+$ \fBnmcli con modify TowerBridge bridge\&.stp no\fR
 .fi
 .if n \{\
 .RE
@@ -294,12 +292,12 @@ interface, the second to
 .RS 4
 .\}
 .nf
-\fB$ nmcli con add con\-name my\-con\-em1 ifname em1 type ethernet \e
+$ \fBnmcli con add con\-name my\-con\-em1 ifname em1 type ethernet \e
   ip4 192\&.168\&.100\&.100/24 gw4 192\&.168\&.100\&.1 ip4 1\&.2\&.3\&.4 ip6 abbe::cafe\fR
-\fB$ nmcli con mod my\-con\-em1 ipv4\&.dns "8\&.8\&.8\&.8 8\&.8\&.4\&.4"\fR
-\fB$ nmcli con mod my\-con\-em1 +ipv4\&.dns 1\&.2\&.3\&.4\fR
-\fB$ nmcli con mod my\-con\-em1 ipv6\&.dns "2001:4860:4860::8888 2001:4860:4860::8844"\fR
-\fB$ nmcli \-p con show my\-con\-em1\fR
+$ \fBnmcli con mod my\-con\-em1 ipv4\&.dns "8\&.8\&.8\&.8 8\&.8\&.4\&.4"\fR
+$ \fBnmcli con mod my\-con\-em1 +ipv4\&.dns 1\&.2\&.3\&.4\fR
+$ \fBnmcli con mod my\-con\-em1 ipv6\&.dns "2001:4860:4860::8888 2001:4860:4860::8844"\fR
+$ \fBnmcli \-p con show my\-con\-em1\fR
 .fi
 .if n \{\
 .RE
@@ -318,7 +316,7 @@ command displays the profile so that all parameters can be reviewed\&.
 .RS 4
 .\}
 .nf
-\fB$ nmcli \-t \-f general \-e yes \-m tab dev show eth0\fR
+$ \fBnmcli \-t \-f general \-e yes \-m tab dev show eth0\fR
 GENERAL:eth0:ethernet:Intel Corporation:82567LM Gigabit Network Connection:
 e1000e:2\&.1\&.4\-k:1\&.8\-3:00\e:22\e:68\e:15\e:29\e:21:1500:100 (connected):0 (No reas
 on given):/sys/devices/pci0000\e:00/0000\e:00\e:19\&.0/net/eth0:eth0:yes:yes:no:
@@ -375,7 +373,7 @@ manual page for more information about NetworkManager dispatcher scripts\&.
 .RS 4
 .\}
 .nf
-\fB$ nmcli connection edit type ethernet\fR
+$ \fBnmcli connection edit type ethernet\fR
 
 ===| nmcli interactive connection editor |===
 
diff --git a/man/nmcli-examples.xml b/man/nmcli-examples.xml
index 9c28e15f..50d4738b 100644
--- a/man/nmcli-examples.xml
+++ b/man/nmcli-examples.xml
@@ -7,7 +7,20 @@
 ]>
 
 <!--
-Copyright 2013 - 2014 Red Hat, Inc.
+  nmcli-examples(7) manual page
+
+  Copyright 2005 - 2016 Red Hat, Inc.
+
+  Permission is granted to copy, distribute and/or modify this document
+  under the terms of the GNU Free Documentation License, Version 1.1
+  or any later version published by the Free Software Foundation;
+  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+  Texts. You may obtain a copy of the GNU Free Documentation License
+  from the Free Software Foundation by visiting their Web site or by
+  writing to:
+
+  Free Software Foundation, Inc.,
+  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 -->
 
 <refentry id="nmcli-examples">
@@ -31,7 +44,8 @@ Copyright 2013 - 2014 Red Hat, Inc.
 
   <refsynopsisdiv>
     <cmdsynopsis>
-      <command>nmcli <arg choice="opt" rep="repeat">OPTIONS</arg></command>
+      <command>nmcli</command>
+      <arg choice="opt" rep="repeat">OPTIONS</arg>
     </cmdsynopsis>
   </refsynopsisdiv>
 
@@ -47,14 +61,13 @@ Copyright 2013 - 2014 Red Hat, Inc.
       The purpose of this manual page is to provide you with various examples and
       usage scenarios of <emphasis>nmcli</emphasis>.
     </para>
-    <para>Note: this page has "work-in-progress" status.</para>
   </refsect1>
 
   <refsect1>
     <title>Examples</title>
 
     <example><title>Listing available Wi-Fi APs</title>
-<screen><userinput>$ nmcli device wifi list</userinput>
+<screen><prompt>$ </prompt><userinput>nmcli device wifi list</userinput>
 *  SSID               MODE    CHAN  RATE       SIGNAL  BARS  SECURITY
    netdatacomm_local  Infra   6     54 Mbit/s  37      ▂▄__  WEP
 *  F1                 Infra   11    54 Mbit/s  98      ▂▄▆█  WPA1
@@ -75,7 +88,7 @@ Copyright 2013 - 2014 Red Hat, Inc.
     </example>
 
     <example><title>Showing general information and properties for a Wi-Fi interface</title>
-<screen><userinput>$ nmcli -p -f general,wifi-properties device show wlan0</userinput>
+<screen><prompt>$ </prompt><userinput>nmcli -p -f general,wifi-properties device show wlan0</userinput>
 ===========================================================================
                         Device details (wlan0)
 ===========================================================================
@@ -115,7 +128,7 @@ WIFI-PROPERTIES.ADHOC:    yes
     </example>
 
     <example><title>Listing NetworkManager polkit permissions</title>
-<screen><userinput>$ nmcli general permissions</userinput>
+<screen><prompt>$ </prompt><userinput>nmcli general permissions</userinput>
 PERMISSION                                                VALUE
 org.freedesktop.NetworkManager.enable-disable-network     yes
 org.freedesktop.NetworkManager.enable-disable-wifi        yes
@@ -142,7 +155,7 @@ org.freedesktop.NetworkManager.settings.modify.hostname   auth</screen>
     </example>
 
     <example><title>Listing NetworkManager log level and domains</title>
-<screen><userinput>$ nmcli general logging</userinput>
+<screen><prompt>$ </prompt><userinput>nmcli general logging</userinput>
 LEVEL  DOMAINS
 INFO   PLATFORM,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,WIFI_SCAN,IP4,IP6,A
 UTOIP4,DNS,VPN,SHARING,SUPPLICANT,AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC,
@@ -152,10 +165,9 @@ B,DISPATCH</screen>
         This command shows current NetworkManager logging status.
       </para>
     </example>
-
     <example><title>Changing NetworkManager logging</title>
-<screen><userinput>$ nmcli g log level DEBUG domains CORE,ETHER,IP</userinput>
-<userinput>$ nmcli g log level INFO domains DEFAULT</userinput></screen>
+<screen><prompt>$ </prompt><userinput>nmcli g log level DEBUG domains CORE,ETHER,IP</userinput>
+<prompt>$ </prompt><userinput>nmcli g log level INFO domains DEFAULT</userinput></screen>
       <para>
         The first command makes NetworkManager log in DEBUG level, and only for CORE, ETHER and
         IP domains. The second command restores the default logging state. Please refer to the
@@ -165,9 +177,9 @@ B,DISPATCH</screen>
     </example>
 
     <example><title>Adding a bonding master and two slave connection profiles</title>
-<screen><userinput>$ nmcli con add type bond ifname mybond0 mode active-backup</userinput>
-<userinput>$ nmcli con add type ethernet ifname eth1 master mybond0</userinput>
-<userinput>$ nmcli con add type ethernet ifname eth2 master mybond0</userinput></screen>
+<screen><prompt>$ </prompt><userinput>nmcli con add type bond ifname mybond0 mode active-backup</userinput>
+<prompt>$ </prompt><userinput>nmcli con add type ethernet ifname eth1 master mybond0</userinput>
+<prompt>$ </prompt><userinput>nmcli con add type ethernet ifname eth2 master mybond0</userinput></screen>
       <para>
         This example demonstrates adding a bond master connection and two slaves. The
         first command adds a master bond connection, naming the bonding interface
@@ -179,9 +191,9 @@ B,DISPATCH</screen>
     </example>
 
     <example><title>Adding a team master and two slave connection profiles</title>
-<screen><userinput>$ nmcli con add type team con-name Team1 ifname Team1 config team1-master-json.conf</userinput>
-<userinput>$ nmcli con add type ethernet con-name Team1-slave1 ifname em1 master Team1</userinput>
-<userinput>$ nmcli con add type ethernet con-name Team1-slave2 ifname em2 master Team1</userinput></screen>
+<screen><prompt>$ </prompt><userinput>nmcli con add type team con-name Team1 ifname Team1 config team1-master-json.conf</userinput>
+<prompt>$ </prompt><userinput>nmcli con add type ethernet con-name Team1-slave1 ifname em1 master Team1</userinput>
+<prompt>$ </prompt><userinput>nmcli con add type ethernet con-name Team1-slave2 ifname em2 master Team1</userinput></screen>
       <para>
         This example demonstrates adding a team master connection profile and two slaves. It is
         very similar to the bonding example. The first command adds a master team profile, naming
@@ -194,8 +206,8 @@ B,DISPATCH</screen>
         <emphasis>em2</emphasis>. The slaves don't specify <emphasis>config</emphasis> and thus
         <emphasis>teamd</emphasis> will use its default configuration. You will activate the whole setup
         by activating both slaves:
-<screen>  <userinput>$ nmcli con up Team1-slave1</userinput>
-  <userinput>$ nmcli con up Team1-slave2</userinput></screen>
+<screen>  <prompt>$ </prompt><userinput>nmcli con up Team1-slave1</userinput>
+  <prompt>$ </prompt><userinput>nmcli con up Team1-slave2</userinput></screen>
         By default, the created profiles are marked for auto-activation. But if another
         connection has been activated on the device, the new profile won't activate
         automatically and you need to activate it manually.
@@ -203,10 +215,10 @@ B,DISPATCH</screen>
     </example>
 
     <example><title>Adding a bridge and two slave profiles</title>
-<screen><userinput>$ nmcli con add type bridge con-name TowerBridge ifname TowerBridge</userinput>
-<userinput>$ nmcli con add type ethernet con-name br-slave-1 ifname ens3 master TowerBridge</userinput>
-<userinput>$ nmcli con add type ethernet con-name br-slave-2 ifname ens4 master TowerBridge</userinput>
-<userinput>$ nmcli con modify TowerBridge bridge.stp no</userinput></screen>
+<screen><prompt>$ </prompt><userinput>nmcli con add type bridge con-name TowerBridge ifname TowerBridge</userinput>
+<prompt>$ </prompt><userinput>nmcli con add type ethernet con-name br-slave-1 ifname ens3 master TowerBridge</userinput>
+<prompt>$ </prompt><userinput>nmcli con add type ethernet con-name br-slave-2 ifname ens4 master TowerBridge</userinput>
+<prompt>$ </prompt><userinput>nmcli con modify TowerBridge bridge.stp no</userinput></screen>
       <para>
         This example demonstrates adding a bridge master connection and two slaves. The
         first command adds a master bridge connection, naming the bridge interface and
@@ -220,12 +232,12 @@ B,DISPATCH</screen>
     </example>
 
     <example><title>Adding an ethernet connection profile with manual IP configuration</title>
-<screen><userinput>$ nmcli con add con-name my-con-em1 ifname em1 type ethernet \
+<screen><prompt>$ </prompt><userinput>nmcli con add con-name my-con-em1 ifname em1 type ethernet \
   ip4 192.168.100.100/24 gw4 192.168.100.1 ip4 1.2.3.4 ip6 abbe::cafe</userinput>
-<userinput>$ nmcli con mod my-con-em1 ipv4.dns "8.8.8.8 8.8.4.4"</userinput>
-<userinput>$ nmcli con mod my-con-em1 +ipv4.dns 1.2.3.4</userinput>
-<userinput>$ nmcli con mod my-con-em1 ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844"</userinput>
-<userinput>$ nmcli -p con show my-con-em1</userinput></screen>
+<prompt>$ </prompt><userinput>nmcli con mod my-con-em1 ipv4.dns "8.8.8.8 8.8.4.4"</userinput>
+<prompt>$ </prompt><userinput>nmcli con mod my-con-em1 +ipv4.dns 1.2.3.4</userinput>
+<prompt>$ </prompt><userinput>nmcli con mod my-con-em1 ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844"</userinput>
+<prompt>$ </prompt><userinput>nmcli -p con show my-con-em1</userinput></screen>
       <para>
         The first command adds an Ethernet connection profile named <emphasis>my-con-em1</emphasis>
         that is bound to interface name <emphasis>em1</emphasis>. The profile is configured
@@ -241,7 +253,7 @@ B,DISPATCH</screen>
     </example>
 
     <example><title>Escaping colon characters in tabular mode</title>
-<screen><userinput>$ nmcli -t -f general -e yes -m tab dev show eth0</userinput>
+<screen><prompt>$ </prompt><userinput>nmcli -t -f general -e yes -m tab dev show eth0</userinput>
 GENERAL:eth0:ethernet:Intel Corporation:82567LM Gigabit Network Connection:
 e1000e:2.1.4-k:1.8-3:00\:22\:68\:15\:29\:21:1500:100 (connected):0 (No reas
 on given):/sys/devices/pci0000\:00/0000\:00\:19.0/net/eth0:eth0:yes:yes:no:
@@ -291,7 +303,7 @@ fi
     <para><emphasis role="bold">Example sessions of interactive connection editor</emphasis></para>
 
     <example><title>Adding an ethernet connection profile in interactive editor (a)</title>
-<screen><userinput>$ nmcli connection edit type ethernet</userinput>
+<screen><prompt>$ </prompt><userinput>nmcli connection edit type ethernet</userinput>
 
 ===| nmcli interactive connection editor |===
 
@@ -302,7 +314,7 @@ Type 'describe [&lt;setting&gt;.&lt;prop&gt;]' for detailed property description
 
 You may edit the following settings: connection, 802-3-ethernet (ethernet),
 802-1x, ipv4, ipv6, dcb
-nmcli> <userinput>print</userinput>
+<prompt>nmcli&gt; </prompt><userinput>print</userinput>
 ===========================================================================
                           Connection details
 ===========================================================================
@@ -362,13 +374,13 @@ ipv6.may-fail:                      yes
 ipv6.ip6-privacy:                   -1 (unknown)
 ipv6.dhcp-hostname:                 --
 ---------------------------------------------------------------------------
-nmcli> <userinput>goto ethernet</userinput>
+<prompt>nmcli&gt; </prompt><userinput>goto ethernet</userinput>
 You may edit the following properties: port, speed, duplex, auto-negotiate,
  mac-address, cloned-mac-address, mac-address-blacklist, mtu, s390-subchann
 els, s390-nettype, s390-options
 nmcli 802-3-ethernet> set mtu 1492
 nmcli 802-3-ethernet> b
-nmcli> <userinput>goto ipv4.addresses</userinput>
+<prompt>nmcli&gt; </prompt><userinput>goto ipv4.addresses</userinput>
 nmcli ipv4.addresses> desc
 
 === [addresses] ===
@@ -389,10 +401,10 @@ nmcli ipv4.addresses> print
 addresses: 192.168.1.100/24
 nmcli ipv4.addresses> back
 nmcli ipv4> b
-nmcli> <userinput>set ipv4.gateway 192.168.1.1</userinput>
-nmcli> <userinput>verify</userinput>
+<prompt>nmcli&gt; </prompt><userinput>set ipv4.gateway 192.168.1.1</userinput>
+<prompt>nmcli&gt; </prompt><userinput>verify</userinput>
 Verify connection: OK
-nmcli> <userinput>print</userinput>
+<prompt>nmcli&gt; </prompt><userinput>print</userinput>
 ===========================================================================
                           Connection details
 ===========================================================================
@@ -451,8 +463,8 @@ ipv6.may-fail:                      yes
 ipv6.ip6-privacy:                   -1 (unknown)
 ipv6.dhcp-hostname:                 --
 ---------------------------------------------------------------------------
-nmcli> <userinput>set ipv4.dns 8.8.8.8 8.8.4.4</userinput>
-nmcli> <userinput>print</userinput>
+<prompt>nmcli&gt; </prompt><userinput>set ipv4.dns 8.8.8.8 8.8.4.4</userinput>
+<prompt>nmcli&gt; </prompt><userinput>print</userinput>
 ===========================================================================
                           Connection details
 ===========================================================================
@@ -512,12 +524,12 @@ ipv6.may-fail:                      yes
 ipv6.ip6-privacy:                   -1 (unknown)
 ipv6.dhcp-hostname:                 --
 ---------------------------------------------------------------------------
-nmcli> <userinput>verify</userinput>
+<prompt>nmcli&gt; </prompt><userinput>verify</userinput>
 Verify connection: OK
-nmcli> <userinput>save</userinput>
+<prompt>nmcli&gt; </prompt><userinput>save</userinput>
 Connection 'ethernet-4' (de89cdeb-a3e1-4d53-8fa0-c22546c775f4) successfully
  saved.
-nmcli> <userinput>quit</userinput></screen>
+<prompt>nmcli&gt; </prompt><userinput>quit</userinput></screen>
       <para>
         Example session in the nmcli interactive connection editor.
         The scenario creates an Ethernet connection profile with static addressing (IPs and DNS).
diff --git a/man/nmcli.1 b/man/nmcli.1
index cdecc8a8..85d7d1bd 100644
--- a/man/nmcli.1
+++ b/man/nmcli.1
@@ -2,12 +2,12 @@
 .\"     Title: nmcli
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
-.\"      Date: 04/05/2016
+.\"      Date: 04/12/2016
 .\"    Manual: General Commands Manual
-.\"    Source: NetworkManager 1.1.93
+.\"    Source: NetworkManager 1.1.94
 .\"  Language: English
 .\"
-.TH "NMCLI" "1" "" "NetworkManager 1\&.1\&.93" "General Commands Manual"
+.TH "NMCLI" "1" "" "NetworkManager 1\&.1\&.94" "General Commands Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/nmcli.xml b/man/nmcli.xml
index 61954667..62e10254 100644
--- a/man/nmcli.xml
+++ b/man/nmcli.xml
@@ -9,26 +9,18 @@
 <!--
   nmcli(1) manual page
 
-  This is free documentation; you can redistribute it and/or
-  modify it under the terms of the GNU General Public License as
-  published by the Free Software Foundation; either version 2 of
-  the License, or (at your option) any later version.
-
-  The GNU General Public License's references to "object code"
-  and "executables" are to be interpreted as the output of any
-  document formatting or typesetting system, including
-  intermediate and printed output.
-
-  This manual is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public Licence along
-  with this manual; if not, write to the Free Software Foundation, Inc.,
-  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
   Copyright 2010 - 2016 Red Hat, Inc.
+
+  Permission is granted to copy, distribute and/or modify this document
+  under the terms of the GNU Free Documentation License, Version 1.1
+  or any later version published by the Free Software Foundation;
+  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+  Texts. You may obtain a copy of the GNU Free Documentation License
+  from the Free Software Foundation by visiting their Web site or by
+  writing to:
+
+  Free Software Foundation, Inc.,
+  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 -->
 
 <refentry id='nmcli'>
diff --git a/man/nmtui.1 b/man/nmtui.1
index 832d65d3..3d99ddc5 100644
--- a/man/nmtui.1
+++ b/man/nmtui.1
@@ -2,12 +2,12 @@
 .\"     Title: nmtui
 .\"    Author: 
 .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
-.\"      Date: 04/05/2016
+.\"      Date: 04/12/2016
 .\"    Manual: General Commands Manual
-.\"    Source: NetworkManager 1.1.93
+.\"    Source: NetworkManager 1.1.94
 .\"  Language: English
 .\"
-.TH "NMTUI" "1" "" "NetworkManager 1\&.1\&.93" "General Commands Manual"
+.TH "NMTUI" "1" "" "NetworkManager 1\&.1\&.94" "General Commands Manual"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff --git a/man/nmtui.xml b/man/nmtui.xml
index d92f525b..357472fe 100644
--- a/man/nmtui.xml
+++ b/man/nmtui.xml
@@ -9,26 +9,18 @@
 <!--
   nmtui(1) manual page
 
-  This is free documentation; you can redistribute it and/or
-  modify it under the terms of the GNU General Public License as
-  published by the Free Software Foundation; either version 2 of
-  the License, or (at your option) any later version.
-
-  The GNU General Public License's references to "object code"
-  and "executables" are to be interpreted as the output of any
-  document formatting or typesetting system, including
-  intermediate and printed output.
-
-  This manual is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public Licence along
-  with this manual; if not, write to the Free Software Foundation, Inc.,
-  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
   Copyright 2010 - 2016 Red Hat, Inc.
+
+  Permission is granted to copy, distribute and/or modify this document
+  under the terms of the GNU Free Documentation License, Version 1.1
+  or any later version published by the Free Software Foundation;
+  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+  Texts. You may obtain a copy of the GNU Free Documentation License
+  from the Free Software Foundation by visiting their Web site or by
+  writing to:
+
+  Free Software Foundation, Inc.,
+  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 -->
 
 <refentry id='nmtui'>
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 9a30f3ba..71008329 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -1,5 +1,5 @@
 # Brazilian Portuguese translation of NetworkManager.
-# Copyright (C) 2004-2013 Free Software Foundation, Inc.
+# Copyright (C) 2016 Free Software Foundation, Inc.
 # This file is distributed under the same license as the NetworkManager package.
 # Raphael Higino <In memoriam>, 2004-2007
 # Luiz Armesto <luiz.armesto@gmail.com>, 2007.
@@ -8,22 +8,23 @@
 # Fabrício Godoy <skarllot@gmail.com>, 2008.
 # Enrico Nicoletto <liverig@gmail.com>, 2013.
 # gcintra <gcintra@redhat.com>, 2013, 2014.
-# Rafael Fontenelle <rffontenelle@gmail.com>, 2013, 2015.
-#
+# Rafael Fontenelle <rafaelff@gnome.org>, 2013, 2015, 2016.
 msgid ""
 msgstr ""
 "Project-Id-Version: NetworkManager\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-04-05 15:00+0200\n"
-"PO-Revision-Date: 2015-12-21 12:50-0200\n"
-"Last-Translator: Rafael Fontenelle <rffontenelle@gmail.com>\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=Network"
+"Manager&keywords=I18N+L10N&component=Translations\n"
+"POT-Creation-Date: 2016-04-04 01:29+0000\n"
+"PO-Revision-Date: 2016-04-06 13:08-0200\n"
+"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
 "Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
 "Language: pt_BR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Poedit 1.8.6\n"
+"X-Generator: Virtaal 0.7.1\n"
+"X-Project-Style: gnome\n"
 
 #: ../clients/cli/agent.c:39
 #, c-format
@@ -774,7 +775,7 @@ msgstr "PADRÃO6"
 #. 6
 #: ../clients/cli/connections.c:199
 msgid "SPEC-OBJECT"
-msgstr "OBJETO-ESPEC."
+msgstr "OBJETO-ESPEC"
 
 #. 7
 #. 4
@@ -899,16 +900,16 @@ msgstr ""
 "  show [--active] [--order <especificação da ordem>]\n"
 "  show [--active] [id | uuid | path | apath] <ID> ...\n"
 "\n"
-"  up [[id | uuid | path] <ID>] [ifname <nome-if>] [ap <BSSID>] [passwd-file "
-"<arquivo com senhas>]\n"
+"  up [[id | uuid | path] <ID>] [ifname <nome-if>] [ap <BSSID>] [passwd-file <"
+"arquivo com senhas>]\n"
 "\n"
 "  down [id | uuid | path | apath] <ID> ...\n"
 "\n"
-"  add OPÇÕES_COMUNS OPÇÕES_ESPECÍFICAS_TIPO OPÇÕES_IP [-- ([+|-]<definição>."
-"<propriedade> <valor>)+]\n"
+"  add OPÇÕES_COMUNS OPÇÕES_ESPECÍFICAS_TIPO OPÇÕES_IP [-- "
+"([+|-]<definição>.<propriedade> <valor>)+]\n"
 "\n"
-"  modify [--temporary] [id | uuid | path] <ID> ([+|-]<definição>."
-"<propriedade> <valor>)+\n"
+"  modify [--temporary] [id | uuid | path] <ID> "
+"([+|-]<definição>.<propriedade> <valor>)+\n"
 "\n"
 "  clone [--temporary] [id | uuid | path ] <ID> <novo nome>\n"
 "\n"
@@ -1007,8 +1008,8 @@ msgstr ""
 "por\n"
 "seu nome, UUID ou caminho do D-Bus.\n"
 "\n"
-"ARGUMENTOS := ifname <nome-if> [ap <BSSID>] [nsp <nome>] [passwd-file "
-"<arquivo com senhas>]\n"
+"ARGUMENTOS := ifname <nome-if> [ap <BSSID>] [nsp <nome>] [passwd-file <"
+"arquivo com senhas>]\n"
 "\n"
 "Ativa um dispositivo com uma conexão. O perfil da conexão é selecionado\n"
 "automaticamente pelo NetworkManager.\n"
@@ -1017,6 +1018,7 @@ msgstr ""
 "ap          - especifica AP para se conectar (válido somente para Wi-Fi)\n"
 "nsp         - especifica NSP para se conectar (válido somente para WiMAX)\n"
 "passwd-file - arquivo com senha(s) necessária(s) para ativar a conexão\n"
+"\n"
 
 #: ../clients/cli/connections.c:336
 #, c-format
@@ -1038,6 +1040,7 @@ msgstr ""
 "Desativa uma conexão de um dispositivo (sem prevenir o dispositivo de\n"
 "auto-ativamento no futuro). O perfil para desativar é identificado por\n"
 "seu nome, UUID ou caminho do D-Bus.\n"
+"\n"
 
 #: ../clients/cli/connections.c:348
 #, c-format
@@ -1240,8 +1243,8 @@ msgstr ""
 "\n"
 "    bond:         [mode balance-rr (0) | active-backup (1) | balance-xor (2) "
 "| broadcast (3) |\n"
-"                        802.3ad    (4) | balance-tlb   (5) | balance-alb "
-"(6)]\n"
+"                        802.3ad    (4) | balance-tlb   (5) | balance-alb (6)]"
+"\n"
 "                  [primary <nome da interface>]\n"
 "                  [miimon <núm>]\n"
 "                  [downdelay <núm>]\n"
@@ -1250,13 +1253,13 @@ msgstr ""
 "                  [arp-ip-target <núm>]\n"
 "                  [lacp-rate slow (0) | fast (1)]\n"
 "\n"
-"    bond-slave:   master <(nome interface ou nome ou UUID da conexão) "
-"mestre>\n"
+"    bond-slave:   master <(nome interface ou nome ou UUID da conexão) mestre>"
+"\n"
 "\n"
 "    team:         [config <arquivo>|<dados JSON não-tratados>]\n"
 "\n"
-"    team-slave:   master <(nome interface ou nome ou UUID da conexão) "
-"mestre>\n"
+"    team-slave:   master <(nome interface ou nome ou UUID da conexão) mestre>"
+"\n"
 "                  [config <arquivo>|<dados JSON não-tratados>]\n"
 "\n"
 "    bridge:       [stp yes|no]\n"
@@ -1268,14 +1271,14 @@ msgstr ""
 "                  [multicast-snooping yes|no]\n"
 "                  [mac <endereço MAC>]\n"
 "\n"
-"    bridge-slave: master <(nome interface ou nome ou UUID da conexão) "
-"mestre>\n"
+"    bridge-slave: master <(nome interface ou nome ou UUID da conexão) mestre>"
+"\n"
 "                  [priority <0-63>]\n"
 "                  [path-cost <1-65535>]\n"
 "                  [hairpin yes|no]\n"
 "\n"
-"    vpn:          vpn-type vpnc|openvpn|pptp|openconnect|openswan|libreswan|"
-"ssh|l2tp|iodine|...\n"
+"    vpn:          vpn-type "
+"vpnc|openvpn|pptp|openconnect|openswan|libreswan|ssh|l2tp|iodine|...\n"
 "                  [user <nome de usuário>]\n"
 "\n"
 "    olpc-mesh:    ssid <SSID>\n"
@@ -1321,6 +1324,7 @@ msgstr ""
 "  OPÇÕES_IP:\n"
 "                  [ip4 <endereço IPv4>] [gw4 <gateway IPv4>]\n"
 "                  [ip6 <endereço IPv6>] [gw6 <gateway IPv6>]\n"
+"\n"
 
 #: ../clients/cli/connections.c:460
 #, c-format
@@ -1360,8 +1364,8 @@ msgstr ""
 "\n"
 "Exemplos:\n"
 "nmcli con mod home-wifi wifi.ssid rakosnicek\n"
-"nmcli con mod em1-1 ipv4.method manual ipv4.addr \"192.168.1.2/24, "
-"10.10.1.5/8\"\n"
+"nmcli con mod em1-1 ipv4.method manual ipv4.addr \"192.168.1.2/24, 10.10.1.5/"
+"8\"\n"
 "nmcli con mod em1-1 +ipv4.dns 8.8.4.4\n"
 "nmcli con mod em1-1 -ipv4.dns 1\n"
 "nmcli con mod em1-1 -ipv6.addr \"abbe::cafe/56\"\n"
@@ -1512,8 +1516,8 @@ msgstr ""
 "\n"
 "ARGUMENTOS := [--temporary] type <tipo> file <arquivo a ser importado>\n"
 "\n"
-"Importa uma configuração externa como o perfil de conexão do "
-"NetworkManager.\n"
+"Importa uma configuração externa como o perfil de conexão do NetworkManager."
+"\n"
 "O tipo de arquivo de entrada é especificado pela opção type.\n"
 "Apenas configurações de VPN possuem suporte no momento. A configuração\n"
 "é importada pelos plug-ins VPN do NetworkManager.\n"
@@ -1537,6 +1541,7 @@ msgstr ""
 "Exporta uma conexão. Somente conexões VPN possuem suporte no presente\n"
 "momento. Os dados são direcionados para a saída padrão ou para um arquivo\n"
 "se um nome for informado.\n"
+"\n"
 
 #: ../clients/cli/connections.c:644
 msgid "activating"
@@ -1846,7 +1851,7 @@ msgstr "\"%s\" não está entre [%s]"
 #: ../clients/cli/connections.c:3032
 #, c-format
 msgid "Error: '%s': '%s' is not a valid %s MAC address."
-msgstr "Erro: '%s': '%s' não é um endereço MAC %s válido."
+msgstr "Erro: \"%s\": \"%s\" não é um endereço MAC %s válido."
 
 #. Ask for optional arguments
 #: ../clients/cli/connections.c:3033 ../clients/cli/connections.c:3565
@@ -1868,7 +1873,7 @@ msgstr "Erro: \"mtu\": \"%s\" não é um MTU válido."
 #: ../clients/cli/connections.c:3069
 #, c-format
 msgid "Error: 'parent': '%s' is not a valid interface name."
-msgstr "Erro: 'parent': \"%s\" não é um nome de interface válido"
+msgstr "Erro: \"parent\": \"%s\" não é um nome de interface válido."
 
 #: ../clients/cli/connections.c:3090
 #, c-format
@@ -1976,7 +1981,7 @@ msgstr "P_KEY [nenhum]: "
 #: ../clients/cli/connections.c:3626
 #, c-format
 msgid "Error: 'p-key' is mandatory when 'parent' is specified.\n"
-msgstr "Erro: \"p-key\" é obrigatório quando 'parent' é especificado.\n"
+msgstr "Erro: \"p-key\" é obrigatório quando \"parent\" é especificado.\n"
 
 #. Ask for optional arguments
 #: ../clients/cli/connections.c:3643 ../clients/tui/nm-editor-utils.c:154
@@ -2056,7 +2061,7 @@ msgstr "Mapas de prioridade de egresso [nenhum]: "
 
 #: ../clients/cli/connections.c:3827
 msgid "Bonding mode [balance-rr]: "
-msgstr "Modo de vinculação [balanço-rr]: "
+msgstr "Modo de vinculação [balance-rr]: "
 
 #. Ask for optional 'bond' arguments.
 #: ../clients/cli/connections.c:3843
@@ -2135,7 +2140,7 @@ msgstr "Erro: \"lacp_rate\": \"%s\" é inválido (\"slow\" ou \"fast\").\n"
 
 #: ../clients/cli/connections.c:3972
 msgid "Team JSON configuration [none]: "
-msgstr "Configuração da União JSON [nenhum]:"
+msgstr "Configuração da União JSON [nenhum]: "
 
 #: ../clients/cli/connections.c:3989
 msgid "team"
@@ -2528,11 +2533,11 @@ msgstr "Nome de usuário do PPPoE: "
 
 #: ../clients/cli/connections.c:5130 ../clients/cli/connections.c:6037
 msgid "Error: 'username' is required."
-msgstr "Erro: \"nome de usuário\" é necessário"
+msgstr "Erro: \"nome de usuário\" é necessário."
 
 #: ../clients/cli/connections.c:5199
 msgid "APN: "
-msgstr "Nome do ponto de acesso (APN):"
+msgstr "Nome do ponto de acesso (APN): "
 
 #: ../clients/cli/connections.c:5202
 msgid "Error: 'apn' is required."
@@ -2560,18 +2565,17 @@ msgid "Error: 'dev' is required."
 msgstr "Erro: é necessário o \"dev\"."
 
 #: ../clients/cli/connections.c:5355
-#, fuzzy
 msgid "VLAN ID <0-4094>: "
-msgstr "ID da VLAN <0-4095>: "
+msgstr "ID da VLAN <0-4094>: "
 
 #: ../clients/cli/connections.c:5358 ../clients/cli/connections.c:6424
 msgid "Error: 'id' is required."
 msgstr "Erro: é necessário o \"id\"."
 
 #: ../clients/cli/connections.c:5364
-#, fuzzy, c-format
+#, c-format
 msgid "Error: 'id': '%s' is not valid; use <0-4094>."
-msgstr "Erro: \"id\": \"%s\" não é válido; use <0-4095>."
+msgstr "Erro: \"id\": \"%s\" não é válido; use <0-4094>."
 
 #: ../clients/cli/connections.c:5374 ../clients/cli/connections.c:6116
 #, c-format
@@ -3025,7 +3029,7 @@ msgid ""
 "help/? [<command>]  :: help for the nmcli commands\n"
 "\n"
 msgstr ""
-"help/? [<command>]  :: ajuda para os comandos do nmcli \n"
+"help/? [<command>]  :: ajuda para os comandos do nmcli\n"
 "\n"
 
 #: ../clients/cli/connections.c:8206
@@ -3399,7 +3403,7 @@ msgstr "Erro: definição desconhecida: \"%s\"\n"
 #: ../clients/cli/connections.c:9422
 #, c-format
 msgid "Error: '%s' setting not present in the connection\n"
-msgstr "Erro: a definição \"%s\" não está presente na conexão.\n"
+msgstr "Erro: a definição \"%s\" não está presente na conexão\n"
 
 #: ../clients/cli/connections.c:9450
 #, c-format
@@ -4180,7 +4184,7 @@ msgid "PORT-ID-TYPE"
 msgstr "TIPO-ID-PORTA"
 
 #: ../clients/cli/devices.c:283
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Usage: nmcli device { COMMAND | help }\n"
 "\n"
@@ -4220,8 +4224,8 @@ msgid ""
 msgstr ""
 "Uso: nmcli device { COMANDO | help }\n"
 "\n"
-"COMANDO := { status | show | connect | disconnect | delete | monitor | wifi "
-"| lldp }\n"
+"COMANDO := { status | show | connect | reapply | disconnect | delete | "
+"monitor | wifi | lldp }\n"
 "\n"
 "  status\n"
 "\n"
@@ -4231,6 +4235,8 @@ msgstr ""
 "\n"
 "  connect <nome-if>\n"
 "\n"
+"  reapply <nome-if> ...\n"
+"\n"
 "  disconnect <nome-if> ...\n"
 "\n"
 "  delete <nome-if> ...\n"
@@ -4239,13 +4245,13 @@ msgstr ""
 "\n"
 "  wifi [list [ifname <nome-if>] [bssid <BSSID>]]\n"
 "\n"
-"  wifi connect <(B)SSID> [password <senha>] [wep-key-type key|phrase] "
-"[ifname <nome-if>]\n"
-"                         [bssid <BSSID>] [name <nome>] [private yes|no] "
-"[hidden yes|no]\n"
+"  wifi connect <(B)SSID> [password <senha>] [wep-key-type key|phrase] ["
+"ifname <nome-if>]\n"
+"                         [bssid <BSSID>] [name <nome>] [private yes|no] ["
+"hidden yes|no]\n"
 "\n"
-"  wifi hotspot [ifname <nome-if>] [con-name <nome>] [ssid <SSID>] [band a|"
-"bg] [channel <canal>] [password <senha>]\n"
+"  wifi hotspot [ifname <nome-if>] [con-name <nome>] [ssid <SSID>] [band a|bg]"
+" [channel <canal>] [password <senha>]\n"
 "\n"
 "  wifi rescan [ifname <nome-if>] [[ssid <SSID para buscar>] ...]\n"
 "\n"
@@ -4327,7 +4333,7 @@ msgstr ""
 "\n"
 
 #: ../clients/cli/devices.c:343
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Usage: nmcli device reapply { ARGUMENTS | help }\n"
 "\n"
@@ -4337,13 +4343,13 @@ msgid ""
 "made since it was last applied.\n"
 "\n"
 msgstr ""
-"Uso: nmcli device disconnect { ARGUMENTOS | help }\n"
+"Uso: nmcli device reapply { ARGUMENTOS | help }\n"
 "\n"
 "ARGUMENTOS := <nome-if> ...\n"
 "\n"
-"Desconecta o dispositivo.\n"
-"O comando desconecta o dispositivo e previne-o de auto-ativar\n"
-"conexões futuras sem a intervenção do usuário/manual.\n"
+"Tenta atualizar o dispositivo com as alterações à conexão atualmente ativa\n"
+"feitas desde a última aplicação.\n"
+"\n"
 
 #: ../clients/cli/devices.c:354
 #, c-format
@@ -4364,6 +4370,7 @@ msgstr ""
 "Desconecta o dispositivo.\n"
 "O comando desconecta o dispositivo e previne-o de auto-ativar\n"
 "conexões futuras sem a intervenção do usuário/manual.\n"
+"\n"
 
 #: ../clients/cli/devices.c:366
 #, c-format
@@ -4491,14 +4498,15 @@ msgstr ""
 "\n"
 "ARGUMENTOS := [list [ifname <nome-if>] [bssid <BSSID>]]\n"
 "\n"
-"Lista pontos de acesso de Wi-Fi disponíveis. As opções \"ifname\" e \"bssid"
-"\"\n"
+"Lista pontos de acesso de Wi-Fi disponíveis. As opções \"ifname\" e \"bssid\""
+"\n"
 "podem ser usadas para listar APs para uma interface específica, ou com um\n"
 "BSSID específico.\n"
 "\n"
-"ARGUMENTS := connect <(B)SSID> [password <senha>] [wep-key-type key|phrase] "
-"[ifname <nome-if>]\n"
-"                     [bssid <BSSID>] [name <nome>] [private yes|no]\n"
+"ARGUMENTOS := connect <(B)SSID> [password <senha>] [wep-key-type key|phrase]"
+"\n"
+"                       [ifname <nome-if>] [bssid <BSSID>] [name <nome>]\n"
+"                       [private yes|no]\n"
 "\n"
 "Conecta à uma rede Wi-Fi especificada por SSID ou BSSID. O comando cria uma\n"
 "nova conexão e então ativa-a em um dispositivo. Isto é um parceiro de linha\n"
@@ -4510,8 +4518,8 @@ msgstr ""
 "WPA-PSK são suportadas no momento. Presume-se também que a configuração IP\n"
 "seja obtida via DHCP.\n"
 "\n"
-"ARGUMENTOS := wifi hotspot [ifname <nome-if>] [con-name <nome>] [ssid "
-"<SSID>]\n"
+"ARGUMENTOS := wifi hotspot [ifname <nome-if>] [con-name <nome>] [ssid <SSID>]"
+"\n"
 "                           [band a|bg] [channel <canal>] [password <senha>]\n"
 "\n"
 "Cria um hotspot Wi-Fi. Use 'connection down' ou 'device disconnect' para\n"
@@ -4524,8 +4532,8 @@ msgstr ""
 "channel - canal Wi-Fi para usar\n"
 "password - senha para usar para o hotspot\n"
 "\n"
-"ARGUMENTOS := wifi hotspot [ifname <nome-if>] [con-name <nome>] [ssid "
-"<SSID>]\n"
+"ARGUMENTOS := wifi hotspot [ifname <nome-if>] [con-name <nome>] [ssid <SSID>]"
+"\n"
 "                           [band a|bg] [channel <canal>] [password <senha>]\n"
 "\n"
 "Requer que o NetworkManager scaneie novamente imediatamente para pontos de\n"
@@ -4537,6 +4545,7 @@ msgstr ""
 "parâmetros de \"ssid\" podem ser fornecidos. Note que este comando não "
 "mostra\n"
 "os APs, use 'nmcli device wifi list' para isto.\n"
+"\n"
 
 #: ../clients/cli/devices.c:451
 #, c-format
@@ -4554,9 +4563,10 @@ msgstr ""
 "\n"
 "ARGUMENTOS := [list [ifname <nome-if>] [nsp <nome>]]\n"
 "\n"
-"Lista dispositivos vizinhos descobertos por meio de LLDP. A opção \"ifname"
-"\"\n"
+"Lista dispositivos vizinhos descobertos por meio de LLDP. A opção \"ifname\""
+"\n"
 "pode ser usada para listar vizinhos de uma interface específica.\n"
+"\n"
 
 #: ../clients/cli/devices.c:527 ../clients/cli/devices.c:1676
 #: ../clients/cli/devices.c:1685 ../clients/cli/devices.c:1879
@@ -4734,19 +4744,19 @@ msgid "Device '%s' successfully removed.\n"
 msgstr "Dispositivo \"%s\" removido com sucesso.\n"
 
 #: ../clients/cli/devices.c:1838
-#, fuzzy, c-format
+#, c-format
 msgid "Error: not all connections reapplied."
-msgstr "Erro: nem todas as conexões ativas foram excluídas."
+msgstr "Erro: nem todas as conexões foram reaplicadas."
 
 #: ../clients/cli/devices.c:1839
-#, fuzzy, c-format
+#, c-format
 msgid "Error: Reapplying connection to device '%s' (%s) failed: %s\n"
-msgstr "Erro: a exclusão do dispositivo \"%s\" (%s) falhou: %s\n"
+msgstr "Erro: a reaplicação da conexão no dispositivo \"%s\" (%s) falhou: %s\n"
 
 #: ../clients/cli/devices.c:1849
-#, fuzzy, c-format
+#, c-format
 msgid "Connection successfully reapplied to device '%s'.\n"
-msgstr "Conexão ativada com sucesso (caminho D-Bus ativo: %s)\n"
+msgstr "Conexão reaplicada com sucesso no dispositivo \"%s\".\n"
 
 #: ../clients/cli/devices.c:1912
 #, c-format
@@ -4905,7 +4915,7 @@ msgstr ""
 
 #: ../clients/cli/devices.c:2885
 msgid "Password: "
-msgstr "Senha:"
+msgstr "Senha: "
 
 #: ../clients/cli/devices.c:3034
 #, c-format
@@ -5581,6 +5591,7 @@ msgstr ""
 "  d[evice]        dispositivos gerenciados pelo NetworkManager\n"
 "  a[gent]         agente secreto do NetworkManager ou agente do polkit\n"
 "  m[onitor]       monitora alterações do NetworkManager\n"
+"\n"
 
 #: ../clients/cli/nmcli.c:143
 #, c-format
@@ -5661,7 +5672,7 @@ msgstr "Falha ao criar o segmento de manipulação de sinal: %d\n"
 #: ../clients/cli/nmcli.c:512 ../clients/nm-online.c:193
 #, c-format
 msgid "Error: Could not create NMClient object: %s."
-msgstr "Erro: não foi possível criar objeto NMClient: %s"
+msgstr "Erro: não foi possível criar objeto NMClient: %s."
 
 #: ../clients/cli/nmcli.c:529
 msgid "Success"
@@ -5773,15 +5784,15 @@ msgstr "0 (desativado)"
 
 #: ../clients/cli/settings.c:1258
 msgid "enabled, "
-msgstr "habilitado,"
+msgstr "habilitado, "
 
 #: ../clients/cli/settings.c:1260
 msgid "advertise, "
-msgstr "publicar,"
+msgstr "publicar, "
 
 #: ../clients/cli/settings.c:1262
 msgid "willing, "
-msgstr "desejando,"
+msgstr "desejando, "
 
 #: ../clients/cli/settings.c:1290
 msgid "-1 (unset)"
@@ -5797,9 +5808,9 @@ msgid "default"
 msgstr "padrão"
 
 #: ../clients/cli/settings.c:1556
-#, fuzzy, c-format
+#, c-format
 msgid "%d (off)"
-msgstr "%d (não)"
+msgstr "%d (desligado)"
 
 #: ../clients/cli/settings.c:1770
 #, c-format
@@ -5856,7 +5867,7 @@ msgstr "Aviso: definição %s.%s requer remover as definições de ipv4 e ipv6\n
 
 #: ../clients/cli/settings.c:2300
 msgid "Do you want to remove them? [yes] "
-msgstr "Você deseja removê-las [sim]"
+msgstr "Você deseja removê-las? [sim] "
 
 #: ../clients/cli/settings.c:2396 ../clients/cli/settings.c:2791
 #: ../clients/cli/settings.c:5182
@@ -5939,7 +5950,7 @@ msgstr "\"%s\" não é um nome de interface válido"
 #: ../clients/cli/settings.c:2856
 #, c-format
 msgid "'%s' is not a valid flag number; use <0-%d>"
-msgstr "Erro: \"priority\": \"%s\" não é um número válido <0-%d>."
+msgstr "Erro: \"priority\": \"%s\" não é um número válido <0-%d>"
 
 #: ../clients/cli/settings.c:2868
 #, c-format
@@ -6072,7 +6083,7 @@ msgstr ""
 "Note que nmcli não oferece suporte a especificar certificados como dados "
 "blob \n"
 "não tratados.\n"
-"Exemplo: /home/cimrman/cert-ac.crt\n"
+"Exemplo: /home/cimrman/cert-ca.crt\n"
 
 #: ../clients/cli/settings.c:3428
 #, c-format
@@ -6126,8 +6137,8 @@ msgid ""
 "Note that nmcli does not support specifying certificates as raw blob data.\n"
 "Example: /home/cimrman/jara-zweite-phase.crt\n"
 msgstr ""
-"Insira o caminho do arquivo para um certificado de cliente para "
-"autenticação \n"
+"Insira o caminho do arquivo para um certificado de cliente para autenticação "
+"\n"
 "interna (opcionalmente, prefixado com file://).\n"
 "  [file://]<caminho do arquivo>\n"
 "Note que nmcli não oferece suporte a especificar certificados como dados \n"
@@ -6399,8 +6410,8 @@ msgstr ""
 "arquivo contendo a configuração. Neste caso, o arquivo é lido e o conteúdo é "
 "colocado nesta propriedade.\n"
 "\n"
-"Exemplos: set team.config { \"device\": \"team0\", \"runner\": {\"name\": "
-"\"roundrobin\"}, \"ports\": {\"eth1\": {}, \"eth2\": {}} }\n"
+"Exemplos: set team.config { \"device\": \"team0\", \"runner\": {\"name\": \""
+"roundrobin\"}, \"ports\": {\"eth1\": {}, \"eth2\": {}} }\n"
 "          set team.config /etc/minha-união.conf\n"
 
 #: ../clients/cli/settings.c:4602
@@ -6501,8 +6512,8 @@ msgid ""
 "'%s' not compatible with %s '%s', please change the key or set the right %s "
 "first."
 msgstr ""
-"\"%s\" não é compatível com %s \"%s\", por favor altere a chave ou defina o "
-"%s correto primeiro"
+"\"%s\" não é compatível com %s \"%s\", por favor altere a chave ou defina o %"
+"s correto primeiro."
 
 #: ../clients/cli/settings.c:5199
 #, c-format
@@ -6769,7 +6780,7 @@ msgstr ""
 
 #: ../clients/common/nm-secret-agent-simple.c:457
 msgid "Wired 802.1X authentication"
-msgstr "Autenticação 802.1X com fio "
+msgstr "Autenticação 802.1X com fio"
 
 #: ../clients/common/nm-secret-agent-simple.c:460
 msgid "Network name"
@@ -7013,7 +7024,7 @@ msgstr "Não foi possível criar editor para a conexão \"%s\" do tipo \"%s\"."
 #: ../clients/tui/nmt-editor.c:101
 #, c-format
 msgid "Could not create editor for invalid connection '%s'."
-msgstr "Não foi possível criar editor para a conexão inválida \"%s\""
+msgstr "Não foi possível criar editor para a conexão inválida \"%s\"."
 
 #: ../clients/tui/nmt-editor.c:111
 msgid "Edit Connection"
@@ -7966,9 +7977,9 @@ msgid "unknown setting name"
 msgstr "nome de definição desconhecido"
 
 #: ../libnm-core/nm-connection.c:306
-#, fuzzy
+#| msgid "unknown setting name"
 msgid "duplicate setting name"
-msgstr "nome de definição desconhecido"
+msgstr "nome de definição duplicado"
 
 #: ../libnm-core/nm-connection.c:873
 msgid "setting not found"
@@ -8131,7 +8142,7 @@ msgstr "ignorando senha não tratada inválida"
 #: ../libnm-core/nm-keyfile-reader.c:892 ../libnm-core/nm-keyfile-reader.c:1058
 #, c-format
 msgid "certificate or key file '%s' does not exist"
-msgstr "certificado ou arquivo de chave \"%s\" não existe."
+msgstr "certificado ou arquivo de chave \"%s\" não existe"
 
 #: ../libnm-core/nm-keyfile-reader.c:897
 #, c-format
@@ -8406,7 +8417,7 @@ msgstr "opção \"%s\" é válida apenas para \"%s\""
 #: ../libnm-core/nm-setting-bond.c:687
 #, c-format
 msgid "'%s' and '%s' cannot have different values"
-msgstr ""
+msgstr "\"%s\" e \"%s\" não podem ter valores diferentes"
 
 #: ../libnm-core/nm-setting-bond.c:703
 #, c-format
@@ -8457,7 +8468,7 @@ msgstr "definição requerida para a conexão do tipo \"%s\""
 #: ../libnm-core/nm-setting-connection.c:897
 #, c-format
 msgid "connection type '%s' is not valid"
-msgstr "tipo de conexão \"%s\" não é válida."
+msgstr "tipo de conexão \"%s\" não é válida"
 
 #: ../libnm-core/nm-setting-connection.c:932
 #: ../libnm-util/nm-setting-connection.c:877
@@ -8539,7 +8550,7 @@ msgstr "valor da propriedade \"%s\" está vazio ou é muito longo (>64)"
 #: ../libnm-core/nm-setting-gsm.c:326 ../libnm-util/nm-setting-gsm.c:327
 #, c-format
 msgid "'%s' contains invalid char(s) (use [A-Za-z._-])"
-msgstr "\"%s\" contém cactere(s) inválido(s) (use [A-Za-z._-])"
+msgstr "\"%s\" contém caractere(s) inválido(s) (use [A-Za-z._-])"
 
 #: ../libnm-core/nm-setting-gsm.c:352 ../libnm-util/nm-setting-gsm.c:353
 #, c-format
@@ -8733,7 +8744,7 @@ msgid "property is not specified and neither is '%s:%s'"
 msgstr "propriedade não está especificada nem é \"%s=%s\""
 
 #: ../libnm-core/nm-setting-macvlan.c:192
-#, fuzzy
+#| msgid "non promiscuous operation is allowed only in passthru mode'"
 msgid "non promiscuous operation is allowed only in passthru mode"
 msgstr "operação não promíscua é permitida apenas em modo passthru"
 
@@ -8785,7 +8796,7 @@ msgstr "valor \"%s\" não corresponde \"%s=%s\""
 #: ../libnm-core/nm-setting-vlan.c:672 ../libnm-util/nm-setting-vlan.c:600
 #, c-format
 msgid "the vlan id must be in range 0-4094 but is %u"
-msgstr ""
+msgstr "o id da vlan deve estar na faixa 0-4094, mas é %u"
 
 #: ../libnm-core/nm-setting-vlan.c:681 ../libnm-util/nm-setting-vlan.c:591
 msgid "flags are invalid"
@@ -8911,7 +8922,7 @@ msgstr "\"%s\" requer a definição da propriedade \"%s\""
 #: ../libnm-core/nm-setting.c:837
 #, c-format
 msgid "duplicate property"
-msgstr ""
+msgstr "propriedade duplicada"
 
 #: ../libnm-core/nm-setting.c:865 ../libnm-core/nm-setting.c:912
 #, c-format
@@ -8920,19 +8931,22 @@ msgstr ""
 "não foi possível definir propriedade do tipo \"%s\" do valor de tipo \"%s\""
 
 #: ../libnm-core/nm-setting.c:884 ../libnm-core/nm-setting.c:898
-#, fuzzy, c-format
+#, c-format
+#| msgid "Error: failed to set '%s' property: %s\n"
 msgid "failed to set property: %s"
-msgstr "Erro: falha ao definir a propriedade \"%s\": %s\n"
+msgstr "falha ao definir a propriedade: %s"
 
 #: ../libnm-core/nm-setting.c:926
-#, fuzzy, c-format
+#, c-format
+#| msgid "not a secret property"
 msgid "can not set property: %s"
-msgstr "não é uma propriedade de segredo"
+msgstr "não foi possível definir propriedade: %s"
 
 #: ../libnm-core/nm-setting.c:942
-#, fuzzy, c-format
+#, c-format
+#| msgid "unknown error"
 msgid "unknown property"
-msgstr "erro desconhecido"
+msgstr "propriedade desconhecida"
 
 #: ../libnm-core/nm-setting.c:1682
 msgid "secret not found"
@@ -9081,18 +9095,18 @@ msgid "Bluetooth"
 msgstr "Bluetooth"
 
 #: ../libnm-glib/nm-device.c:1873 ../libnm/nm-device.c:1824
-#, fuzzy
+#| msgid "VLAN"
 msgid "MACVLAN"
-msgstr "VLAN"
+msgstr "MACVLAN"
 
 #: ../libnm-glib/nm-device.c:1877 ../libnm/nm-device.c:1828
-#, fuzzy
+#| msgid "IP Tunnel"
 msgid "IPTunnel"
-msgstr "Túnel IP"
+msgstr "IPTunnel"
 
 #: ../libnm-glib/nm-device.c:1881 ../libnm/nm-device.c:1832
 msgid "Veth"
-msgstr ""
+msgstr "Veth"
 
 #: ../libnm-glib/nm-device.c:1913 ../libnm/nm-device.c:1864
 msgid "Wired"
@@ -9182,7 +9196,7 @@ msgstr "%d. endereço IPv6 possui prefixo inválido"
 #: ../libnm-util/nm-setting-vpn.c:582
 #, c-format
 msgid "Failed to convert '%s' value '%s' to uint"
-msgstr "Falha ao converter valor de \"%s\" \"%s\" para unit"
+msgstr "Falha ao converter valor de \"%s\" \"%s\" para uint"
 
 #: ../libnm-util/nm-setting-vpn.c:589
 #, c-format
@@ -9265,7 +9279,7 @@ msgstr "A conexão não era tun."
 
 #: ../libnm/nm-device-tun.c:218
 msgid "The mode of the device and the connection didn't match"
-msgstr "O modo do dispositivo e da conexão não correspondem."
+msgstr "O modo do dispositivo e da conexão não correspondem"
 
 #: ../libnm/nm-device-infiniband.c:94
 msgid "The connection was not an InfiniBand connection."
@@ -9310,7 +9324,7 @@ msgstr "A conexão não era VLAN."
 
 #: ../libnm/nm-device-vlan.c:135
 msgid "The VLAN identifiers of the device and the connection didn't match."
-msgstr "Os identificadores da VLAN do dispositivo e a conexão não correspondem"
+msgstr "Os identificadores da VLAN do dispositivo e a conexão não correspondem."
 
 #: ../libnm/nm-device-vlan.c:148
 msgid "The hardware address of the device and the connection didn't match."
@@ -9497,29 +9511,35 @@ msgstr ""
 #: ../shared/nm-shared-utils.c:174
 #, c-format
 msgid "object class '%s' has no property named '%s'"
-msgstr ""
+msgstr "a classe de objeto \"%s\" não possui uma propriedade chamada \"%s\""
 
 #: ../shared/nm-shared-utils.c:181
 #, c-format
 msgid "property '%s' of object class '%s' is not writable"
-msgstr ""
+msgstr "a propriedade \"%s\" da classe de objeto \"%s\" não pode ser escrita"
 
 #: ../shared/nm-shared-utils.c:188
 #, c-format
 msgid ""
 "construct property \"%s\" for object '%s' can't be set after construction"
 msgstr ""
+"a propriedade de construtor \"%s\" para objeto \"%s\" não pode ser definido "
+"após construção"
 
 #: ../shared/nm-shared-utils.c:196
 #, c-format
 msgid "'%s::%s' is not a valid property name; '%s' is not a GObject subtype"
 msgstr ""
+"\"%s::%s\" não é um nome de propriedade válido; \"%s\" não é um subtipo de "
+"GObject"
 
 #: ../shared/nm-shared-utils.c:205
-#, fuzzy, c-format
+#, c-format
+#| msgid "can't set property of type '%s' from value of type '%s'"
 msgid "unable to set property '%s' of type '%s' from value of type '%s'"
 msgstr ""
-"não foi possível definir propriedade do tipo \"%s\" do valor de tipo \"%s\""
+"não foi possível definir a propriedade \"%s\" de tipo \"%s\" a partir do "
+"valor de tipo \"%s\""
 
 #: ../shared/nm-shared-utils.c:216
 #, c-format
@@ -9527,6 +9547,8 @@ msgid ""
 "value \"%s\" of type '%s' is invalid or out of range for property '%s' of "
 "type '%s'"
 msgstr ""
+"o valor \"%s\" de tipo \"%s\" é inválido ou fora do intervalo da propriedade "
+"\"%s\" de tipo \"%s\""
 
 #. Translators: the first %s is a prefix for the connection id, such
 #. * as "Wired Connection" or "VPN Connection". The %d is a number
@@ -9801,19 +9823,19 @@ msgstr ""
 "WPA"
 
 #: ../src/devices/wifi/nm-wifi-ap-utils.c:164
-#, fuzzy, c-format
+#, c-format
 msgid "a connection using '%s' authentication cannot specify WPA protocols"
 msgstr ""
 "uma conexão usando autenticação \"%s\" não pode especificar protocolos WPA"
 
 #: ../src/devices/wifi/nm-wifi-ap-utils.c:180
 #: ../src/devices/wifi/nm-wifi-ap-utils.c:197
-#, fuzzy, c-format
+#, c-format
 msgid "a connection using '%s' authentication cannot specify WPA ciphers"
 msgstr "uma conexão usando autenticação \"%s\" não pode especificar cifras WPA"
 
 #: ../src/devices/wifi/nm-wifi-ap-utils.c:209
-#, fuzzy, c-format
+#, c-format
 msgid "a connection using '%s' authentication cannot specify a WPA password"
 msgstr ""
 "uma conexão usando autenticação \"%s\" não pode especificar uma senha WPA"
@@ -10112,15 +10134,6 @@ msgstr "O NetworkManager precisa desligar as redes"
 msgid "System"
 msgstr "Sistema"
 
-#~ msgid "Error: unknown parameter: %s"
-#~ msgstr "Erro: parâmetro desconhecido: %s"
-
-#~ msgid "yes (%u)"
-#~ msgstr "sim (%u)"
-
-#~ msgid "'%s' is not a valid powersave value"
-#~ msgstr "\"%s\" não é um valor de economia de energia válido"
-
 #~ msgid "Failed to read configuration: (%d) %s\n"
 #~ msgstr "Falha ao ler configuração: (%d) %s\n"
 
@@ -10138,6 +10151,15 @@ msgstr "Sistema"
 #~ msgid "The nameservers listed below may not be recognized."
 #~ msgstr "Os servidores de nomes listados abaixo podem não ser reconhecidos."
 
+#~ msgid "Error: unknown parameter: %s"
+#~ msgstr "Erro: parâmetro desconhecido: %s"
+
+#~ msgid "yes (%u)"
+#~ msgstr "sim (%u)"
+
+#~ msgid "'%s' is not a valid powersave value"
+#~ msgstr "\"%s\" não é um valor de economia de energia válido"
+
 #~ msgid "Bond master: "
 #~ msgstr "Vínculo mestre: "
 
diff --git a/shared/nm-macros-internal.h b/shared/nm-macros-internal.h
index 41762318..384bca66 100644
--- a/shared/nm-macros-internal.h
+++ b/shared/nm-macros-internal.h
@@ -26,7 +26,9 @@
 
 /********************************************************/
 
-#define nm_auto(fcn) __attribute ((cleanup(fcn)))
+#define _nm_packed __attribute__ ((packed))
+
+#define nm_auto(fcn) __attribute__ ((cleanup(fcn)))
 
 /**
  * nm_auto_free:
diff --git a/shared/nm-test-utils.h b/shared/nm-test-utils.h
index 25032457..b792a69c 100644
--- a/shared/nm-test-utils.h
+++ b/shared/nm-test-utils.h
@@ -782,6 +782,34 @@ nmtst_get_rand_int (void)
 	return g_rand_int (nmtst_get_rand ());
 }
 
+inline static gpointer
+nmtst_rand_buf (GRand *rand, gpointer buffer, gsize buffer_length)
+{
+	guint32 v;
+	guint8 *b = buffer;
+
+	if (!buffer_length)
+		return buffer;
+
+	g_assert (buffer);
+
+	if (!rand)
+		rand = nmtst_get_rand ();
+
+	for (; buffer_length >= sizeof (guint32); buffer_length -= sizeof (guint32), b += sizeof (guint32)) {
+		v = g_rand_int (rand);
+		memcpy (b, &v, sizeof (guint32));
+	}
+	if (buffer_length > 0) {
+		v = g_rand_int (rand);
+		do {
+			*(b++) = v & 0xFF;
+			v >>= 8;
+		} while (--buffer_length > 0);
+	}
+	return buffer;
+}
+
 inline static void *
 nmtst_rand_perm (GRand *rand, void *dst, const void *src, gsize elmt_size, gsize n_elmt)
 {
@@ -1151,11 +1179,54 @@ _nmtst_assert_resolve_relative_path_equals (const char *f1, const char *f2, cons
 
 #ifdef __NETWORKMANAGER_PLATFORM_H__
 
+inline static NMPlatformIP4Address *
+nmtst_platform_ip4_address (const char *address, const char *peer_address, guint plen)
+{
+	static NMPlatformIP4Address addr;
+
+	g_assert (plen <= 32);
+
+	memset (&addr, 0, sizeof (addr));
+	addr.address = nmtst_inet4_from_string (address);
+	if (peer_address)
+		addr.peer_address = nmtst_inet4_from_string (peer_address);
+	else
+		addr.peer_address = addr.address;
+	addr.plen = plen;
+
+	return &addr;
+}
+
+inline static NMPlatformIP4Address *
+nmtst_platform_ip4_address_full (const char *address, const char *peer_address, guint plen,
+                                 int ifindex, NMIPConfigSource source, guint32 timestamp,
+                                 guint32 lifetime, guint32 preferred, guint32 flags,
+                                 const char *label)
+{
+	NMPlatformIP4Address *addr = nmtst_platform_ip4_address (address, peer_address, plen);
+
+	G_STATIC_ASSERT (IFNAMSIZ == sizeof (addr->label));
+	g_assert (!label || strlen (label) < IFNAMSIZ);
+
+	addr->ifindex = ifindex;
+	addr->source = source;
+	addr->timestamp = timestamp;
+	addr->lifetime = lifetime;
+	addr->preferred = preferred;
+	addr->n_ifa_flags = flags;
+	if (label)
+		g_strlcpy (addr->label, label, sizeof (addr->label));
+
+	return addr;
+}
+
 inline static NMPlatformIP6Address *
 nmtst_platform_ip6_address (const char *address, const char *peer_address, guint plen)
 {
 	static NMPlatformIP6Address addr;
 
+	g_assert (plen <= 128);
+
 	memset (&addr, 0, sizeof (addr));
 	addr.address = *nmtst_inet6_from_string (address);
 	addr.peer_address = *nmtst_inet6_from_string (peer_address);
@@ -1186,6 +1257,8 @@ nmtst_platform_ip4_route (const char *network, guint plen, const char *gateway)
 {
 	static NMPlatformIP4Route route;
 
+	g_assert (plen <= 32);
+
 	memset (&route, 0, sizeof (route));
 	route.network = nmtst_inet4_from_string (network);
 	route.plen = plen;
@@ -1218,6 +1291,8 @@ nmtst_platform_ip6_route (const char *network, guint plen, const char *gateway)
 {
 	static NMPlatformIP6Route route;
 
+	nm_assert (plen <= 128);
+
 	memset (&route, 0, sizeof (route));
 	route.network = *nmtst_inet6_from_string (network);
 	route.plen = plen;
diff --git a/shared/nm-version-macros.h b/shared/nm-version-macros.h
index 8ac9b12a..b96b6c87 100644
--- a/shared/nm-version-macros.h
+++ b/shared/nm-version-macros.h
@@ -45,7 +45,7 @@
  * Evaluates to the micro version number of NetworkManager which this source
  * compiled against.
  */
-#define NM_MICRO_VERSION (93)
+#define NM_MICRO_VERSION (94)
 
 /**
  * NM_CHECK_VERSION:
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
index dde9af94..3d949ec2 100644
--- a/src/devices/nm-device.c
+++ b/src/devices/nm-device.c
@@ -5725,6 +5725,7 @@ rdisc_config_changed (NMRDisc *rdisc, NMRDiscConfigMap changed, NMDevice *self)
 			if (discovered_route->plen > 0) {
 				memset (&route, 0, sizeof (route));
 				route.network = discovered_route->network;
+				nm_assert (discovered_route->plen <= 128);
 				route.plen = discovered_route->plen;
 				route.gateway = discovered_route->gateway;
 				route.source = NM_IP_CONFIG_SOURCE_RDISC;
diff --git a/src/devices/tests/test-arping.c b/src/devices/tests/test-arping.c
index 72d28a7a..244d0715 100644
--- a/src/devices/tests/test-arping.c
+++ b/src/devices/tests/test-arping.c
@@ -79,7 +79,7 @@ test_arping_common (test_fixture *fixture, TestInfo *info)
 		g_assert (nm_arping_manager_add_address (manager, info->addresses[i]));
 
 	for (i = 0; info->peer_addresses[i]; i++) {
-		nmtstp_ip4_address_add (FALSE, fixture->ifindex1, info->peer_addresses[i],
+		nmtstp_ip4_address_add (NULL, FALSE, fixture->ifindex1, info->peer_addresses[i],
 		                        24, 0, 3600, 1800, 0, NULL);
 	}
 
@@ -126,13 +126,13 @@ fixture_teardown (test_fixture *fixture, gconstpointer user_data)
 }
 
 void
-init_tests (int *argc, char ***argv)
+_nmtstp_init_tests (int *argc, char ***argv)
 {
 	nmtst_init_with_logging (argc, argv, NULL, "ALL");
 }
 
 void
-setup_tests (void)
+_nmtstp_setup_tests (void)
 {
 	g_test_add ("/arping/1", test_fixture, NULL, fixture_setup, test_arping_1, fixture_teardown);
 	g_test_add ("/arping/2", test_fixture, NULL, fixture_setup, test_arping_2, fixture_teardown);
diff --git a/src/devices/tests/test-lldp.c b/src/devices/tests/test-lldp.c
index 1b7f536d..bff85e6c 100644
--- a/src/devices/tests/test-lldp.c
+++ b/src/devices/tests/test-lldp.c
@@ -435,13 +435,13 @@ _test_recv_fixture_teardown (TestRecvFixture *fixture, gconstpointer user_data)
 /*****************************************************************************/
 
 void
-init_tests (int *argc, char ***argv)
+_nmtstp_init_tests (int *argc, char ***argv)
 {
 	nmtst_init_assert_logging (argc, argv, "WARN", "ALL");
 }
 
 void
-setup_tests (void)
+_nmtstp_setup_tests (void)
 {
 #define _TEST_ADD_RECV(testpath, testdata) \
 	g_test_add (testpath, TestRecvFixture, testdata, _test_recv_fixture_setup, test_recv, _test_recv_fixture_teardown)
diff --git a/src/devices/wwan/nm-modem-broadband.c b/src/devices/wwan/nm-modem-broadband.c
index 769e6a27..9539fefd 100644
--- a/src/devices/wwan/nm-modem-broadband.c
+++ b/src/devices/wwan/nm-modem-broadband.c
@@ -870,7 +870,8 @@ static_stage3_ip4_done (NMModemBroadband *self)
 	address.peer_address = address_network;
 	address.plen = mm_bearer_ip_config_get_prefix (self->priv->ipv4_config);
 	address.source = NM_IP_CONFIG_SOURCE_WWAN;
-	nm_ip4_config_add_address (config, &address);
+	if (address.plen <= 32)
+		nm_ip4_config_add_address (config, &address);
 
 	nm_log_info (LOGD_MB, "  address %s/%d", address_string, address.plen);
 
@@ -960,7 +961,8 @@ stage3_ip6_done (NMModemBroadband *self)
 	config = nm_ip6_config_new (nm_platform_link_get_ifindex (NM_PLATFORM_GET, data_port));
 
 	address.plen = mm_bearer_ip_config_get_prefix (self->priv->ipv6_config);
-	nm_ip6_config_add_address (config, &address);
+	if (address.plen <= 128)
+		nm_ip6_config_add_address (config, &address);
 
 	nm_log_info (LOGD_MB, "  address %s/%d", address_string, address.plen);
 
diff --git a/src/dhcp-manager/nm-dhcp-systemd.c b/src/dhcp-manager/nm-dhcp-systemd.c
index 91fa8803..5d49c27e 100644
--- a/src/dhcp-manager/nm-dhcp-systemd.c
+++ b/src/dhcp-manager/nm-dhcp-systemd.c
@@ -312,7 +312,8 @@ lease_to_ip4_config (const char *iface,
 				continue;
 			route.network = a.s_addr;
 
-			if (sd_dhcp_route_get_destination_prefix_length (routes[i], &plen) < 0)
+			if (   sd_dhcp_route_get_destination_prefix_length (routes[i], &plen) < 0
+			    || plen > 32)
 				continue;
 			route.plen = plen;
 
diff --git a/src/dhcp-manager/nm-dhcp-utils.c b/src/dhcp-manager/nm-dhcp-utils.c
index be563a69..a88a7e6d 100644
--- a/src/dhcp-manager/nm-dhcp-utils.c
+++ b/src/dhcp-manager/nm-dhcp-utils.c
@@ -60,7 +60,7 @@ ip4_process_dhcpcd_rfc3442_routes (const char *str,
 			*slash = '\0';
 			errno = 0;
 			rt_cidr = strtol (slash + 1, NULL, 10);
-			if ((errno == EINVAL) || (errno == ERANGE)) {
+			if (errno || rt_cidr > 32) {
 				nm_log_warn (LOGD_DHCP4, "DHCP provided invalid classless static route cidr: '%s'", slash + 1);
 				continue;
 			}
@@ -382,7 +382,8 @@ nm_dhcp_utils_ip4_config_from_options (int ifindex,
 	in_addr_t addr;
 	NMPlatformIP4Address address;
 	char *str = NULL;
-	guint32 gwaddr = 0, plen = 0;
+	guint32 gwaddr = 0;
+	guint8 plen = 0;
 
 	g_return_val_if_fail (options != NULL, NULL);
 
diff --git a/src/dhcp-manager/tests/test-dhcp-utils.c b/src/dhcp-manager/tests/test-dhcp-utils.c
index 162f2dd4..f477c061 100644
--- a/src/dhcp-manager/tests/test-dhcp-utils.c
+++ b/src/dhcp-manager/tests/test-dhcp-utils.c
@@ -208,6 +208,8 @@ ip4_test_route (NMIP4Config *ip4_config,
 	const NMPlatformIP4Route *route;
 	guint32 tmp;
 
+	g_assert (expected_prefix <= 32);
+
 	route = nm_ip4_config_get_route (ip4_config, route_num);
 	g_assert (inet_pton (AF_INET, expected_dest, &tmp) > 0);
 	g_assert (route->network == tmp);
diff --git a/src/dns-manager/nm-dns-dnsmasq.c b/src/dns-manager/nm-dns-dnsmasq.c
index 460feaac..5ead5ecf 100644
--- a/src/dns-manager/nm-dns-dnsmasq.c
+++ b/src/dns-manager/nm-dns-dnsmasq.c
@@ -131,18 +131,18 @@ ip6_addr_to_string (const struct in6_addr *addr, const char *iface)
 	char *buf;
 
 	if (IN6_IS_ADDR_V4MAPPED (addr)) {
-		/* inet_ntop is probably supposed to do this for us, but it doesn't */
 		buf = g_malloc (INET_ADDRSTRLEN);
 		nm_utils_inet4_ntop (addr->s6_addr32[3], buf);
 	} else if (!iface || !iface[0] || !IN6_IS_ADDR_LINKLOCAL (addr)) {
 		buf = g_malloc (INET6_ADDRSTRLEN);
 		nm_utils_inet6_ntop (addr, buf);
 	} else {
-		/* If we got a scope identifier, we need use '%' instead of
-		 * '@', since dnsmasq supports '%' in server= addresses
-		 * only since version 2.58 and up
+		/* Need to scope the address with %<zone-id>. Before dnsmasq 2.58,
+		 * only '@' was supported as delimiter. Since 2.58, '@' and '%'
+		 * are supported. Due to a bug, since 2.73 only '%' works properly
+		 * as "server" address.
 		 */
-		buf = g_strconcat (nm_utils_inet6_ntop (addr, NULL), "@", iface, NULL);
+		buf = g_strconcat (nm_utils_inet6_ntop (addr, NULL), "%", iface, NULL);
 	}
 	return buf;
 }
diff --git a/src/dnsmasq-manager/nm-dnsmasq-utils.c b/src/dnsmasq-manager/nm-dnsmasq-utils.c
index bf8faecd..3786f37d 100644
--- a/src/dnsmasq-manager/nm-dnsmasq-utils.c
+++ b/src/dnsmasq-manager/nm-dnsmasq-utils.c
@@ -34,7 +34,7 @@ nm_dnsmasq_utils_get_range (const NMPlatformIP4Address *addr,
                             char **out_error_desc)
 {
 	guint32 host = addr->address;
-	guint32 prefix = addr->plen;
+	guint8 prefix = addr->plen;
 	guint32 netmask = nm_utils_ip4_prefix_to_netmask (prefix);
 	guint32 first, last, reserved;
 
diff --git a/src/dnsmasq-manager/tests/test-dnsmasq-utils.c b/src/dnsmasq-manager/tests/test-dnsmasq-utils.c
index 850ae4f6..aeec5879 100644
--- a/src/dnsmasq-manager/tests/test-dnsmasq-utils.c
+++ b/src/dnsmasq-manager/tests/test-dnsmasq-utils.c
@@ -26,14 +26,6 @@
 
 #include "nm-test-utils.h"
 
-static NMPlatformIP4Address *
-_set_addr (NMPlatformIP4Address *addr, const char *address, int plen)
-{
-	memset (addr, 0, sizeof (*addr));
-	nm_platform_ip4_address_set_addr (addr, nmtst_inet4_from_string (address), plen);
-	return addr;
-}
-
 static void
 test_address_ranges (void)
 {
@@ -42,50 +34,50 @@ test_address_ranges (void)
 	char last[INET_ADDRSTRLEN];
 	char *error_desc = NULL;
 
-	_set_addr (&addr, "192.168.0.1", 24);
+	addr = *nmtst_platform_ip4_address ("192.168.0.1", NULL, 24);
 	g_assert (nm_dnsmasq_utils_get_range (&addr, first, last, &error_desc));
 	g_assert (error_desc == NULL);
 	g_assert_cmpstr (first, ==, "192.168.0.10");
 	g_assert_cmpstr (last, ==, "192.168.0.254");
 
-	_set_addr (&addr, "192.168.0.99", 24);
+	addr = *nmtst_platform_ip4_address ("192.168.0.99", NULL, 24);
 	g_assert (nm_dnsmasq_utils_get_range (&addr, first, last, &error_desc));
 	g_assert (error_desc == NULL);
 	g_assert_cmpstr (first, ==, "192.168.0.108");
 	g_assert_cmpstr (last, ==, "192.168.0.254");
 
-	_set_addr (&addr, "192.168.0.254", 24);
+	addr = *nmtst_platform_ip4_address ("192.168.0.254", NULL, 24);
 	g_assert (nm_dnsmasq_utils_get_range (&addr, first, last, &error_desc));
 	g_assert (error_desc == NULL);
 	g_assert_cmpstr (first, ==, "192.168.0.1");
 	g_assert_cmpstr (last, ==, "192.168.0.245");
 
 	/* Smaller networks */
-	_set_addr (&addr, "1.2.3.1", 30);
+	addr = *nmtst_platform_ip4_address ("1.2.3.1", NULL, 30);
 	g_assert (nm_dnsmasq_utils_get_range (&addr, first, last, &error_desc));
 	g_assert (error_desc == NULL);
 	g_assert_cmpstr (first, ==, "1.2.3.2");
 	g_assert_cmpstr (last, ==, "1.2.3.2");
 
-	_set_addr (&addr, "1.2.3.1", 29);
+	addr = *nmtst_platform_ip4_address ("1.2.3.1", NULL, 29);
 	g_assert (nm_dnsmasq_utils_get_range (&addr, first, last, &error_desc));
 	g_assert (error_desc == NULL);
 	g_assert_cmpstr (first, ==, "1.2.3.2");
 	g_assert_cmpstr (last, ==, "1.2.3.6");
 
-	_set_addr (&addr, "1.2.3.1", 28);
+	addr = *nmtst_platform_ip4_address ("1.2.3.1", NULL, 28);
 	g_assert (nm_dnsmasq_utils_get_range (&addr, first, last, &error_desc));
 	g_assert (error_desc == NULL);
 	g_assert_cmpstr (first, ==, "1.2.3.3");
 	g_assert_cmpstr (last, ==, "1.2.3.14");
 
-	_set_addr (&addr, "1.2.3.1", 26);
+	addr = *nmtst_platform_ip4_address ("1.2.3.1", NULL, 26);
 	g_assert (nm_dnsmasq_utils_get_range (&addr, first, last, &error_desc));
 	g_assert (error_desc == NULL);
 	g_assert_cmpstr (first, ==, "1.2.3.8");
 	g_assert_cmpstr (last, ==, "1.2.3.62");
 
-	_set_addr (&addr, "1.2.3.1", 31);
+	addr = *nmtst_platform_ip4_address ("1.2.3.1", NULL, 31);
 	g_assert (nm_dnsmasq_utils_get_range (&addr, first, last, &error_desc) == FALSE);
 	g_assert (error_desc);
 	g_free (error_desc);
diff --git a/src/nm-core-utils.c b/src/nm-core-utils.c
index 6cdd00e0..714aaa92 100644
--- a/src/nm-core-utils.c
+++ b/src/nm-core-utils.c
@@ -233,7 +233,6 @@ nm_ethernet_address_is_valid (gconstpointer addr, gssize len)
 	return TRUE;
 }
 
-
 /* nm_utils_ip4_address_clear_host_address:
  * @addr: source ip6 address
  * @plen: prefix length of network
@@ -279,6 +278,32 @@ nm_utils_ip6_address_clear_host_address (struct in6_addr *dst, const struct in6_
 	return dst;
 }
 
+gboolean
+nm_utils_ip6_address_same_prefix (const struct in6_addr *addr_a, const struct in6_addr *addr_b, guint8 plen)
+{
+	int nbytes;
+	guint8 t, m;
+
+	if (plen >= 128)
+		return memcmp (addr_a, addr_b, sizeof (struct in6_addr)) == 0;
+
+	nbytes = plen / 8;
+	if (nbytes) {
+		if (memcmp (addr_a, addr_b, nbytes) != 0)
+			return FALSE;
+	}
+
+	plen = plen % 8;
+	if (plen == 0)
+		return TRUE;
+
+	m = ~((1 << (8 - plen)) - 1);
+	t = ((((const guint8 *) addr_a))[nbytes]) ^ ((((const guint8 *) addr_b))[nbytes]);
+	return (t & m) == 0;
+}
+
+/*****************************************************************************/
+
 void
 nm_utils_array_remove_at_indexes (GArray *array, const guint *indexes_to_delete, gsize len)
 {
diff --git a/src/nm-core-utils.h b/src/nm-core-utils.h
index f77b43e2..280be047 100644
--- a/src/nm-core-utils.h
+++ b/src/nm-core-utils.h
@@ -100,6 +100,7 @@ gboolean nm_ethernet_address_is_valid (gconstpointer addr, gssize len);
 
 in_addr_t nm_utils_ip4_address_clear_host_address (in_addr_t addr, guint8 plen);
 const struct in6_addr *nm_utils_ip6_address_clear_host_address (struct in6_addr *dst, const struct in6_addr *src, guint8 plen);
+gboolean nm_utils_ip6_address_same_prefix (const struct in6_addr *addr_a, const struct in6_addr *addr_b, guint8 plen);
 
 /**
  * nm_utils_ip6_route_metric_normalize:
@@ -220,11 +221,13 @@ fcn_name (lookup_type val, char *buf, gsize len) \
 
 /*****************************************************************************/
 
-#define NM_UTILS_LOOKUP_DEFAULT(v)      return (v)
-#define NM_UTILS_LOOKUP_DEFAULT_WARN(v) g_return_val_if_reached (v)
-#define NM_UTILS_LOOKUP_ITEM(v, n)     (void) 0; case v: return (n); (void) 0
-#define NM_UTILS_LOOKUP_STR_ITEM(v, n) NM_UTILS_LOOKUP_ITEM(v, ""n"")
-#define NM_UTILS_LOOKUP_ITEM_IGNORE(v) (void) 0; case v: break; (void) 0
+#define NM_UTILS_LOOKUP_DEFAULT(v)            return (v)
+#define NM_UTILS_LOOKUP_DEFAULT_WARN(v)       g_return_val_if_reached (v)
+#define NM_UTILS_LOOKUP_DEFAULT_NM_ASSERT(v)  { nm_assert_not_reached (); return (v); }
+#define NM_UTILS_LOOKUP_ITEM(v, n)            (void) 0; case v: return (n); (void) 0
+#define NM_UTILS_LOOKUP_STR_ITEM(v, n)        NM_UTILS_LOOKUP_ITEM(v, ""n"")
+#define NM_UTILS_LOOKUP_ITEM_IGNORE(v)        (void) 0; case v: break; (void) 0
+#define NM_UTILS_LOOKUP_ITEM_IGNORE_OTHER()   (void) 0; default: break; (void) 0
 
 #define _NM_UTILS_LOOKUP_DEFINE(scope, fcn_name, lookup_type, result_type, unknown_val, ...) \
 scope result_type \
diff --git a/src/nm-iface-helper.c b/src/nm-iface-helper.c
index 5a697537..20f7729a 100644
--- a/src/nm-iface-helper.c
+++ b/src/nm-iface-helper.c
@@ -213,7 +213,8 @@ rdisc_config_changed (NMRDisc *rdisc, NMRDiscConfigMap changed, gpointer user_da
 			 * local configuration or user preferences are, so sending routes
 			 * with a prefix length of 0 is quite rude and thus ignored.
 			 */
-			if (discovered_route->plen > 0) {
+			if (   discovered_route->plen > 0
+			    && discovered_route->plen <= 128) {
 				memset (&route, 0, sizeof (route));
 				route.network = discovered_route->network;
 				route.plen = discovered_route->plen;
diff --git a/src/nm-ip4-config.c b/src/nm-ip4-config.c
index 4b27edf7..75caf7e3 100644
--- a/src/nm-ip4-config.c
+++ b/src/nm-ip4-config.c
@@ -365,6 +365,8 @@ nm_ip4_config_commit (const NMIP4Config *config, int ifindex, gboolean routes_fu
 				if (addr->plen == 0)
 					continue;
 
+				nm_assert (addr->plen <= 32);
+
 				route.ifindex = ifindex;
 				route.source = NM_IP_CONFIG_SOURCE_KERNEL;
 
@@ -466,6 +468,7 @@ nm_ip4_config_merge_setting (NMIP4Config *config, NMSettingIPConfig *setting, gu
 		nm_ip_address_get_address_binary (s_addr, &address.address);
 		address.peer_address = address.address;
 		address.plen = nm_ip_address_get_prefix (s_addr);
+		nm_assert (address.plen <= 32);
 		address.lifetime = NM_PLATFORM_LIFETIME_PERMANENT;
 		address.preferred = NM_PLATFORM_LIFETIME_PERMANENT;
 		address.source = NM_IP_CONFIG_SOURCE_USER;
@@ -486,7 +489,12 @@ nm_ip4_config_merge_setting (NMIP4Config *config, NMSettingIPConfig *setting, gu
 
 		memset (&route, 0, sizeof (route));
 		nm_ip_route_get_dest_binary (s_route, &route.network);
+
 		route.plen = nm_ip_route_get_prefix (s_route);
+		nm_assert (route.plen <= 32);
+		if (route.plen == 0)
+			continue;
+
 		nm_ip_route_get_next_hop_binary (s_route, &route.gateway);
 		if (nm_ip_route_get_metric (s_route) == -1)
 			route.metric = default_route_metric;
@@ -494,8 +502,6 @@ nm_ip4_config_merge_setting (NMIP4Config *config, NMSettingIPConfig *setting, gu
 			route.metric = nm_ip_route_get_metric (s_route);
 		route.source = NM_IP_CONFIG_SOURCE_USER;
 
-		g_assert (route.plen > 0);
-
 		nm_ip4_config_add_route (config, &route);
 	}
 
@@ -1328,7 +1334,7 @@ nm_ip4_config_dump (const NMIP4Config *config, const char *detail)
 }
 
 gboolean
-nm_ip4_config_destination_is_direct (const NMIP4Config *config, guint32 network, int plen)
+nm_ip4_config_destination_is_direct (const NMIP4Config *config, guint32 network, guint8 plen)
 {
 	guint naddresses = nm_ip4_config_get_num_addresses (config);
 	int i;
@@ -1567,7 +1573,7 @@ nm_ip4_config_add_route (NMIP4Config *config, const NMPlatformIP4Route *new)
 	int i;
 
 	g_return_if_fail (new != NULL);
-	g_return_if_fail (new->plen > 0);
+	g_return_if_fail (new->plen > 0 && new->plen <= 32);
 	g_assert (priv->ifindex);
 
 	for (i = 0; i < priv->routes->len; i++ ) {
diff --git a/src/nm-ip4-config.h b/src/nm-ip4-config.h
index 02bc8b07..b1a57687 100644
--- a/src/nm-ip4-config.h
+++ b/src/nm-ip4-config.h
@@ -79,7 +79,7 @@ void nm_ip4_config_merge (NMIP4Config *dst, const NMIP4Config *src, NMIPConfigMe
 void nm_ip4_config_subtract (NMIP4Config *dst, const NMIP4Config *src);
 void nm_ip4_config_intersect (NMIP4Config *dst, const NMIP4Config *src);
 gboolean nm_ip4_config_replace (NMIP4Config *dst, const NMIP4Config *src, gboolean *relevant_changes);
-gboolean nm_ip4_config_destination_is_direct (const NMIP4Config *config, guint32 dest, int plen);
+gboolean nm_ip4_config_destination_is_direct (const NMIP4Config *config, guint32 dest, guint8 plen);
 void nm_ip4_config_dump (const NMIP4Config *config, const char *detail);
 
 /* Gateways */
diff --git a/src/nm-ip6-config.c b/src/nm-ip6-config.c
index 6d83bd53..8e7bd22c 100644
--- a/src/nm-ip6-config.c
+++ b/src/nm-ip6-config.c
@@ -95,24 +95,6 @@ nm_ip6_config_get_ifindex (const NMIP6Config *config)
 
 /******************************************************************/
 
-static gboolean
-same_prefix (const struct in6_addr *address1, const struct in6_addr *address2, int plen)
-{
-	const guint8 *bytes1 = (const guint8 *) address1;
-	const guint8 *bytes2 = (const guint8 *) address2;
-	int nbytes = plen / 8;
-	int nbits = plen % 8;
-	int masked1 = bytes1[nbytes] >> (8 - nbits);
-	int masked2 = bytes2[nbytes] >> (8 - nbits);
-
-	if (nbytes && memcmp (bytes1, bytes2, nbytes))
-		return FALSE;
-
-	return masked1 == masked2;
-}
-
-/******************************************************************/
-
 /**
  * nm_ip6_config_capture_resolv_conf():
  * @nameservers: array of struct in6_addr
@@ -472,6 +454,7 @@ nm_ip6_config_merge_setting (NMIP6Config *config, NMSettingIPConfig *setting, gu
 		memset (&address, 0, sizeof (address));
 		nm_ip_address_get_address_binary (s_addr, &address.address);
 		address.plen = nm_ip_address_get_prefix (s_addr);
+		nm_assert (address.plen <= 128);
 		address.lifetime = NM_PLATFORM_LIFETIME_PERMANENT;
 		address.preferred = NM_PLATFORM_LIFETIME_PERMANENT;
 		address.source = NM_IP_CONFIG_SOURCE_USER;
@@ -488,7 +471,12 @@ nm_ip6_config_merge_setting (NMIP6Config *config, NMSettingIPConfig *setting, gu
 
 		memset (&route, 0, sizeof (route));
 		nm_ip_route_get_dest_binary (s_route, &route.network);
+
 		route.plen = nm_ip_route_get_prefix (s_route);
+		nm_assert (route.plen <= 128);
+		if (route.plen == 0)
+			continue;
+
 		nm_ip_route_get_next_hop_binary (s_route, &route.gateway);
 		if (nm_ip_route_get_metric (s_route) == -1)
 			route.metric = default_route_metric;
@@ -496,8 +484,6 @@ nm_ip6_config_merge_setting (NMIP6Config *config, NMSettingIPConfig *setting, gu
 			route.metric = nm_ip_route_get_metric (s_route);
 		route.source = NM_IP_CONFIG_SOURCE_USER;
 
-		g_assert (route.plen > 0);
-
 		nm_ip6_config_add_route (config, &route);
 	}
 
@@ -708,16 +694,20 @@ nm_ip6_config_merge (NMIP6Config *dst, const NMIP6Config *src, NMIPConfigMergeFl
 }
 
 gboolean
-nm_ip6_config_destination_is_direct (const NMIP6Config *config, const struct in6_addr *network, int plen)
+nm_ip6_config_destination_is_direct (const NMIP6Config *config, const struct in6_addr *network, guint8 plen)
 {
 	int num = nm_ip6_config_get_num_addresses (config);
 	int i;
 
+	nm_assert (network);
+	nm_assert (plen <= 128);
+
 	for (i = 0; i < num; i++) {
 		const NMPlatformIP6Address *item = nm_ip6_config_get_address (config, i);
 
-		if (item->plen <= plen && same_prefix (&item->address, network, item->plen) &&
-		    !(item->n_ifa_flags & IFA_F_NOPREFIXROUTE))
+		if (   item->plen <= plen
+		    && !NM_FLAGS_HAS (item->n_ifa_flags, IFA_F_NOPREFIXROUTE)
+		    && nm_utils_ip6_address_same_prefix (&item->address, network, item->plen))
 			return TRUE;
 	}
 
@@ -1415,7 +1405,7 @@ nm_ip6_config_add_route (NMIP6Config *config, const NMPlatformIP6Route *new)
 	int i;
 
 	g_return_if_fail (new != NULL);
-	g_return_if_fail (new->plen > 0);
+	g_return_if_fail (new->plen > 0 && new->plen <= 128);
 	g_assert (priv->ifindex);
 
 	for (i = 0; i < priv->routes->len; i++ ) {
@@ -1473,7 +1463,6 @@ nm_ip6_config_get_direct_route_for_host (const NMIP6Config *config, const struct
 {
 	NMIP6ConfigPrivate *priv = NM_IP6_CONFIG_GET_PRIVATE (config);
 	guint i;
-	struct in6_addr network2, host2;
 	NMPlatformIP6Route *best_route = NULL;
 
 	g_return_val_if_fail (host && !IN6_IS_ADDR_UNSPECIFIED (host), NULL);
@@ -1487,10 +1476,7 @@ nm_ip6_config_get_direct_route_for_host (const NMIP6Config *config, const struct
 		if (best_route && best_route->plen > item->plen)
 			continue;
 
-		nm_utils_ip6_address_clear_host_address (&host2, host, item->plen);
-		nm_utils_ip6_address_clear_host_address (&network2, &item->network, item->plen);
-
-		if (!IN6_ARE_ADDR_EQUAL (&network2, &host2))
+		if (!nm_utils_ip6_address_same_prefix (host, &item->network, item->plen))
 			continue;
 
 		if (best_route &&
diff --git a/src/nm-ip6-config.h b/src/nm-ip6-config.h
index 5ca64ac3..5e66d500 100644
--- a/src/nm-ip6-config.h
+++ b/src/nm-ip6-config.h
@@ -81,7 +81,7 @@ void nm_ip6_config_merge (NMIP6Config *dst, const NMIP6Config *src, NMIPConfigMe
 void nm_ip6_config_subtract (NMIP6Config *dst, const NMIP6Config *src);
 void nm_ip6_config_intersect (NMIP6Config *dst, const NMIP6Config *src);
 gboolean nm_ip6_config_replace (NMIP6Config *dst, const NMIP6Config *src, gboolean *relevant_changes);
-int nm_ip6_config_destination_is_direct (const NMIP6Config *config, const struct in6_addr *dest, int plen);
+int nm_ip6_config_destination_is_direct (const NMIP6Config *config, const struct in6_addr *dest, guint8 plen);
 void nm_ip6_config_dump (const NMIP6Config *config, const char *detail);
 
 /* Gateways */
diff --git a/src/nm-route-manager.c b/src/nm-route-manager.c
index 3cf24118..05e28c74 100644
--- a/src/nm-route-manager.c
+++ b/src/nm-route-manager.c
@@ -221,7 +221,7 @@ _v6_route_dest_cmp (const NMPlatformIP6Route *r1, const NMPlatformIP6Route *r2)
 	CMP_AND_RETURN_INT (r1->plen, r2->plen);
 
 	nm_utils_ip6_address_clear_host_address (&n1, &r1->network, r1->plen);
-	nm_utils_ip6_address_clear_host_address (&n2, &r2->network, r2->plen);
+	nm_utils_ip6_address_clear_host_address (&n2, &r2->network, r2->plen );
 	return memcmp (&n1, &n2, sizeof (n1));
 }
 
diff --git a/src/platform/nm-fake-platform.c b/src/platform/nm-fake-platform.c
index fdb11eac..15d9c543 100644
--- a/src/platform/nm-fake-platform.c
+++ b/src/platform/nm-fake-platform.c
@@ -91,17 +91,17 @@ static void link_changed (NMPlatform *platform, NMFakePlatformLink *device, gboo
 static gboolean ip6_address_add (NMPlatform *platform,
                                  int ifindex,
                                  struct in6_addr addr,
-                                 int plen,
+                                 guint8 plen,
                                  struct in6_addr peer_addr,
                                  guint32 lifetime,
                                  guint32 preferred,
                                  guint flags);
-static gboolean ip6_address_delete (NMPlatform *platform, int ifindex, struct in6_addr addr, int plen);
+static gboolean ip6_address_delete (NMPlatform *platform, int ifindex, struct in6_addr addr, guint8 plen);
 
 /******************************************************************/
 
 static gboolean
-_ip4_address_equal_peer_net (in_addr_t peer1, in_addr_t peer2, int plen)
+_ip4_address_equal_peer_net (in_addr_t peer1, in_addr_t peer2, guint8 plen)
 {
 	return ((peer1 ^ peer2) & nm_utils_ip4_prefix_to_netmask (plen)) == 0;
 }
@@ -886,7 +886,7 @@ static gboolean
 ip4_address_add (NMPlatform *platform,
                  int ifindex,
                  in_addr_t addr,
-                 int plen,
+                 guint8 plen,
                  in_addr_t peer_addr,
                  guint32 lifetime,
                  guint32 preferred,
@@ -938,7 +938,7 @@ static gboolean
 ip6_address_add (NMPlatform *platform,
                  int ifindex,
                  struct in6_addr addr,
-                 int plen,
+                 guint8 plen,
                  struct in6_addr peer_addr,
                  guint32 lifetime,
                  guint32 preferred,
@@ -982,7 +982,7 @@ ip6_address_add (NMPlatform *platform,
 }
 
 static gboolean
-ip4_address_delete (NMPlatform *platform, int ifindex, in_addr_t addr, int plen, in_addr_t peer_address)
+ip4_address_delete (NMPlatform *platform, int ifindex, in_addr_t addr, guint8 plen, in_addr_t peer_address)
 {
 	NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform);
 	int i;
@@ -1007,7 +1007,7 @@ ip4_address_delete (NMPlatform *platform, int ifindex, in_addr_t addr, int plen,
 }
 
 static gboolean
-ip6_address_delete (NMPlatform *platform, int ifindex, struct in6_addr addr, int plen)
+ip6_address_delete (NMPlatform *platform, int ifindex, struct in6_addr addr, guint8 plen)
 {
 	NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform);
 	int i;
@@ -1031,7 +1031,7 @@ ip6_address_delete (NMPlatform *platform, int ifindex, struct in6_addr addr, int
 }
 
 static const NMPlatformIP4Address *
-ip4_address_get (NMPlatform *platform, int ifindex, in_addr_t addr, int plen, in_addr_t peer_address)
+ip4_address_get (NMPlatform *platform, int ifindex, in_addr_t addr, guint8 plen, in_addr_t peer_address)
 {
 	NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform);
 	int i;
@@ -1050,7 +1050,7 @@ ip4_address_get (NMPlatform *platform, int ifindex, in_addr_t addr, int plen, in
 }
 
 static const NMPlatformIP6Address *
-ip6_address_get (NMPlatform *platform, int ifindex, struct in6_addr addr, int plen)
+ip6_address_get (NMPlatform *platform, int ifindex, struct in6_addr addr, guint8 plen)
 {
 	NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform);
 	int i;
@@ -1058,8 +1058,9 @@ ip6_address_get (NMPlatform *platform, int ifindex, struct in6_addr addr, int pl
 	for (i = 0; i < priv->ip6_addresses->len; i++) {
 		NMPlatformIP6Address *address = &g_array_index (priv->ip6_addresses, NMPlatformIP6Address, i);
 
-		if (address->ifindex == ifindex && address->plen == plen &&
-				IN6_ARE_ADDR_EQUAL (&address->address, &addr))
+		if (   address->ifindex == ifindex
+		    && address->plen == plen
+		    && IN6_ARE_ADDR_EQUAL (&address->address, &addr))
 			return address;
 	}
 
@@ -1129,7 +1130,7 @@ ip6_route_get_all (NMPlatform *platform, int ifindex, NMPlatformGetRouteFlags fl
 }
 
 static gboolean
-ip4_route_delete (NMPlatform *platform, int ifindex, in_addr_t network, int plen, guint32 metric)
+ip4_route_delete (NMPlatform *platform, int ifindex, in_addr_t network, guint8 plen, guint32 metric)
 {
 	NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform);
 	int i;
@@ -1153,7 +1154,7 @@ ip4_route_delete (NMPlatform *platform, int ifindex, in_addr_t network, int plen
 }
 
 static gboolean
-ip6_route_delete (NMPlatform *platform, int ifindex, struct in6_addr network, int plen, guint32 metric)
+ip6_route_delete (NMPlatform *platform, int ifindex, struct in6_addr network, guint8 plen, guint32 metric)
 {
 	NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform);
 	int i;
@@ -1180,7 +1181,7 @@ ip6_route_delete (NMPlatform *platform, int ifindex, struct in6_addr network, in
 
 static gboolean
 ip4_route_add (NMPlatform *platform, int ifindex, NMIPConfigSource source,
-               in_addr_t network, int plen, in_addr_t gateway,
+               in_addr_t network, guint8 plen, in_addr_t gateway,
                in_addr_t pref_src, guint32 metric, guint32 mss)
 {
 	NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform);
@@ -1188,6 +1189,8 @@ ip4_route_add (NMPlatform *platform, int ifindex, NMIPConfigSource source,
 	guint i;
 	guint8 scope;
 
+	g_assert (plen <= 32);
+
 	scope = gateway == 0 ? RT_SCOPE_LINK : RT_SCOPE_UNIVERSE;
 
 	memset (&route, 0, sizeof (route));
@@ -1247,7 +1250,7 @@ ip4_route_add (NMPlatform *platform, int ifindex, NMIPConfigSource source,
 
 static gboolean
 ip6_route_add (NMPlatform *platform, int ifindex, NMIPConfigSource source,
-               struct in6_addr network, int plen, struct in6_addr gateway,
+               struct in6_addr network, guint8 plen, struct in6_addr gateway,
                guint32 metric, guint32 mss)
 {
 	NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform);
@@ -1313,7 +1316,7 @@ ip6_route_add (NMPlatform *platform, int ifindex, NMIPConfigSource source,
 }
 
 static const NMPlatformIP4Route *
-ip4_route_get (NMPlatform *platform, int ifindex, in_addr_t network, int plen, guint32 metric)
+ip4_route_get (NMPlatform *platform, int ifindex, in_addr_t network, guint8 plen, guint32 metric)
 {
 	NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform);
 	int i;
@@ -1332,7 +1335,7 @@ ip4_route_get (NMPlatform *platform, int ifindex, in_addr_t network, int plen, g
 }
 
 static const NMPlatformIP6Route *
-ip6_route_get (NMPlatform *platform, int ifindex, struct in6_addr network, int plen, guint32 metric)
+ip6_route_get (NMPlatform *platform, int ifindex, struct in6_addr network, guint8 plen, guint32 metric)
 {
 	NMFakePlatformPrivate *priv = NM_FAKE_PLATFORM_GET_PRIVATE (platform);
 	int i;
diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c
index 3282e698..ded019e6 100644
--- a/src/platform/nm-linux-platform.c
+++ b/src/platform/nm-linux-platform.c
@@ -176,13 +176,22 @@
  * Forward declarations and enums
  ******************************************************************/
 
+enum {
+	DELAYED_ACTION_IDX_REFRESH_ALL_LINKS,
+	DELAYED_ACTION_IDX_REFRESH_ALL_IP4_ADDRESSES,
+	DELAYED_ACTION_IDX_REFRESH_ALL_IP6_ADDRESSES,
+	DELAYED_ACTION_IDX_REFRESH_ALL_IP4_ROUTES,
+	DELAYED_ACTION_IDX_REFRESH_ALL_IP6_ROUTES,
+	_DELAYED_ACTION_IDX_REFRESH_ALL_NUM,
+};
+
 typedef enum {
 	DELAYED_ACTION_TYPE_NONE                        = 0,
-	DELAYED_ACTION_TYPE_REFRESH_ALL_LINKS           = (1LL << 0),
-	DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ADDRESSES   = (1LL << 1),
-	DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ADDRESSES   = (1LL << 2),
-	DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ROUTES      = (1LL << 3),
-	DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ROUTES      = (1LL << 4),
+	DELAYED_ACTION_TYPE_REFRESH_ALL_LINKS           = (1LL << DELAYED_ACTION_IDX_REFRESH_ALL_LINKS),
+	DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ADDRESSES   = (1LL << DELAYED_ACTION_IDX_REFRESH_ALL_IP4_ADDRESSES),
+	DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ADDRESSES   = (1LL << DELAYED_ACTION_IDX_REFRESH_ALL_IP6_ADDRESSES),
+	DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ROUTES      = (1LL << DELAYED_ACTION_IDX_REFRESH_ALL_IP4_ROUTES),
+	DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ROUTES      = (1LL << DELAYED_ACTION_IDX_REFRESH_ALL_IP6_ROUTES),
 	DELAYED_ACTION_TYPE_REFRESH_LINK                = (1LL << 5),
 	DELAYED_ACTION_TYPE_MASTER_CONNECTED            = (1LL << 6),
 	DELAYED_ACTION_TYPE_READ_NETLINK                = (1LL << 7),
@@ -198,6 +207,10 @@ typedef enum {
 	DELAYED_ACTION_TYPE_MAX                         = __DELAYED_ACTION_TYPE_MAX -1,
 } DelayedActionType;
 
+#define FOR_EACH_DELAYED_ACTION(iflags, flags_all) \
+	for ((iflags) = (DelayedActionType) 0x1LL; (iflags) <= DELAYED_ACTION_TYPE_MAX; (iflags) <<= 1) \
+		if (NM_FLAGS_HAS (flags_all, iflags))
+
 typedef enum {
 	/* Negative values are errors from kernel. Add dummy member to
 	 * make enum signed. */
@@ -290,49 +303,9 @@ _support_user_ipv6ll_detect (struct nlattr **tb)
  * Various utilities
  ******************************************************************/
 
-static guint
-_nm_ip_config_source_to_rtprot (NMIPConfigSource source)
-{
-	switch (source) {
-	case NM_IP_CONFIG_SOURCE_UNKNOWN:
-		return RTPROT_UNSPEC;
-	case NM_IP_CONFIG_SOURCE_KERNEL:
-	case NM_IP_CONFIG_SOURCE_RTPROT_KERNEL:
-		return RTPROT_KERNEL;
-	case NM_IP_CONFIG_SOURCE_DHCP:
-		return RTPROT_DHCP;
-	case NM_IP_CONFIG_SOURCE_RDISC:
-		return RTPROT_RA;
-
-	default:
-		return RTPROT_STATIC;
-	}
-}
-
-static NMIPConfigSource
-_nm_ip_config_source_from_rtprot (guint rtprot)
-{
-	switch (rtprot) {
-	case RTPROT_UNSPEC:
-		return NM_IP_CONFIG_SOURCE_UNKNOWN;
-	case RTPROT_KERNEL:
-		return NM_IP_CONFIG_SOURCE_RTPROT_KERNEL;
-	case RTPROT_REDIRECT:
-		return NM_IP_CONFIG_SOURCE_KERNEL;
-	case RTPROT_RA:
-		return NM_IP_CONFIG_SOURCE_RDISC;
-	case RTPROT_DHCP:
-		return NM_IP_CONFIG_SOURCE_DHCP;
-
-	default:
-		return NM_IP_CONFIG_SOURCE_USER;
-	}
-}
-
 static void
-clear_host_address (int family, const void *network, int plen, void *dst)
+clear_host_address (int family, const void *network, guint8 plen, void *dst)
 {
-	g_return_if_fail (plen == (guint8)plen);
 	g_return_if_fail (network);
 
 	switch (family) {
@@ -1641,6 +1614,9 @@ _new_from_nl_addr (struct nlmsghdr *nlh, gboolean id_only)
 	           ? sizeof (in_addr_t)
 	           : sizeof (struct in6_addr);
 
+	if (ifa->ifa_prefixlen > (is_v4 ? 32 : 128))
+		goto errout;
+
 	/*****************************************************************/
 
 	obj = nmp_object_new (is_v4 ? NMP_OBJECT_TYPE_IP4_ADDRESS : NMP_OBJECT_TYPE_IP6_ADDRESS, NULL);
@@ -1779,6 +1755,9 @@ _new_from_nl_route (struct nlmsghdr *nlh, gboolean id_only)
 	           ? sizeof (in_addr_t)
 	           : sizeof (struct in6_addr);
 
+	if (rtm->rtm_dst_len > (is_v4 ? 32 : 128))
+		goto errout;
+
 	/*****************************************************************
 	 * parse nexthops. Only handle routes with one nh.
 	 *****************************************************************/
@@ -1906,7 +1885,7 @@ _new_from_nl_route (struct nlmsghdr *nlh, gboolean id_only)
 		 * */
 		obj->ip_route.source = _NM_IP_CONFIG_SOURCE_RTM_F_CLONED;
 	} else
-		obj->ip_route.source = _nm_ip_config_source_from_rtprot (rtm->rtm_protocol);
+		obj->ip_route.source = nmp_utils_ip_config_source_from_rtprot (rtm->rtm_protocol);
 
 	obj_result = obj;
 	obj = NULL;
@@ -2158,7 +2137,7 @@ _nl_msg_new_address (int nlmsg_type,
                      int family,
                      int ifindex,
                      gconstpointer address,
-                     int plen,
+                     guint8 plen,
                      gconstpointer peer_address,
                      guint32 flags,
                      int scope,
@@ -2255,7 +2234,7 @@ _nl_msg_new_route (int nlmsg_type,
                    NMIPConfigSource source,
                    unsigned char scope,
                    gconstpointer network,
-                   int plen,
+                   guint8 plen,
                    gconstpointer gateway,
                    guint32 metric,
                    guint32 mss,
@@ -2266,7 +2245,7 @@ _nl_msg_new_route (int nlmsg_type,
 		.rtm_family = family,
 		.rtm_tos = 0,
 		.rtm_table = RT_TABLE_MAIN, /* omit setting RTA_TABLE attribute */
-		.rtm_protocol = _nm_ip_config_source_to_rtprot (source),
+		.rtm_protocol = nmp_utils_ip_config_source_to_rtprot (source),
 		.rtm_scope = scope,
 		.rtm_type = RTN_UNICAST,
 		.rtm_flags = 0,
@@ -2369,9 +2348,10 @@ _support_kernel_extended_ifa_flags_get (void)
 
 typedef struct {
 	guint32 seq_number;
-	gint64 timeout_abs_ns;
 	WaitForNlResponseResult seq_result;
+	gint64 timeout_abs_ns;
 	WaitForNlResponseResult *out_seq_result;
+	gint *out_refresh_all_in_progess;
 } DelayedActionWaitForNlResponseData;
 
 typedef struct _NMLinuxPlatformPrivate NMLinuxPlatformPrivate;
@@ -2379,7 +2359,10 @@ typedef struct _NMLinuxPlatformPrivate NMLinuxPlatformPrivate;
 struct _NMLinuxPlatformPrivate {
 	struct nl_sock *nlh;
 	guint32 nlh_seq_next;
+#ifdef NM_MORE_LOGGING
 	guint32 nlh_seq_last_handled;
+#endif
+	guint32 nlh_seq_last_seen;
 	NMPCache *cache;
 	GIOChannel *event_channel;
 	guint event_id;
@@ -2390,10 +2373,18 @@ struct _NMLinuxPlatformPrivate {
 	GUdevClient *udev_client;
 
 	struct {
+		/* which delayed actions are scheduled, as marked in @flags.
+		 * Some types have additional arguments in the fields below. */
 		DelayedActionType flags;
+
+		/* counter that a refresh all action is in progress, separated
+		 * by type. */
+		gint refresh_all_in_progess[_DELAYED_ACTION_IDX_REFRESH_ALL_NUM];
+
 		GPtrArray *list_master_connected;
 		GPtrArray *list_refresh_link;
 		GArray *list_wait_for_nl_response;
+
 		gint is_handling;
 	} delayed_action;
 
@@ -2412,12 +2403,21 @@ NM_LINUX_PLATFORM_GET_PRIVATE (const void *self)
 
 G_DEFINE_TYPE (NMLinuxPlatform, nm_linux_platform, NM_TYPE_PLATFORM)
 
+NMPlatform *
+nm_linux_platform_new (gboolean netns_support)
+{
+	return g_object_new (NM_TYPE_LINUX_PLATFORM,
+	                     NM_PLATFORM_REGISTER_SINGLETON, FALSE,
+	                     NM_PLATFORM_NETNS_SUPPORT, netns_support,
+	                     NULL);
+}
+
 void
 nm_linux_platform_setup (void)
 {
 	g_object_new (NM_TYPE_LINUX_PLATFORM,
-	              NM_PLATFORM_NETNS_SUPPORT, FALSE,
 	              NM_PLATFORM_REGISTER_SINGLETON, TRUE,
+	              NM_PLATFORM_NETNS_SUPPORT, FALSE,
 	              NULL);
 }
 
@@ -2733,49 +2733,51 @@ do_emit_signal (NMPlatform *platform, const NMPObject *obj, NMPCacheOpsType cach
 
 /******************************************************************/
 
-static DelayedActionType
-delayed_action_refresh_from_object_type (NMPObjectType obj_type)
-{
-	switch (obj_type) {
-	case NMP_OBJECT_TYPE_LINK:          return DELAYED_ACTION_TYPE_REFRESH_ALL_LINKS;
-	case NMP_OBJECT_TYPE_IP4_ADDRESS:   return DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ADDRESSES;
-	case NMP_OBJECT_TYPE_IP6_ADDRESS:   return DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ADDRESSES;
-	case NMP_OBJECT_TYPE_IP4_ROUTE:     return DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ROUTES;
-	case NMP_OBJECT_TYPE_IP6_ROUTE:     return DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ROUTES;
-	default: g_return_val_if_reached (DELAYED_ACTION_TYPE_NONE);
-	}
-}
-
-static NMPObjectType
-delayed_action_refresh_to_object_type (DelayedActionType action_type)
-{
-	switch (action_type) {
-	case DELAYED_ACTION_TYPE_REFRESH_ALL_LINKS:             return NMP_OBJECT_TYPE_LINK;
-	case DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ADDRESSES:     return NMP_OBJECT_TYPE_IP4_ADDRESS;
-	case DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ADDRESSES:     return NMP_OBJECT_TYPE_IP6_ADDRESS;
-	case DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ROUTES:        return NMP_OBJECT_TYPE_IP4_ROUTE;
-	case DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ROUTES:        return NMP_OBJECT_TYPE_IP6_ROUTE;
-	default: g_return_val_if_reached (NMP_OBJECT_TYPE_UNKNOWN);
-	}
-}
-
-static const char *
-delayed_action_to_string (DelayedActionType action_type)
-{
-	switch (action_type) {
-	case DELAYED_ACTION_TYPE_REFRESH_ALL_LINKS              : return "refresh-all-links";
-	case DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ADDRESSES      : return "refresh-all-ip4-addresses";
-	case DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ADDRESSES      : return "refresh-all-ip6-addresses";
-	case DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ROUTES         : return "refresh-all-ip4-routes";
-	case DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ROUTES         : return "refresh-all-ip6-routes";
-	case DELAYED_ACTION_TYPE_REFRESH_LINK                   : return "refresh-link";
-	case DELAYED_ACTION_TYPE_MASTER_CONNECTED               : return "master-connected";
-	case DELAYED_ACTION_TYPE_READ_NETLINK                   : return "read-netlink";
-	case DELAYED_ACTION_TYPE_WAIT_FOR_NL_RESPONSE           : return "wait-for-nl-response";
-	default:
-		return "unknown";
-	}
-}
+_NM_UTILS_LOOKUP_DEFINE (static, delayed_action_refresh_from_object_type, NMPObjectType, DelayedActionType,
+	NM_UTILS_LOOKUP_DEFAULT_NM_ASSERT (DELAYED_ACTION_TYPE_NONE),
+	NM_UTILS_LOOKUP_ITEM (NMP_OBJECT_TYPE_LINK,        DELAYED_ACTION_TYPE_REFRESH_ALL_LINKS),
+	NM_UTILS_LOOKUP_ITEM (NMP_OBJECT_TYPE_IP4_ADDRESS, DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ADDRESSES),
+	NM_UTILS_LOOKUP_ITEM (NMP_OBJECT_TYPE_IP6_ADDRESS, DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ADDRESSES),
+	NM_UTILS_LOOKUP_ITEM (NMP_OBJECT_TYPE_IP4_ROUTE,   DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ROUTES),
+	NM_UTILS_LOOKUP_ITEM (NMP_OBJECT_TYPE_IP6_ROUTE,   DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ROUTES),
+	NM_UTILS_LOOKUP_ITEM_IGNORE_OTHER (),
+);
+
+_NM_UTILS_LOOKUP_DEFINE (static, delayed_action_refresh_to_object_type, DelayedActionType, NMPObjectType,
+	NM_UTILS_LOOKUP_DEFAULT_NM_ASSERT (NMP_OBJECT_TYPE_UNKNOWN),
+	NM_UTILS_LOOKUP_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_LINKS,         NMP_OBJECT_TYPE_LINK),
+	NM_UTILS_LOOKUP_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ADDRESSES, NMP_OBJECT_TYPE_IP4_ADDRESS),
+	NM_UTILS_LOOKUP_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ADDRESSES, NMP_OBJECT_TYPE_IP6_ADDRESS),
+	NM_UTILS_LOOKUP_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ROUTES,    NMP_OBJECT_TYPE_IP4_ROUTE),
+	NM_UTILS_LOOKUP_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ROUTES,    NMP_OBJECT_TYPE_IP6_ROUTE),
+	NM_UTILS_LOOKUP_ITEM_IGNORE_OTHER (),
+);
+
+_NM_UTILS_LOOKUP_DEFINE (static, delayed_action_refresh_all_to_idx, DelayedActionType, guint,
+	NM_UTILS_LOOKUP_DEFAULT_NM_ASSERT (0),
+	NM_UTILS_LOOKUP_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_LINKS,         DELAYED_ACTION_IDX_REFRESH_ALL_LINKS),
+	NM_UTILS_LOOKUP_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ADDRESSES, DELAYED_ACTION_IDX_REFRESH_ALL_IP4_ADDRESSES),
+	NM_UTILS_LOOKUP_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ADDRESSES, DELAYED_ACTION_IDX_REFRESH_ALL_IP6_ADDRESSES),
+	NM_UTILS_LOOKUP_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ROUTES,    DELAYED_ACTION_IDX_REFRESH_ALL_IP4_ROUTES),
+	NM_UTILS_LOOKUP_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ROUTES,    DELAYED_ACTION_IDX_REFRESH_ALL_IP6_ROUTES),
+	NM_UTILS_LOOKUP_ITEM_IGNORE_OTHER (),
+);
+
+NM_UTILS_LOOKUP_STR_DEFINE_STATIC (delayed_action_to_string, DelayedActionType,
+	NM_UTILS_LOOKUP_DEFAULT_NM_ASSERT ("unknown"),
+	NM_UTILS_LOOKUP_STR_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_LINKS,         "refresh-all-links"),
+	NM_UTILS_LOOKUP_STR_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ADDRESSES, "refresh-all-ip4-addresses"),
+	NM_UTILS_LOOKUP_STR_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ADDRESSES, "refresh-all-ip6-addresses"),
+	NM_UTILS_LOOKUP_STR_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ROUTES,    "refresh-all-ip4-routes"),
+	NM_UTILS_LOOKUP_STR_ITEM (DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ROUTES,    "refresh-all-ip6-routes"),
+	NM_UTILS_LOOKUP_STR_ITEM (DELAYED_ACTION_TYPE_REFRESH_LINK,              "refresh-link"),
+	NM_UTILS_LOOKUP_STR_ITEM (DELAYED_ACTION_TYPE_MASTER_CONNECTED,          "master-connected"),
+	NM_UTILS_LOOKUP_STR_ITEM (DELAYED_ACTION_TYPE_READ_NETLINK,              "read-netlink"),
+	NM_UTILS_LOOKUP_STR_ITEM (DELAYED_ACTION_TYPE_WAIT_FOR_NL_RESPONSE,      "wait-for-nl-response"),
+	NM_UTILS_LOOKUP_ITEM_IGNORE (DELAYED_ACTION_TYPE_NONE),
+	NM_UTILS_LOOKUP_ITEM_IGNORE (DELAYED_ACTION_TYPE_REFRESH_ALL),
+	NM_UTILS_LOOKUP_ITEM_IGNORE (__DELAYED_ACTION_TYPE_MAX),
+);
 
 static const char *
 delayed_action_to_string_full (DelayedActionType action_type, gpointer user_data, char *buf, gsize buf_size)
@@ -2826,6 +2828,24 @@ delayed_action_to_string_full (DelayedActionType action_type, gpointer user_data
 
 /*****************************************************************************/
 
+static gboolean
+delayed_action_refresh_all_in_progress (NMPlatform *platform, DelayedActionType action_type)
+{
+	NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform);
+
+	nm_assert (nm_utils_is_power_of_two (action_type));
+	nm_assert (NM_FLAGS_ANY (action_type, DELAYED_ACTION_TYPE_REFRESH_ALL));
+	nm_assert (!NM_FLAGS_ANY (action_type, ~DELAYED_ACTION_TYPE_REFRESH_ALL));
+
+	if (NM_FLAGS_ANY (priv->delayed_action.flags, action_type))
+		return TRUE;
+
+	if (priv->delayed_action.refresh_all_in_progess[delayed_action_refresh_all_to_idx (action_type)] > 0)
+		return TRUE;
+
+	return FALSE;
+}
+
 static void
 delayed_action_wait_for_nl_response_complete (NMPlatform *platform,
                                               guint idx,
@@ -2833,7 +2853,6 @@ delayed_action_wait_for_nl_response_complete (NMPlatform *platform,
 {
 	NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform);
 	DelayedActionWaitForNlResponseData *data;
-	WaitForNlResponseResult *out_seq_result;
 
 	nm_assert (NM_FLAGS_HAS (priv->delayed_action.flags, DELAYED_ACTION_TYPE_WAIT_FOR_NL_RESPONSE));
 	nm_assert (idx < priv->delayed_action.list_wait_for_nl_response->len);
@@ -2843,16 +2862,16 @@ delayed_action_wait_for_nl_response_complete (NMPlatform *platform,
 
 	_LOGt_delayed_action (DELAYED_ACTION_TYPE_WAIT_FOR_NL_RESPONSE, data, "complete");
 
-	out_seq_result = data->out_seq_result;
-
-	g_array_remove_index_fast (priv->delayed_action.list_wait_for_nl_response, idx);
-	/* Note: @data is invalidated at this point */
-
-	if (priv->delayed_action.list_wait_for_nl_response->len <= 0)
+	if (priv->delayed_action.list_wait_for_nl_response->len <= 1)
 		priv->delayed_action.flags &= ~DELAYED_ACTION_TYPE_WAIT_FOR_NL_RESPONSE;
+	if (data->out_seq_result)
+		*data->out_seq_result = seq_result;
+	if (data->out_refresh_all_in_progess) {
+		nm_assert (*data->out_refresh_all_in_progess > 0);
+		*data->out_refresh_all_in_progess -= 1;
+	}
 
-	if (out_seq_result)
-		*out_seq_result = seq_result;
+	g_array_remove_index_fast (priv->delayed_action.list_wait_for_nl_response, idx);
 }
 
 static void
@@ -2961,9 +2980,8 @@ delayed_action_handle_one (NMPlatform *platform)
 		priv->delayed_action.flags &= ~DELAYED_ACTION_TYPE_REFRESH_ALL;
 
 		if (_LOGt_ENABLED ()) {
-			for (iflags = (DelayedActionType) 0x1LL; iflags <= DELAYED_ACTION_TYPE_MAX; iflags <<= 1) {
-				if (NM_FLAGS_HAS (flags, iflags))
-					_LOGt_delayed_action (iflags, NULL, "handle");
+			FOR_EACH_DELAYED_ACTION (iflags, flags) {
+				_LOGt_delayed_action (iflags, NULL, "handle");
 			}
 		}
 
@@ -3048,9 +3066,8 @@ delayed_action_schedule (NMPlatform *platform, DelayedActionType action_type, gp
 	priv->delayed_action.flags |= action_type;
 
 	if (_LOGt_ENABLED ()) {
-		for (iflags = (DelayedActionType) 0x1LL; iflags <= DELAYED_ACTION_TYPE_MAX; iflags <<= 1) {
-			if (NM_FLAGS_HAS (action_type, iflags))
-				_LOGt_delayed_action (iflags, user_data, "schedule");
+		FOR_EACH_DELAYED_ACTION (iflags, action_type) {
+			_LOGt_delayed_action (iflags, user_data, "schedule");
 		}
 	}
 }
@@ -3058,12 +3075,14 @@ delayed_action_schedule (NMPlatform *platform, DelayedActionType action_type, gp
 static void
 delayed_action_schedule_WAIT_FOR_NL_RESPONSE (NMPlatform *platform,
                                               guint32 seq_number,
-                                              WaitForNlResponseResult *out_seq_result)
+                                              WaitForNlResponseResult *out_seq_result,
+                                              gint *out_refresh_all_in_progess)
 {
 	DelayedActionWaitForNlResponseData data = {
 		.seq_number = seq_number,
 		.timeout_abs_ns = nm_utils_get_monotonic_timestamp_ns () + (200 * (NM_UTILS_NS_PER_SECOND / 1000)),
 		.out_seq_result = out_seq_result,
+		.out_refresh_all_in_progess = out_refresh_all_in_progess,
 	};
 
 	delayed_action_schedule (platform,
@@ -3150,7 +3169,7 @@ cache_prune_candidates_prune (NMPlatform *platform)
 static void
 cache_pre_hook (NMPCache *cache, const NMPObject *old, const NMPObject *new, NMPCacheOpsType ops_type, gpointer user_data)
 {
-	NMPlatform *platform = NM_PLATFORM (user_data);
+	NMPlatform *platform = user_data;
 	NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform);
 	const NMPClass *klass;
 	char str_buf[sizeof (_nm_utils_to_string_buffer)];
@@ -3162,6 +3181,7 @@ cache_pre_hook (NMPCache *cache, const NMPObject *old, const NMPObject *new, NMP
 	nm_assert (ops_type != NMP_CACHE_OPS_REMOVED || (new == NULL && NMP_OBJECT_IS_VALID (old) && nmp_object_is_alive (old)));
 	nm_assert (ops_type != NMP_CACHE_OPS_UPDATED || (NMP_OBJECT_IS_VALID (old) && nmp_object_is_alive (old) && NMP_OBJECT_IS_VALID (new) && nmp_object_is_alive (new)));
 	nm_assert (new == NULL || old == NULL || nmp_object_id_equal (new, old));
+	nm_assert (!old || !new || NMP_OBJECT_GET_CLASS (old) == NMP_OBJECT_GET_CLASS (new));
 
 	klass = old ? NMP_OBJECT_GET_CLASS (old) : NMP_OBJECT_GET_CLASS (new);
 
@@ -3368,17 +3388,56 @@ cache_pre_hook (NMPCache *cache, const NMPObject *old, const NMPObject *new, NMP
 				                         NULL);
 			}
 		}
+		break;
 	default:
 		break;
 	}
 }
 
+static void
+cache_post (NMPlatform *platform,
+            struct nlmsghdr *msghdr,
+            NMPCacheOpsType cache_op,
+            NMPObject *obj,
+            NMPObject *obj_cache)
+{
+	NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform);
+
+	nm_assert (NMP_OBJECT_IS_VALID (obj));
+	nm_assert (!obj_cache || nmp_object_id_equal (obj, obj_cache));
+
+	if (msghdr->nlmsg_type == RTM_NEWROUTE) {
+		DelayedActionType action_type;
+
+		action_type = NMP_OBJECT_GET_TYPE (obj) == NMP_OBJECT_TYPE_IP4_ROUTE
+		                  ? DELAYED_ACTION_TYPE_REFRESH_ALL_IP4_ROUTES
+		                  : DELAYED_ACTION_TYPE_REFRESH_ALL_IP6_ROUTES;
+		if (   !delayed_action_refresh_all_in_progress (platform, action_type)
+		    && nmp_cache_find_other_route_for_same_destination (priv->cache, obj)) {
+			/* via `iproute route change` the user can update an existing route which effectively
+			 * means that a new object (with a different ID) comes into existance, replacing the
+			 * old on. In other words, as the ID of the object changes, we really see a new
+			 * object with the old one deleted.
+			 * However, kernel decides not to send a RTM_DELROUTE event for that.
+			 *
+			 * To hack around that, check if the update leaves us with multiple routes for the
+			 * same network/plen,metric part. In that case, we cannot do better then requesting
+			 * all routes anew, which sucks.
+			 *
+			 * One mitigation to avoid a dump is only to request a new dump, if we are not in
+			 * the middle of an ongoing dump (delayed_action_refresh_all_in_progress). */
+			delayed_action_schedule (platform, action_type, NULL);
+		}
+	}
+}
+
 /******************************************************************/
 
 static int
 _nl_send_auto_with_seq (NMPlatform *platform,
                         struct nl_msg *nlmsg,
-                        WaitForNlResponseResult *out_seq_result)
+                        WaitForNlResponseResult *out_seq_result,
+                        gint *out_refresh_all_in_progess)
 {
 	NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform);
 	guint32 seq;
@@ -3393,7 +3452,7 @@ _nl_send_auto_with_seq (NMPlatform *platform,
 
 	if (nle >= 0) {
 		nle = 0;
-		delayed_action_schedule_WAIT_FOR_NL_RESPONSE (platform, seq, out_seq_result);
+		delayed_action_schedule_WAIT_FOR_NL_RESPONSE (platform, seq, out_seq_result, out_refresh_all_in_progess);
 	} else
 		_LOGD ("netlink: send: failed sending message: %s (%d)", nl_geterror (nle), nle);
 
@@ -3427,7 +3486,7 @@ do_request_link_no_delayed_actions (NMPlatform *platform, int ifindex, const cha
 	                          0,
 	                          0);
 	if (nlmsg)
-		_nl_send_auto_with_seq (platform, nlmsg, NULL);
+		_nl_send_auto_with_seq (platform, nlmsg, NULL, NULL);
 }
 
 static void
@@ -3446,48 +3505,51 @@ do_request_all_no_delayed_actions (NMPlatform *platform, DelayedActionType actio
 	nm_assert (!NM_FLAGS_ANY (action_type, ~DELAYED_ACTION_TYPE_REFRESH_ALL));
 	action_type &= DELAYED_ACTION_TYPE_REFRESH_ALL;
 
-	for (iflags = (DelayedActionType) 0x1LL; iflags <= DELAYED_ACTION_TYPE_MAX; iflags <<= 1) {
-		if (NM_FLAGS_HAS (action_type, iflags))
-			cache_prune_candidates_record_all (platform, delayed_action_refresh_to_object_type (iflags));
+	FOR_EACH_DELAYED_ACTION (iflags, action_type) {
+		cache_prune_candidates_record_all (platform, delayed_action_refresh_to_object_type (iflags));
 	}
 
-	for (iflags = (DelayedActionType) 0x1LL; iflags <= DELAYED_ACTION_TYPE_MAX; iflags <<= 1) {
-		if (NM_FLAGS_HAS (action_type, iflags)) {
-			NMPObjectType obj_type = delayed_action_refresh_to_object_type (iflags);
-			const NMPClass *klass = nmp_class_from_type (obj_type);
-			nm_auto_nlmsg struct nl_msg *nlmsg = NULL;
-			struct rtgenmsg gmsg = {
-				.rtgen_family = klass->addr_family,
-			};
-			int nle;
-
-			/* clear any delayed action that request a refresh of this object type. */
-			priv->delayed_action.flags &= ~iflags;
-			_LOGt_delayed_action (iflags, NULL, "handle (do-request-all)");
-			if (obj_type == NMP_OBJECT_TYPE_LINK) {
-				priv->delayed_action.flags &= ~DELAYED_ACTION_TYPE_REFRESH_LINK;
-				g_ptr_array_set_size (priv->delayed_action.list_refresh_link, 0);
-				_LOGt_delayed_action (DELAYED_ACTION_TYPE_REFRESH_LINK, NULL, "clear (do-request-all)");
-			}
+	FOR_EACH_DELAYED_ACTION (iflags, action_type) {
+		NMPObjectType obj_type = delayed_action_refresh_to_object_type (iflags);
+		const NMPClass *klass = nmp_class_from_type (obj_type);
+		nm_auto_nlmsg struct nl_msg *nlmsg = NULL;
+		struct rtgenmsg gmsg = {
+			.rtgen_family = klass->addr_family,
+		};
+		int nle;
+		gint *out_refresh_all_in_progess;
 
-			event_handler_read_netlink (platform, FALSE);
+		out_refresh_all_in_progess = &priv->delayed_action.refresh_all_in_progess[delayed_action_refresh_all_to_idx (iflags)];
+		nm_assert (*out_refresh_all_in_progess >= 0);
+		*out_refresh_all_in_progess += 1;
 
-			/* reimplement
-			 *   nl_rtgen_request (sk, klass->rtm_gettype, klass->addr_family, NLM_F_DUMP);
-			 * because we need the sequence number.
-			 */
-			nlmsg = nlmsg_alloc_simple (klass->rtm_gettype, NLM_F_DUMP);
-			if (!nlmsg)
-				goto next;
+		/* clear any delayed action that request a refresh of this object type. */
+		priv->delayed_action.flags &= ~iflags;
+		_LOGt_delayed_action (iflags, NULL, "handle (do-request-all)");
+		if (obj_type == NMP_OBJECT_TYPE_LINK) {
+			priv->delayed_action.flags &= ~DELAYED_ACTION_TYPE_REFRESH_LINK;
+			g_ptr_array_set_size (priv->delayed_action.list_refresh_link, 0);
+			_LOGt_delayed_action (DELAYED_ACTION_TYPE_REFRESH_LINK, NULL, "clear (do-request-all)");
+		}
 
-			nle = nlmsg_append (nlmsg, &gmsg, sizeof (gmsg), NLMSG_ALIGNTO);
-			if (nle < 0)
-				goto next;
+		event_handler_read_netlink (platform, FALSE);
 
-			_nl_send_auto_with_seq (platform, nlmsg, NULL);
+		/* reimplement
+		 *   nl_rtgen_request (sk, klass->rtm_gettype, klass->addr_family, NLM_F_DUMP);
+		 * because we need the sequence number.
+		 */
+		nlmsg = nlmsg_alloc_simple (klass->rtm_gettype, NLM_F_DUMP);
+		if (!nlmsg)
+			continue;
+
+		nle = nlmsg_append (nlmsg, &gmsg, sizeof (gmsg), NLMSG_ALIGNTO);
+		if (nle < 0)
+			continue;
+
+		if (_nl_send_auto_with_seq (platform, nlmsg, NULL, out_refresh_all_in_progess) < 0) {
+			nm_assert (*out_refresh_all_in_progess > 0);
+			*out_refresh_all_in_progess -= 1;
 		}
-next:
-		;
 	}
 }
 
@@ -3499,14 +3561,41 @@ do_request_one_type (NMPlatform *platform, NMPObjectType obj_type)
 }
 
 static void
-event_seq_check (NMPlatform *platform, struct nl_msg *msg, WaitForNlResponseResult seq_result)
+event_seq_check_refresh_all (NMPlatform *platform, guint32 seq_number)
 {
 	NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform);
 	DelayedActionWaitForNlResponseData *data;
-	guint32 seq_number;
 	guint i;
 
-	seq_number = nlmsg_hdr (msg)->nlmsg_seq;
+	if (NM_IN_SET (seq_number, 0, priv->nlh_seq_last_seen))
+		return;
+
+	if (NM_FLAGS_HAS (priv->delayed_action.flags, DELAYED_ACTION_TYPE_WAIT_FOR_NL_RESPONSE)) {
+		nm_assert (priv->delayed_action.list_wait_for_nl_response->len > 0);
+
+		for (i = 0; i < priv->delayed_action.list_wait_for_nl_response->len; i++) {
+			data = &g_array_index (priv->delayed_action.list_wait_for_nl_response, DelayedActionWaitForNlResponseData, i);
+
+			if (data->seq_number == priv->nlh_seq_last_seen) {
+				if (data->out_refresh_all_in_progess) {
+					nm_assert (*data->out_refresh_all_in_progess > 0);
+					*data->out_refresh_all_in_progess -= 1;
+					data->out_refresh_all_in_progess = NULL;
+					break;
+				}
+			}
+		}
+	}
+
+	priv->nlh_seq_last_seen = seq_number;
+}
+
+static void
+event_seq_check (NMPlatform *platform, guint32 seq_number, WaitForNlResponseResult seq_result)
+{
+	NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform);
+	DelayedActionWaitForNlResponseData *data;
+	guint i;
 
 	if (seq_number == 0)
 		return;
@@ -3531,9 +3620,11 @@ event_seq_check (NMPlatform *platform, struct nl_msg *msg, WaitForNlResponseResu
 		}
 	}
 
+#ifdef NM_MORE_LOGGING
 	if (seq_number != priv->nlh_seq_last_handled)
 		_LOGt ("netlink: recvmsg: unwaited sequence number %u", seq_number);
 	priv->nlh_seq_last_handled = seq_number;
+#endif
 }
 
 static void
@@ -3581,6 +3672,9 @@ event_valid_msg (NMPlatform *platform, struct nl_msg *msg, gboolean handle_event
 	case RTM_NEWADDR:
 	case RTM_NEWROUTE:
 		cache_op = nmp_cache_update_netlink (priv->cache, obj, &obj_cache, &was_visible, cache_pre_hook, platform);
+
+		cache_post (platform, msghdr, cache_op, obj, obj_cache);
+
 		do_emit_signal (platform, obj_cache, cache_op, was_visible);
 		break;
 
@@ -3730,7 +3824,7 @@ do_add_link_with_lookup (NMPlatform *platform,
 		}
 	}
 
-	nle = _nl_send_auto_with_seq (platform, nlmsg, &seq_result);
+	nle = _nl_send_auto_with_seq (platform, nlmsg, &seq_result, NULL);
 	if (nle < 0) {
 		_LOGE ("do-add-link[%s/%s]: failed sending netlink request \"%s\" (%d)",
 		       name,
@@ -3781,7 +3875,7 @@ do_add_addrroute (NMPlatform *platform, const NMPObject *obj_id, struct nl_msg *
 
 	event_handler_read_netlink (platform, FALSE);
 
-	nle = _nl_send_auto_with_seq (platform, nlmsg, &seq_result);
+	nle = _nl_send_auto_with_seq (platform, nlmsg, &seq_result, NULL);
 	if (nle < 0) {
 		_LOGE ("do-add-%s[%s]: failure sending netlink request \"%s\" (%d)",
 		       NMP_OBJECT_GET_CLASS (obj_id)->obj_type_name,
@@ -3834,7 +3928,7 @@ do_delete_object (NMPlatform *platform, const NMPObject *obj_id, struct nl_msg *
 
 	event_handler_read_netlink (platform, FALSE);
 
-	nle = _nl_send_auto_with_seq (platform, nlmsg, &seq_result);
+	nle = _nl_send_auto_with_seq (platform, nlmsg, &seq_result, NULL);
 	if (nle < 0) {
 		_LOGE ("do-delete-%s[%s]: failure sending netlink request \"%s\" (%d)",
 		       NMP_OBJECT_GET_CLASS (obj_id)->obj_type_name,
@@ -3895,7 +3989,7 @@ do_change_link (NMPlatform *platform,
 		return NM_PLATFORM_ERROR_UNSPECIFIED;
 
 retry:
-	nle = _nl_send_auto_with_seq (platform, nlmsg, &seq_result);
+	nle = _nl_send_auto_with_seq (platform, nlmsg, &seq_result, NULL);
 	if (nle < 0) {
 		_LOGE ("do-change-link[%d]: failure sending netlink request \"%s\" (%d)",
 		       ifindex,
@@ -3964,7 +4058,7 @@ link_add (NMPlatform *platform,
 	       name, nm_link_type_to_string (type), (int) type);
 
 	nlmsg = _nl_msg_new_link (RTM_NEWLINK,
-	                          NLM_F_CREATE,
+	                          NLM_F_CREATE | NLM_F_EXCL,
 	                          0,
 	                          name,
 	                          0,
@@ -4356,7 +4450,7 @@ vlan_add (NMPlatform *platform,
 	       name, parent, vlan_id, (unsigned int) vlan_flags);
 
 	nlmsg = _nl_msg_new_link (RTM_NEWLINK,
-	                          NLM_F_CREATE,
+	                          NLM_F_CREATE | NLM_F_EXCL,
 	                          0,
 	                          name,
 	                          0,
@@ -4400,7 +4494,7 @@ link_gre_add (NMPlatform *platform,
 	       nm_utils_inet4_ntop (props->remote, buffer));
 
 	nlmsg = _nl_msg_new_link (RTM_NEWLINK,
-	                          NLM_F_CREATE,
+	                          NLM_F_CREATE | NLM_F_EXCL,
 	                          0,
 	                          name,
 	                          0,
@@ -4456,7 +4550,7 @@ link_ip6tnl_add (NMPlatform *platform,
 	       nm_utils_inet6_ntop (&props->remote, buffer));
 
 	nlmsg = _nl_msg_new_link (RTM_NEWLINK,
-	                          NLM_F_CREATE,
+	                          NLM_F_CREATE | NLM_F_EXCL,
 	                          0,
 	                          name,
 	                          0,
@@ -4516,7 +4610,7 @@ link_ipip_add (NMPlatform *platform,
 	       nm_utils_inet4_ntop (props->remote, buffer));
 
 	nlmsg = _nl_msg_new_link (RTM_NEWLINK,
-	                          NLM_F_CREATE,
+	                          NLM_F_CREATE | NLM_F_EXCL,
 	                          0,
 	                          name,
 	                          0,
@@ -4566,7 +4660,7 @@ link_macvlan_add (NMPlatform *platform,
 	       props->mode);
 
 	nlmsg = _nl_msg_new_link (RTM_NEWLINK,
-	                          NLM_F_CREATE,
+	                          NLM_F_CREATE | NLM_F_EXCL,
 	                          0,
 	                          name,
 	                          0,
@@ -4616,7 +4710,7 @@ link_sit_add (NMPlatform *platform,
 	       nm_utils_inet4_ntop (props->remote, buffer));
 
 	nlmsg = _nl_msg_new_link (RTM_NEWLINK,
-	                          NLM_F_CREATE,
+	                          NLM_F_CREATE | NLM_F_EXCL,
 	                          0,
 	                          name,
 	                          0,
@@ -4665,7 +4759,7 @@ link_vxlan_add (NMPlatform *platform,
 	       name, props->parent_ifindex, props->id);
 
 	nlmsg = _nl_msg_new_link (RTM_NEWLINK,
-	                          NLM_F_CREATE,
+	                          NLM_F_CREATE | NLM_F_EXCL,
 	                          0,
 	                          name,
 	                          0,
@@ -5266,7 +5360,7 @@ static gboolean
 ip4_address_add (NMPlatform *platform,
                  int ifindex,
                  in_addr_t addr,
-                 int plen,
+                 guint8 plen,
                  in_addr_t peer_addr,
                  guint32 lifetime,
                  guint32 preferred,
@@ -5297,7 +5391,7 @@ static gboolean
 ip6_address_add (NMPlatform *platform,
                  int ifindex,
                  struct in6_addr addr,
-                 int plen,
+                 guint8 plen,
                  struct in6_addr peer_addr,
                  guint32 lifetime,
                  guint32 preferred,
@@ -5324,7 +5418,7 @@ ip6_address_add (NMPlatform *platform,
 }
 
 static gboolean
-ip4_address_delete (NMPlatform *platform, int ifindex, in_addr_t addr, int plen, in_addr_t peer_address)
+ip4_address_delete (NMPlatform *platform, int ifindex, in_addr_t addr, guint8 plen, in_addr_t peer_address)
 {
 	nm_auto_nlmsg struct nl_msg *nlmsg = NULL;
 	NMPObject obj_id;
@@ -5349,7 +5443,7 @@ ip4_address_delete (NMPlatform *platform, int ifindex, in_addr_t addr, int plen,
 }
 
 static gboolean
-ip6_address_delete (NMPlatform *platform, int ifindex, struct in6_addr addr, int plen)
+ip6_address_delete (NMPlatform *platform, int ifindex, struct in6_addr addr, guint8 plen)
 {
 	nm_auto_nlmsg struct nl_msg *nlmsg = NULL;
 	NMPObject obj_id;
@@ -5374,7 +5468,7 @@ ip6_address_delete (NMPlatform *platform, int ifindex, struct in6_addr addr, int
 }
 
 static const NMPlatformIP4Address *
-ip4_address_get (NMPlatform *platform, int ifindex, in_addr_t addr, int plen, in_addr_t peer_address)
+ip4_address_get (NMPlatform *platform, int ifindex, in_addr_t addr, guint8 plen, in_addr_t peer_address)
 {
 	NMPObject obj_id;
 	const NMPObject *obj;
@@ -5387,7 +5481,7 @@ ip4_address_get (NMPlatform *platform, int ifindex, in_addr_t addr, int plen, in
 }
 
 static const NMPlatformIP6Address *
-ip6_address_get (NMPlatform *platform, int ifindex, struct in6_addr addr, int plen)
+ip6_address_get (NMPlatform *platform, int ifindex, struct in6_addr addr, guint8 plen)
 {
 	NMPObject obj_id;
 	const NMPObject *obj;
@@ -5454,7 +5548,7 @@ ip6_route_get_all (NMPlatform *platform, int ifindex, NMPlatformGetRouteFlags fl
 
 static gboolean
 ip4_route_add (NMPlatform *platform, int ifindex, NMIPConfigSource source,
-               in_addr_t network, int plen, in_addr_t gateway,
+               in_addr_t network, guint8 plen, in_addr_t gateway,
                in_addr_t pref_src, guint32 metric, guint32 mss)
 {
 	NMPObject obj_id;
@@ -5479,7 +5573,7 @@ ip4_route_add (NMPlatform *platform, int ifindex, NMIPConfigSource source,
 
 static gboolean
 ip6_route_add (NMPlatform *platform, int ifindex, NMIPConfigSource source,
-               struct in6_addr network, int plen, struct in6_addr gateway,
+               struct in6_addr network, guint8 plen, struct in6_addr gateway,
                guint32 metric, guint32 mss)
 {
 	NMPObject obj_id;
@@ -5503,7 +5597,7 @@ ip6_route_add (NMPlatform *platform, int ifindex, NMIPConfigSource source,
 }
 
 static gboolean
-ip4_route_delete (NMPlatform *platform, int ifindex, in_addr_t network, int plen, guint32 metric)
+ip4_route_delete (NMPlatform *platform, int ifindex, in_addr_t network, guint8 plen, guint32 metric)
 {
 	NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform);
 	nm_auto_nlmsg struct nl_msg *nlmsg = NULL;
@@ -5559,7 +5653,7 @@ ip4_route_delete (NMPlatform *platform, int ifindex, in_addr_t network, int plen
 }
 
 static gboolean
-ip6_route_delete (NMPlatform *platform, int ifindex, struct in6_addr network, int plen, guint32 metric)
+ip6_route_delete (NMPlatform *platform, int ifindex, struct in6_addr network, guint8 plen, guint32 metric)
 {
 	nm_auto_nlmsg struct nl_msg *nlmsg = NULL;
 	NMPObject obj_id;
@@ -5587,7 +5681,7 @@ ip6_route_delete (NMPlatform *platform, int ifindex, struct in6_addr network, in
 }
 
 static const NMPlatformIP4Route *
-ip4_route_get (NMPlatform *platform, int ifindex, in_addr_t network, int plen, guint32 metric)
+ip4_route_get (NMPlatform *platform, int ifindex, in_addr_t network, guint8 plen, guint32 metric)
 {
 	NMPObject obj_id;
 	const NMPObject *obj;
@@ -5600,7 +5694,7 @@ ip4_route_get (NMPlatform *platform, int ifindex, in_addr_t network, int plen, g
 }
 
 static const NMPlatformIP6Route *
-ip6_route_get (NMPlatform *platform, int ifindex, struct in6_addr network, int plen, guint32 metric)
+ip6_route_get (NMPlatform *platform, int ifindex, struct in6_addr network, guint8 plen, guint32 metric)
 {
 	NMPObject obj_id;
 	const NMPObject *obj;
@@ -5684,6 +5778,8 @@ continue_reading:
 	while (nlmsg_ok (hdr, n)) {
 		nm_auto_nlmsg struct nl_msg *msg = NULL;
 		gboolean abort_parsing = FALSE;
+		gboolean process_valid_msg = FALSE;
+		guint32 seq_number;
 
 		msg = nlmsg_convert (hdr);
 		if (!msg) {
@@ -5768,7 +5864,21 @@ continue_reading:
 				seq_result = -errsv;
 			} else
 				seq_result = WAIT_FOR_NL_RESPONSE_RESULT_RESPONSE_OK;
-		} else {
+		} else
+			process_valid_msg = TRUE;
+
+		seq_number = nlmsg_hdr (msg)->nlmsg_seq;
+
+		/* check whether the seq number is different from before, and
+		 * whether the previous number (@nlh_seq_last_seen) is a pending
+		 * refresh-all request. In that case, the pending request is thereby
+		 * completed.
+		 *
+		 * We must do that before processing the message with event_valid_msg(),
+		 * because we must track the completion of the pending request before that. */
+		event_seq_check_refresh_all (platform, seq_number);
+
+		if (process_valid_msg) {
 			/* Valid message (not checking for MULTIPART bit to
 			 * get along with broken kernels. NL_SKIP has no
 			 * effect on this.  */
@@ -5778,7 +5888,7 @@ continue_reading:
 			seq_result = WAIT_FOR_NL_RESPONSE_RESULT_RESPONSE_OK;
 		}
 
-		event_seq_check (platform, msg, seq_result);
+		event_seq_check (platform, seq_number, seq_result);
 
 		if (abort_parsing)
 			goto stop;
diff --git a/src/platform/nm-linux-platform.h b/src/platform/nm-linux-platform.h
index a9e2cd82..4ae2fd14 100644
--- a/src/platform/nm-linux-platform.h
+++ b/src/platform/nm-linux-platform.h
@@ -48,6 +48,8 @@ typedef struct {
 
 GType nm_linux_platform_get_type (void);
 
+NMPlatform *nm_linux_platform_new (gboolean netns_support);
+
 void nm_linux_platform_setup (void);
 
 #endif /* __NETWORKMANAGER_LINUX_PLATFORM_H__ */
diff --git a/src/platform/nm-platform-utils.c b/src/platform/nm-platform-utils.c
index d0c92a78..b4542adf 100644
--- a/src/platform/nm-platform-utils.c
+++ b/src/platform/nm-platform-utils.c
@@ -30,6 +30,7 @@
 #include <linux/sockios.h>
 #include <linux/mii.h>
 #include <linux/version.h>
+#include <linux/rtnetlink.h>
 
 #include "nm-utils.h"
 #include "nm-setting-wired.h"
@@ -412,6 +413,10 @@ out:
 	return g_intern_string (driver);
 }
 
+/******************************************************************************
+ * utils
+ *****************************************************************************/
+
 gboolean
 nmp_utils_device_exists (const char *name)
 {
@@ -427,3 +432,43 @@ nmp_utils_device_exists (const char *name)
 	nm_utils_ifname_cpy (&sysdir[NM_STRLEN (SYS_CLASS_NET)], name);
 	return g_file_test (sysdir, G_FILE_TEST_EXISTS);
 }
+
+guint
+nmp_utils_ip_config_source_to_rtprot (NMIPConfigSource source)
+{
+	switch (source) {
+	case NM_IP_CONFIG_SOURCE_UNKNOWN:
+		return RTPROT_UNSPEC;
+	case NM_IP_CONFIG_SOURCE_KERNEL:
+	case NM_IP_CONFIG_SOURCE_RTPROT_KERNEL:
+		return RTPROT_KERNEL;
+	case NM_IP_CONFIG_SOURCE_DHCP:
+		return RTPROT_DHCP;
+	case NM_IP_CONFIG_SOURCE_RDISC:
+		return RTPROT_RA;
+
+	default:
+		return RTPROT_STATIC;
+	}
+}
+
+NMIPConfigSource
+nmp_utils_ip_config_source_from_rtprot (guint rtprot)
+{
+	switch (rtprot) {
+	case RTPROT_UNSPEC:
+		return NM_IP_CONFIG_SOURCE_UNKNOWN;
+	case RTPROT_KERNEL:
+		return NM_IP_CONFIG_SOURCE_RTPROT_KERNEL;
+	case RTPROT_REDIRECT:
+		return NM_IP_CONFIG_SOURCE_KERNEL;
+	case RTPROT_RA:
+		return NM_IP_CONFIG_SOURCE_RDISC;
+	case RTPROT_DHCP:
+		return NM_IP_CONFIG_SOURCE_DHCP;
+
+	default:
+		return NM_IP_CONFIG_SOURCE_USER;
+	}
+}
+
diff --git a/src/platform/nm-platform-utils.h b/src/platform/nm-platform-utils.h
index 976bd8db..f2594747 100644
--- a/src/platform/nm-platform-utils.h
+++ b/src/platform/nm-platform-utils.h
@@ -54,4 +54,7 @@ const char *nmp_utils_udev_get_driver (GUdevDevice *device);
 
 gboolean nmp_utils_device_exists (const char *name);
 
+guint            nmp_utils_ip_config_source_to_rtprot   (NMIPConfigSource source);
+NMIPConfigSource nmp_utils_ip_config_source_from_rtprot (guint rtprot);
+
 #endif /* __NM_PLATFORM_UTILS_H__ */
diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c
index 5a399b31..69b0d420 100644
--- a/src/platform/nm-platform.c
+++ b/src/platform/nm-platform.c
@@ -2459,8 +2459,10 @@ nm_platform_ethtool_get_link_speed (NMPlatform *self, const char *ifname, guint3
 /******************************************************************/
 
 void
-nm_platform_ip4_address_set_addr (NMPlatformIP4Address *addr, in_addr_t address, int plen)
+nm_platform_ip4_address_set_addr (NMPlatformIP4Address *addr, in_addr_t address, guint8 plen)
 {
+	nm_assert (plen <= 32);
+
 	addr->address = address;
 	addr->peer_address = address;
 	addr->plen = plen;
@@ -2499,7 +2501,7 @@ gboolean
 nm_platform_ip4_address_add (NMPlatform *self,
                              int ifindex,
                              in_addr_t address,
-                             int plen,
+                             guint8 plen,
                              in_addr_t peer_address,
                              guint32 lifetime,
                              guint32 preferred,
@@ -2509,7 +2511,7 @@ nm_platform_ip4_address_add (NMPlatform *self,
 	_CHECK_SELF (self, klass, FALSE);
 
 	g_return_val_if_fail (ifindex > 0, FALSE);
-	g_return_val_if_fail (plen > 0, FALSE);
+	g_return_val_if_fail (plen <= 32, FALSE);
 	g_return_val_if_fail (lifetime > 0, FALSE);
 	g_return_val_if_fail (preferred <= lifetime, FALSE);
 	g_return_val_if_fail (!label || strlen (label) < sizeof (((NMPlatformIP4Address *) NULL)->label), FALSE);
@@ -2537,7 +2539,7 @@ gboolean
 nm_platform_ip6_address_add (NMPlatform *self,
                              int ifindex,
                              struct in6_addr address,
-                             int plen,
+                             guint8 plen,
                              struct in6_addr peer_address,
                              guint32 lifetime,
                              guint32 preferred,
@@ -2546,7 +2548,7 @@ nm_platform_ip6_address_add (NMPlatform *self,
 	_CHECK_SELF (self, klass, FALSE);
 
 	g_return_val_if_fail (ifindex > 0, FALSE);
-	g_return_val_if_fail (plen > 0, FALSE);
+	g_return_val_if_fail (plen <= 128, FALSE);
 	g_return_val_if_fail (lifetime > 0, FALSE);
 	g_return_val_if_fail (preferred <= lifetime, FALSE);
 
@@ -2568,7 +2570,7 @@ nm_platform_ip6_address_add (NMPlatform *self,
 }
 
 gboolean
-nm_platform_ip4_address_delete (NMPlatform *self, int ifindex, in_addr_t address, int plen, in_addr_t peer_address)
+nm_platform_ip4_address_delete (NMPlatform *self, int ifindex, in_addr_t address, guint8 plen, in_addr_t peer_address)
 {
 	char str_dev[TO_STRING_DEV_BUF_SIZE];
 	char str_peer2[NM_UTILS_INET_ADDRSTRLEN];
@@ -2577,7 +2579,7 @@ nm_platform_ip4_address_delete (NMPlatform *self, int ifindex, in_addr_t address
 	_CHECK_SELF (self, klass, FALSE);
 
 	g_return_val_if_fail (ifindex > 0, FALSE);
-	g_return_val_if_fail (plen > 0, FALSE);
+	g_return_val_if_fail (plen <= 32, FALSE);
 
 	_LOGD ("address: deleting IPv4 address %s/%d, %sifindex %d%s",
 	       nm_utils_inet4_ntop (address, NULL), plen,
@@ -2589,14 +2591,14 @@ nm_platform_ip4_address_delete (NMPlatform *self, int ifindex, in_addr_t address
 }
 
 gboolean
-nm_platform_ip6_address_delete (NMPlatform *self, int ifindex, struct in6_addr address, int plen)
+nm_platform_ip6_address_delete (NMPlatform *self, int ifindex, struct in6_addr address, guint8 plen)
 {
 	char str_dev[TO_STRING_DEV_BUF_SIZE];
 
 	_CHECK_SELF (self, klass, FALSE);
 
 	g_return_val_if_fail (ifindex > 0, FALSE);
-	g_return_val_if_fail (plen > 0, FALSE);
+	g_return_val_if_fail (plen <= 128, FALSE);
 
 	_LOGD ("address: deleting IPv6 address %s/%d, ifindex %d%s",
 	       nm_utils_inet6_ntop (&address, NULL), plen, ifindex,
@@ -2605,21 +2607,21 @@ nm_platform_ip6_address_delete (NMPlatform *self, int ifindex, struct in6_addr a
 }
 
 const NMPlatformIP4Address *
-nm_platform_ip4_address_get (NMPlatform *self, int ifindex, in_addr_t address, int plen, guint32 peer_address)
+nm_platform_ip4_address_get (NMPlatform *self, int ifindex, in_addr_t address, guint8 plen, guint32 peer_address)
 {
 	_CHECK_SELF (self, klass, NULL);
 
-	g_return_val_if_fail (plen > 0, NULL);
+	g_return_val_if_fail (plen <= 32, NULL);
 
 	return klass->ip4_address_get (self, ifindex, address, plen, peer_address);
 }
 
 const NMPlatformIP6Address *
-nm_platform_ip6_address_get (NMPlatform *self, int ifindex, struct in6_addr address, int plen)
+nm_platform_ip6_address_get (NMPlatform *self, int ifindex, struct in6_addr address, guint8 plen)
 {
 	_CHECK_SELF (self, klass, NULL);
 
-	g_return_val_if_fail (plen > 0, NULL);
+	g_return_val_if_fail (plen <= 128, NULL);
 
 	return klass->ip6_address_get (self, ifindex, address, plen);
 }
@@ -2854,13 +2856,13 @@ nm_platform_ip6_route_get_all (NMPlatform *self, int ifindex, NMPlatformGetRoute
 gboolean
 nm_platform_ip4_route_add (NMPlatform *self,
                            int ifindex, NMIPConfigSource source,
-                           in_addr_t network, int plen,
+                           in_addr_t network, guint8 plen,
                            in_addr_t gateway, in_addr_t pref_src,
                            guint32 metric, guint32 mss)
 {
 	_CHECK_SELF (self, klass, FALSE);
 
-	g_return_val_if_fail (0 <= plen && plen <= 32, FALSE);
+	g_return_val_if_fail (plen <= 32, FALSE);
 
 	if (_LOGD_ENABLED ()) {
 		NMPlatformIP4Route route = { 0 };
@@ -2882,12 +2884,12 @@ nm_platform_ip4_route_add (NMPlatform *self,
 gboolean
 nm_platform_ip6_route_add (NMPlatform *self,
                            int ifindex, NMIPConfigSource source,
-                           struct in6_addr network, int plen, struct in6_addr gateway,
+                           struct in6_addr network, guint8 plen, struct in6_addr gateway,
                            guint32 metric, guint32 mss)
 {
 	_CHECK_SELF (self, klass, FALSE);
 
-	g_return_val_if_fail (0 <= plen && plen <= 128, FALSE);
+	g_return_val_if_fail (plen <= 128, FALSE);
 
 	if (_LOGD_ENABLED ()) {
 		NMPlatformIP6Route route = { 0 };
@@ -2906,7 +2908,7 @@ nm_platform_ip6_route_add (NMPlatform *self,
 }
 
 gboolean
-nm_platform_ip4_route_delete (NMPlatform *self, int ifindex, in_addr_t network, int plen, guint32 metric)
+nm_platform_ip4_route_delete (NMPlatform *self, int ifindex, in_addr_t network, guint8 plen, guint32 metric)
 {
 	char str_dev[TO_STRING_DEV_BUF_SIZE];
 
@@ -2919,7 +2921,7 @@ nm_platform_ip4_route_delete (NMPlatform *self, int ifindex, in_addr_t network,
 }
 
 gboolean
-nm_platform_ip6_route_delete (NMPlatform *self, int ifindex, struct in6_addr network, int plen, guint32 metric)
+nm_platform_ip6_route_delete (NMPlatform *self, int ifindex, struct in6_addr network, guint8 plen, guint32 metric)
 {
 	char str_dev[TO_STRING_DEV_BUF_SIZE];
 
@@ -2932,7 +2934,7 @@ nm_platform_ip6_route_delete (NMPlatform *self, int ifindex, struct in6_addr net
 }
 
 const NMPlatformIP4Route *
-nm_platform_ip4_route_get (NMPlatform *self, int ifindex, in_addr_t network, int plen, guint32 metric)
+nm_platform_ip4_route_get (NMPlatform *self, int ifindex, in_addr_t network, guint8 plen, guint32 metric)
 {
 	_CHECK_SELF (self, klass, FALSE);
 
@@ -2940,7 +2942,7 @@ nm_platform_ip4_route_get (NMPlatform *self, int ifindex, in_addr_t network, int
 }
 
 const NMPlatformIP6Route *
-nm_platform_ip6_route_get (NMPlatform *self, int ifindex, struct in6_addr network, int plen, guint32 metric)
+nm_platform_ip6_route_get (NMPlatform *self, int ifindex, struct in6_addr network, guint8 plen, guint32 metric)
 {
 	_CHECK_SELF (self, klass, FALSE);
 
@@ -3631,7 +3633,8 @@ nm_platform_ip4_route_to_string (const NMPlatformIP4Route *route, char *buf, gsi
 	            "%s%s" /* scope */
 	            "%s%s" /* pref-src */
 	            "",
-	            s_network, route->plen,
+	            s_network,
+	            route->plen,
 	            s_gateway,
 	            str_dev,
 	            route->metric,
@@ -3678,7 +3681,8 @@ nm_platform_ip6_route_to_string (const NMPlatformIP6Route *route, char *buf, gsi
 	            " mss %"G_GUINT32_FORMAT
 	            " src %s" /* source */
 	            "",
-	            s_network, route->plen,
+	            s_network,
+	            route->plen,
 	            s_gateway,
 	            str_dev,
 	            route->metric,
@@ -4257,7 +4261,7 @@ nm_platform_class_init (NMPlatformClass *platform_class)
 	g_object_class_install_property
 	 (object_class, PROP_NETNS_SUPPORT,
 	     g_param_spec_boolean (NM_PLATFORM_NETNS_SUPPORT, "", "",
-	                           FALSE,
+	                           NM_PLATFORM_NETNS_SUPPORT_DEFAULT,
 	                           G_PARAM_WRITABLE |
 	                           G_PARAM_CONSTRUCT_ONLY |
 	                           G_PARAM_STATIC_STRINGS));
diff --git a/src/platform/nm-platform.h b/src/platform/nm-platform.h
index 15bd2fde..9f055b04 100644
--- a/src/platform/nm-platform.h
+++ b/src/platform/nm-platform.h
@@ -40,6 +40,8 @@
 #define NM_IS_PLATFORM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_PLATFORM))
 #define NM_PLATFORM_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_PLATFORM, NMPlatformClass))
 
+#define NM_PLATFORM_NETNS_SUPPORT_DEFAULT    FALSE
+
 /******************************************************************/
 
 #define NM_PLATFORM_NETNS_SUPPORT      "netns-support"
@@ -226,7 +228,7 @@ typedef struct {
 	 * IFA_FLAGS attribute. */ \
 	guint32 n_ifa_flags; \
 	\
-	int plen; \
+	guint8 plen; \
 	;
 
 /**
@@ -302,7 +304,7 @@ typedef union {
 #define __NMPlatformIPRoute_COMMON \
 	__NMPlatformObject_COMMON; \
 	NMIPConfigSource source; \
-	int plen; \
+	guint8 plen; \
 	guint32 metric; \
 	guint32 mss; \
 	;
@@ -593,7 +595,7 @@ typedef struct {
 	gboolean (*ip4_address_add) (NMPlatform *,
 	                             int ifindex,
 	                             in_addr_t address,
-	                             int plen,
+	                             guint8 plen,
 	                             in_addr_t peer_address,
 	                             guint32 lifetime,
 	                             guint32 preferred_lft,
@@ -602,28 +604,28 @@ typedef struct {
 	gboolean (*ip6_address_add) (NMPlatform *,
 	                             int ifindex,
 	                             struct in6_addr address,
-	                             int plen,
+	                             guint8 plen,
 	                             struct in6_addr peer_address,
 	                             guint32 lifetime,
 	                             guint32 preferred_lft,
 	                             guint32 flags);
-	gboolean (*ip4_address_delete) (NMPlatform *, int ifindex, in_addr_t address, int plen, in_addr_t peer_address);
-	gboolean (*ip6_address_delete) (NMPlatform *, int ifindex, struct in6_addr address, int plen);
-	const NMPlatformIP4Address *(*ip4_address_get) (NMPlatform *, int ifindex, in_addr_t address, int plen, in_addr_t peer_address);
-	const NMPlatformIP6Address *(*ip6_address_get) (NMPlatform *, int ifindex, struct in6_addr address, int plen);
+	gboolean (*ip4_address_delete) (NMPlatform *, int ifindex, in_addr_t address, guint8 plen, in_addr_t peer_address);
+	gboolean (*ip6_address_delete) (NMPlatform *, int ifindex, struct in6_addr address, guint8 plen);
+	const NMPlatformIP4Address *(*ip4_address_get) (NMPlatform *, int ifindex, in_addr_t address, guint8 plen, in_addr_t peer_address);
+	const NMPlatformIP6Address *(*ip6_address_get) (NMPlatform *, int ifindex, struct in6_addr address, guint8 plen);
 
 	GArray * (*ip4_route_get_all) (NMPlatform *, int ifindex, NMPlatformGetRouteFlags flags);
 	GArray * (*ip6_route_get_all) (NMPlatform *, int ifindex, NMPlatformGetRouteFlags flags);
 	gboolean (*ip4_route_add) (NMPlatform *, int ifindex, NMIPConfigSource source,
-	                           in_addr_t network, int plen, in_addr_t gateway,
+	                           in_addr_t network, guint8 plen, in_addr_t gateway,
 	                           in_addr_t pref_src, guint32 metric, guint32 mss);
 	gboolean (*ip6_route_add) (NMPlatform *, int ifindex, NMIPConfigSource source,
-	                           struct in6_addr network, int plen, struct in6_addr gateway,
+	                           struct in6_addr network, guint8 plen, struct in6_addr gateway,
 	                           guint32 metric, guint32 mss);
-	gboolean (*ip4_route_delete) (NMPlatform *, int ifindex, in_addr_t network, int plen, guint32 metric);
-	gboolean (*ip6_route_delete) (NMPlatform *, int ifindex, struct in6_addr network, int plen, guint32 metric);
-	const NMPlatformIP4Route *(*ip4_route_get) (NMPlatform *, int ifindex, in_addr_t network, int plen, guint32 metric);
-	const NMPlatformIP6Route *(*ip6_route_get) (NMPlatform *, int ifindex, struct in6_addr network, int plen, guint32 metric);
+	gboolean (*ip4_route_delete) (NMPlatform *, int ifindex, in_addr_t network, guint8 plen, guint32 metric);
+	gboolean (*ip6_route_delete) (NMPlatform *, int ifindex, struct in6_addr network, guint8 plen, guint32 metric);
+	const NMPlatformIP4Route *(*ip4_route_get) (NMPlatform *, int ifindex, in_addr_t network, guint8 plen, guint32 metric);
+	const NMPlatformIP6Route *(*ip6_route_get) (NMPlatform *, int ifindex, struct in6_addr network, guint8 plen, guint32 metric);
 
 	gboolean (*check_support_kernel_extended_ifa_flags) (NMPlatform *);
 	gboolean (*check_support_user_ipv6ll) (NMPlatform *);
@@ -835,10 +837,10 @@ guint32     nm_platform_mesh_get_channel      (NMPlatform *self, int ifindex);
 gboolean    nm_platform_mesh_set_channel      (NMPlatform *self, int ifindex, guint32 channel);
 gboolean    nm_platform_mesh_set_ssid         (NMPlatform *self, int ifindex, const guint8 *ssid, gsize len);
 
-void                   nm_platform_ip4_address_set_addr (NMPlatformIP4Address *addr, in_addr_t address, int plen);
+void                   nm_platform_ip4_address_set_addr (NMPlatformIP4Address *addr, in_addr_t address, guint8 plen);
 const struct in6_addr *nm_platform_ip6_address_get_peer (const NMPlatformIP6Address *addr);
 
-const NMPlatformIP4Address *nm_platform_ip4_address_get (NMPlatform *self, int ifindex, in_addr_t address, int plen, in_addr_t peer_address);
+const NMPlatformIP4Address *nm_platform_ip4_address_get (NMPlatform *self, int ifindex, in_addr_t address, guint8 plen, in_addr_t peer_address);
 
 NMPlatformError nm_platform_link_gre_add (NMPlatform *self,
                                           const char *name,
@@ -862,13 +864,13 @@ NMPlatformError nm_platform_link_sit_add (NMPlatform *self,
                                           const NMPlatformLnkSit *props,
                                           const NMPlatformLink **out_link);
 
-const NMPlatformIP6Address *nm_platform_ip6_address_get (NMPlatform *self, int ifindex, struct in6_addr address, int plen);
+const NMPlatformIP6Address *nm_platform_ip6_address_get (NMPlatform *self, int ifindex, struct in6_addr address, guint8 plen);
 GArray *nm_platform_ip4_address_get_all (NMPlatform *self, int ifindex);
 GArray *nm_platform_ip6_address_get_all (NMPlatform *self, int ifindex);
 gboolean nm_platform_ip4_address_add (NMPlatform *self,
                                       int ifindex,
                                       in_addr_t address,
-                                      int plen,
+                                      guint8 plen,
                                       in_addr_t peer_address,
                                       guint32 lifetime,
                                       guint32 preferred_lft,
@@ -877,29 +879,29 @@ gboolean nm_platform_ip4_address_add (NMPlatform *self,
 gboolean nm_platform_ip6_address_add (NMPlatform *self,
                                       int ifindex,
                                       struct in6_addr address,
-                                      int plen,
+                                      guint8 plen,
                                       struct in6_addr peer_address,
                                       guint32 lifetime,
                                       guint32 preferred_lft,
                                       guint32 flags);
-gboolean nm_platform_ip4_address_delete (NMPlatform *self, int ifindex, in_addr_t address, int plen, in_addr_t peer_address);
-gboolean nm_platform_ip6_address_delete (NMPlatform *self, int ifindex, struct in6_addr address, int plen);
+gboolean nm_platform_ip4_address_delete (NMPlatform *self, int ifindex, in_addr_t address, guint8 plen, in_addr_t peer_address);
+gboolean nm_platform_ip6_address_delete (NMPlatform *self, int ifindex, struct in6_addr address, guint8 plen);
 gboolean nm_platform_ip4_address_sync (NMPlatform *self, int ifindex, const GArray *known_addresses, GPtrArray **out_added_addresses);
 gboolean nm_platform_ip6_address_sync (NMPlatform *self, int ifindex, const GArray *known_addresses, gboolean keep_link_local);
 gboolean nm_platform_address_flush (NMPlatform *self, int ifindex);
 
-const NMPlatformIP4Route *nm_platform_ip4_route_get (NMPlatform *self, int ifindex, in_addr_t network, int plen, guint32 metric);
-const NMPlatformIP6Route *nm_platform_ip6_route_get (NMPlatform *self, int ifindex, struct in6_addr network, int plen, guint32 metric);
+const NMPlatformIP4Route *nm_platform_ip4_route_get (NMPlatform *self, int ifindex, in_addr_t network, guint8 plen, guint32 metric);
+const NMPlatformIP6Route *nm_platform_ip6_route_get (NMPlatform *self, int ifindex, struct in6_addr network, guint8 plen, guint32 metric);
 GArray *nm_platform_ip4_route_get_all (NMPlatform *self, int ifindex, NMPlatformGetRouteFlags flags);
 GArray *nm_platform_ip6_route_get_all (NMPlatform *self, int ifindex, NMPlatformGetRouteFlags flags);
 gboolean nm_platform_ip4_route_add (NMPlatform *self, int ifindex, NMIPConfigSource source,
-                                    in_addr_t network, int plen, in_addr_t gateway,
+                                    in_addr_t network, guint8 plen, in_addr_t gateway,
                                     in_addr_t pref_src, guint32 metric, guint32 mss);
 gboolean nm_platform_ip6_route_add (NMPlatform *self, int ifindex, NMIPConfigSource source,
-                                    struct in6_addr network, int plen, struct in6_addr gateway,
+                                    struct in6_addr network, guint8 plen, struct in6_addr gateway,
                                     guint32 metric, guint32 mss);
-gboolean nm_platform_ip4_route_delete (NMPlatform *self, int ifindex, in_addr_t network, int plen, guint32 metric);
-gboolean nm_platform_ip6_route_delete (NMPlatform *self, int ifindex, struct in6_addr network, int plen, guint32 metric);
+gboolean nm_platform_ip4_route_delete (NMPlatform *self, int ifindex, in_addr_t network, guint8 plen, guint32 metric);
+gboolean nm_platform_ip6_route_delete (NMPlatform *self, int ifindex, struct in6_addr network, guint8 plen, guint32 metric);
 
 const char *nm_platform_link_to_string (const NMPlatformLink *link, char *buf, gsize len);
 const char *nm_platform_lnk_gre_to_string (const NMPlatformLnkGre *lnk, char *buf, gsize len);
diff --git a/src/platform/nmp-object.c b/src/platform/nmp-object.c
index adeb3aab..eb7e1ca4 100644
--- a/src/platform/nmp-object.c
+++ b/src/platform/nmp-object.c
@@ -343,7 +343,7 @@ _vt_cmd_obj_stackinit_id_link (NMPObject *obj, const NMPObject *src)
 }
 
 const NMPObject *
-nmp_object_stackinit_id_ip4_address (NMPObject *obj, int ifindex, guint32 address, int plen, guint32 peer_address)
+nmp_object_stackinit_id_ip4_address (NMPObject *obj, int ifindex, guint32 address, guint8 plen, guint32 peer_address)
 {
 	nmp_object_stackinit (obj, NMP_OBJECT_TYPE_IP4_ADDRESS, NULL);
 	obj->ip4_address.ifindex = ifindex;
@@ -360,7 +360,7 @@ _vt_cmd_obj_stackinit_id_ip4_address (NMPObject *obj, const NMPObject *src)
 }
 
 const NMPObject *
-nmp_object_stackinit_id_ip6_address (NMPObject *obj, int ifindex, const struct in6_addr *address, int plen)
+nmp_object_stackinit_id_ip6_address (NMPObject *obj, int ifindex, const struct in6_addr *address, guint8 plen)
 {
 	nmp_object_stackinit (obj, NMP_OBJECT_TYPE_IP6_ADDRESS, NULL);
 	obj->ip4_address.ifindex = ifindex;
@@ -377,7 +377,7 @@ _vt_cmd_obj_stackinit_id_ip6_address (NMPObject *obj, const NMPObject *src)
 }
 
 const NMPObject *
-nmp_object_stackinit_id_ip4_route (NMPObject *obj, int ifindex, guint32 network, int plen, guint32 metric)
+nmp_object_stackinit_id_ip4_route (NMPObject *obj, int ifindex, guint32 network, guint8 plen, guint32 metric)
 {
 	nmp_object_stackinit (obj, NMP_OBJECT_TYPE_IP4_ROUTE, NULL);
 	obj->ip4_route.ifindex = ifindex;
@@ -394,7 +394,7 @@ _vt_cmd_obj_stackinit_id_ip4_route (NMPObject *obj, const NMPObject *src)
 }
 
 const NMPObject *
-nmp_object_stackinit_id_ip6_route (NMPObject *obj, int ifindex, const struct in6_addr *network, int plen, guint32 metric)
+nmp_object_stackinit_id_ip6_route (NMPObject *obj, int ifindex, const struct in6_addr *network, guint8 plen, guint32 metric)
 {
 	nmp_object_stackinit (obj, NMP_OBJECT_TYPE_IP6_ROUTE, NULL);
 	obj->ip6_route.ifindex = ifindex;
@@ -952,26 +952,46 @@ _vt_cmd_obj_is_visible_link (const NMPObject *obj)
 
 /******************************************************************/
 
+#define _STRUCT_SIZE(struct_type, field) \
+	(G_STRUCT_OFFSET (struct_type, field) + sizeof (((struct_type *) NULL)->field))
+
+_NM_UTILS_LOOKUP_DEFINE (static, _nmp_cache_id_size_by_type, NMPCacheIdType, guint,
+	NM_UTILS_LOOKUP_DEFAULT (({ nm_assert_not_reached (); sizeof (NMPCacheId); })),
+	NM_UTILS_LOOKUP_ITEM (NMP_CACHE_ID_TYPE_OBJECT_TYPE,                            _STRUCT_SIZE (NMPCacheId, object_type)),
+	NM_UTILS_LOOKUP_ITEM (NMP_CACHE_ID_TYPE_OBJECT_TYPE_VISIBLE_ONLY,               _STRUCT_SIZE (NMPCacheId, object_type)),
+	NM_UTILS_LOOKUP_ITEM (NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_NO_DEFAULT,              _STRUCT_SIZE (NMPCacheId, object_type)),
+	NM_UTILS_LOOKUP_ITEM (NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_ONLY_DEFAULT,            _STRUCT_SIZE (NMPCacheId, object_type)),
+	NM_UTILS_LOOKUP_ITEM (NMP_CACHE_ID_TYPE_ADDRROUTE_VISIBLE_BY_IFINDEX,           _STRUCT_SIZE (NMPCacheId, object_type_by_ifindex)),
+	NM_UTILS_LOOKUP_ITEM (NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_BY_IFINDEX_NO_DEFAULT,   _STRUCT_SIZE (NMPCacheId, object_type_by_ifindex)),
+	NM_UTILS_LOOKUP_ITEM (NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_BY_IFINDEX_ONLY_DEFAULT, _STRUCT_SIZE (NMPCacheId, object_type_by_ifindex)),
+	NM_UTILS_LOOKUP_ITEM (NMP_CACHE_ID_TYPE_LINK_BY_IFNAME,                         _STRUCT_SIZE (NMPCacheId, link_by_ifname)),
+	NM_UTILS_LOOKUP_ITEM (NMP_CACHE_ID_TYPE_ROUTES_BY_DESTINATION_IP4,              _STRUCT_SIZE (NMPCacheId, routes_by_destination_ip4)),
+	NM_UTILS_LOOKUP_ITEM (NMP_CACHE_ID_TYPE_ROUTES_BY_DESTINATION_IP6,              _STRUCT_SIZE (NMPCacheId, routes_by_destination_ip6)),
+	NM_UTILS_LOOKUP_ITEM_IGNORE (NMP_CACHE_ID_TYPE_NONE),
+	NM_UTILS_LOOKUP_ITEM_IGNORE (__NMP_CACHE_ID_TYPE_MAX),
+);
+
 gboolean
 nmp_cache_id_equal (const NMPCacheId *a, const NMPCacheId *b)
 {
-	/* just memcmp() the entire id. This is potentially dangerous, because
-	 * the struct is not __attribute__((packed)) and not all types have the
-	 * same size. It is important, to memset() the entire struct to 0,
-	 * not only the relevant fields.
-	 *
-	 * You anyway should use the nmp_cache_id_init_*() functions on a stack-allocated
-	 * struct. */
-	return memcmp (a, b, sizeof (NMPCacheId)) == 0;
+	if (a->_id_type != b->_id_type)
+		return FALSE;
+	return memcmp (a, b, _nmp_cache_id_size_by_type (a->_id_type)) == 0;
 }
 
 guint
 nmp_cache_id_hash (const NMPCacheId *id)
 {
 	guint hash = 5381;
-	guint i;
+	guint i, n;
 
-	for (i = 0; i < sizeof (NMPCacheId); i++)
+	/* for hashing we only iterate over the actually set bytes and skip the
+	 * zero padding at the end (which depends on the type of the id).
+	 *
+	 * For the equal implementation, we don't care about that and compare the
+	 * entire NMPCacheId sized struct. */
+	n = _nmp_cache_id_size_by_type (id->_id_type);
+	for (i = 0; i < n; i++)
 		hash = ((hash << 5) + hash) + ((char *) id)[i]; /* hash * 33 + c */
 	return hash;
 }
@@ -980,27 +1000,42 @@ NMPCacheId *
 nmp_cache_id_clone (const NMPCacheId *id)
 {
 	NMPCacheId *id2;
+	guint n;
 
-	id2 = g_slice_new (NMPCacheId);
-	memcpy (id2, id, sizeof (NMPCacheId));
+	n = _nmp_cache_id_size_by_type (id->_id_type);
+	id2 = g_slice_alloc (n);
+	memcpy (id2, id, n);
 	return id2;
 }
 
 void
 nmp_cache_id_destroy (NMPCacheId *id)
 {
-	g_slice_free (NMPCacheId, id);
+	guint n;
+
+	n = _nmp_cache_id_size_by_type (id->_id_type);
+	g_slice_free1 (n, id);
 }
 
 /******************************************************************/
 
 NMPCacheId _nmp_cache_id_static;
 
-static NMPCacheId *
+static void
 _nmp_cache_id_init (NMPCacheId *id, NMPCacheIdType id_type)
 {
 	memset (id, 0, sizeof (NMPCacheId));
 	id->_id_type = id_type;
+}
+
+NMPCacheId *
+nmp_cache_id_copy (NMPCacheId *id, const NMPCacheId *src)
+{
+	guint n;
+
+	memset (id, 0, sizeof (NMPCacheId));
+	n = _nmp_cache_id_size_by_type (src->_id_type);
+	memcpy (id, src, n);
 	return id;
 }
 
@@ -1028,7 +1063,7 @@ nmp_cache_id_init_addrroute_visible_by_ifindex (NMPCacheId *id,
 
 	_nmp_cache_id_init (id, NMP_CACHE_ID_TYPE_ADDRROUTE_VISIBLE_BY_IFINDEX);
 	id->object_type_by_ifindex.obj_type = obj_type;
-	id->object_type_by_ifindex.ifindex = ifindex;
+	memcpy (&id->object_type_by_ifindex._misaligned_ifindex, &ifindex, sizeof (int));
 	return id;
 }
 
@@ -1055,7 +1090,7 @@ nmp_cache_id_init_routes_visible (NMPCacheId *id,
 		g_return_val_if_reached (NULL);
 
 	id->object_type_by_ifindex.obj_type = obj_type;
-	id->object_type_by_ifindex.ifindex = ifindex;
+	memcpy (&id->object_type_by_ifindex._misaligned_ifindex, &ifindex, sizeof (int));
 	return id;
 }
 
@@ -1077,6 +1112,33 @@ nmp_cache_id_init_link_by_ifname (NMPCacheId *id,
 	return id;
 }
 
+NMPCacheId *
+nmp_cache_id_init_routes_by_destination_ip4 (NMPCacheId *id,
+                                             guint32 network,
+                                             guint8 plen,
+                                             guint32 metric)
+{
+	_nmp_cache_id_init (id, NMP_CACHE_ID_TYPE_ROUTES_BY_DESTINATION_IP4);
+	id->routes_by_destination_ip4.plen = plen;
+	memcpy (&id->routes_by_destination_ip4._misaligned_metric,  &metric, sizeof (guint32));
+	memcpy (&id->routes_by_destination_ip4._misaligned_network, &network, sizeof (guint32));
+	return id;
+}
+
+NMPCacheId *
+nmp_cache_id_init_routes_by_destination_ip6 (NMPCacheId *id,
+                                             const struct in6_addr *network,
+                                             guint8 plen,
+                                             guint32 metric)
+{
+	_nmp_cache_id_init (id, NMP_CACHE_ID_TYPE_ROUTES_BY_DESTINATION_IP6);
+	id->routes_by_destination_ip4.plen = plen;
+	memcpy (&id->routes_by_destination_ip6._misaligned_metric,  &metric, sizeof (guint32));
+	if (network)
+		memcpy (&id->routes_by_destination_ip6._misaligned_network, network, sizeof (struct in6_addr));
+	return id;
+}
+
 /******************************************************************/
 
 static gboolean
@@ -1100,6 +1162,13 @@ _nmp_object_init_cache_id (const NMPObject *obj, NMPCacheIdType id_type, NMPCach
 	}
 }
 
+static const guint8 _supported_cache_ids_link[] = {
+	NMP_CACHE_ID_TYPE_OBJECT_TYPE,
+	NMP_CACHE_ID_TYPE_OBJECT_TYPE_VISIBLE_ONLY,
+	NMP_CACHE_ID_TYPE_LINK_BY_IFNAME,
+	0,
+};
+
 static gboolean
 _vt_cmd_obj_init_cache_id_link (const NMPObject *obj, NMPCacheIdType id_type, NMPCacheId *id, const NMPCacheId **out_id)
 {
@@ -1117,6 +1186,13 @@ _vt_cmd_obj_init_cache_id_link (const NMPObject *obj, NMPCacheIdType id_type, NM
 	return TRUE;
 }
 
+static const guint8 _supported_cache_ids_ipx_address[] = {
+	NMP_CACHE_ID_TYPE_OBJECT_TYPE,
+	NMP_CACHE_ID_TYPE_OBJECT_TYPE_VISIBLE_ONLY,
+	NMP_CACHE_ID_TYPE_ADDRROUTE_VISIBLE_BY_IFINDEX,
+	0,
+};
+
 static gboolean
 _vt_cmd_obj_init_cache_id_ipx_address (const NMPObject *obj, NMPCacheIdType id_type, NMPCacheId *id, const NMPCacheId **out_id)
 {
@@ -1135,6 +1211,30 @@ _vt_cmd_obj_init_cache_id_ipx_address (const NMPObject *obj, NMPCacheIdType id_t
 	return TRUE;
 }
 
+static const guint8 _supported_cache_ids_ip4_route[] = {
+	NMP_CACHE_ID_TYPE_OBJECT_TYPE,
+	NMP_CACHE_ID_TYPE_OBJECT_TYPE_VISIBLE_ONLY,
+	NMP_CACHE_ID_TYPE_ADDRROUTE_VISIBLE_BY_IFINDEX,
+	NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_NO_DEFAULT,
+	NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_ONLY_DEFAULT,
+	NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_BY_IFINDEX_NO_DEFAULT,
+	NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_BY_IFINDEX_ONLY_DEFAULT,
+	NMP_CACHE_ID_TYPE_ROUTES_BY_DESTINATION_IP4,
+	0,
+};
+
+static const guint8 _supported_cache_ids_ip6_route[] = {
+	NMP_CACHE_ID_TYPE_OBJECT_TYPE,
+	NMP_CACHE_ID_TYPE_OBJECT_TYPE_VISIBLE_ONLY,
+	NMP_CACHE_ID_TYPE_ADDRROUTE_VISIBLE_BY_IFINDEX,
+	NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_NO_DEFAULT,
+	NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_ONLY_DEFAULT,
+	NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_BY_IFINDEX_NO_DEFAULT,
+	NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_BY_IFINDEX_ONLY_DEFAULT,
+	NMP_CACHE_ID_TYPE_ROUTES_BY_DESTINATION_IP6,
+	0,
+};
+
 static gboolean
 _vt_cmd_obj_init_cache_id_ipx_route (const NMPObject *obj, NMPCacheIdType id_type, NMPCacheId *id, const NMPCacheId **out_id)
 {
@@ -1178,6 +1278,18 @@ _vt_cmd_obj_init_cache_id_ipx_route (const NMPObject *obj, NMPCacheIdType id_typ
 			return TRUE;
 		}
 		break;
+	case NMP_CACHE_ID_TYPE_ROUTES_BY_DESTINATION_IP4:
+		if (NMP_OBJECT_GET_CLASS (obj)->obj_type == NMP_OBJECT_TYPE_IP4_ROUTE) {
+			*out_id = nmp_cache_id_init_routes_by_destination_ip4 (id, obj->ip4_route.network, obj->ip_route.plen, obj->ip_route.metric);
+			return TRUE;
+		}
+		return FALSE;
+	case NMP_CACHE_ID_TYPE_ROUTES_BY_DESTINATION_IP6:
+		if (NMP_OBJECT_GET_CLASS (obj)->obj_type == NMP_OBJECT_TYPE_IP6_ROUTE) {
+			*out_id = nmp_cache_id_init_routes_by_destination_ip6 (id, &obj->ip6_route.network, obj->ip_route.plen, obj->ip_route.metric);
+			return TRUE;
+		}
+		return FALSE;
 	default:
 		return FALSE;
 	}
@@ -1346,6 +1458,51 @@ nmp_cache_lookup_link (const NMPCache *cache, int ifindex)
 	return nmp_cache_lookup_obj (cache, nmp_object_stackinit_id_link (&obj_needle, ifindex));
 }
 
+/**
+ * nmp_cache_find_other_route_for_same_destination:
+ * @cache:
+ * @route:
+ *
+ * Look into the cache whether there is a route to the same destination,
+ * in terms of network/plen,metric.
+ *
+ * Returns: (transfer none): the first found route object from the cache
+ *   that has the same (network/plen,metric) values as @route, but has different
+ *   ID. Or %NULL, if no such route exists.
+ */
+const NMPObject *
+nmp_cache_find_other_route_for_same_destination (const NMPCache *cache, const NMPObject *route)
+{
+	NMPCacheId cache_id;
+	const NMPlatformObject *const *list;
+
+	nm_assert (cache);
+
+	switch (NMP_OBJECT_GET_TYPE (route)) {
+	case NMP_OBJECT_TYPE_IP4_ROUTE:
+		nmp_cache_id_init_routes_by_destination_ip4 (&cache_id, route->ip4_route.network, route->ip_route.plen, route->ip_route.metric);
+		break;
+	case NMP_OBJECT_TYPE_IP6_ROUTE:
+		nmp_cache_id_init_routes_by_destination_ip6 (&cache_id, &route->ip6_route.network, route->ip_route.plen, route->ip_route.metric);
+		break;
+	default:
+		g_return_val_if_reached (NULL);
+	}
+
+	list = nmp_cache_lookup_multi (cache, &cache_id, NULL);
+	if (list) {
+		for (; *list; list++) {
+			const NMPObject *candidate = NMP_OBJECT_UP_CAST (*list);
+
+			nm_assert (NMP_OBJECT_GET_CLASS (route) == NMP_OBJECT_GET_CLASS (candidate));
+
+			if (!nmp_object_id_equal (route, candidate))
+				return candidate;
+		}
+	}
+	return NULL;
+}
+
 const NMPObject *
 nmp_cache_lookup_link_full (const NMPCache *cache,
                             int ifindex,
@@ -1425,13 +1582,13 @@ nmp_cache_lookup_all_to_hash (const NMPCache *cache,
 static void
 _nmp_cache_update_cache (NMPCache *cache, NMPObject *obj, gboolean remove)
 {
-	NMPCacheIdType id_type;
+	const guint8 *id_type;
 
-	for (id_type = 0; id_type <= NMP_CACHE_ID_TYPE_MAX; id_type++) {
+	for (id_type = NMP_OBJECT_GET_CLASS (obj)->supported_cache_ids; *id_type; id_type++) {
 		NMPCacheId cache_id_storage;
 		const NMPCacheId *cache_id;
 
-		if (!_nmp_object_init_cache_id (obj, id_type, &cache_id_storage, &cache_id))
+		if (!_nmp_object_init_cache_id (obj, *id_type, &cache_id_storage, &cache_id))
 			continue;
 		if (!cache_id)
 			continue;
@@ -1480,19 +1637,19 @@ _nmp_cache_update_remove (NMPCache *cache, NMPObject *obj)
 static void
 _nmp_cache_update_update (NMPCache *cache, NMPObject *obj, const NMPObject *new)
 {
-	NMPCacheIdType id_type;
+	const guint8 *id_type;
 
 	nm_assert (NMP_OBJECT_GET_CLASS (obj) == NMP_OBJECT_GET_CLASS (new));
 	nm_assert (obj->is_cached);
 	nm_assert (!new->is_cached);
 
-	for (id_type = 0; id_type <= NMP_CACHE_ID_TYPE_MAX; id_type++) {
+	for (id_type = NMP_OBJECT_GET_CLASS (obj)->supported_cache_ids; *id_type; id_type++) {
 		NMPCacheId cache_id_storage_obj, cache_id_storage_new;
 		const NMPCacheId *cache_id_obj, *cache_id_new;
 
-		if (!_nmp_object_init_cache_id (obj, id_type, &cache_id_storage_obj, &cache_id_obj))
+		if (!_nmp_object_init_cache_id (obj, *id_type, &cache_id_storage_obj, &cache_id_obj))
 			continue;
-		if (!_nmp_object_init_cache_id (new, id_type, &cache_id_storage_new, &cache_id_new))
+		if (!_nmp_object_init_cache_id (new, *id_type, &cache_id_storage_new, &cache_id_new))
 			g_assert_not_reached ();
 		if (!nm_multi_index_move (cache->idx_multi, (NMMultiIndexId *) cache_id_obj, (NMMultiIndexId *) cache_id_new, &obj->object))
 			g_assert_not_reached ();
@@ -1891,13 +2048,13 @@ ASSERT_nmp_cache_is_consistent (const NMPCache *cache)
 
 	g_hash_table_iter_init (&iter_hash, cache->idx_main);
 	while (g_hash_table_iter_next (&iter_hash, (gpointer *) &obj, NULL)) {
-		NMPCacheIdType id_type;
+		const guint8 *id_type;
 
 		g_assert (NMP_OBJECT_IS_VALID (obj));
 		g_assert (nmp_object_is_alive (obj));
 
-		for (id_type = 0; id_type <= NMP_CACHE_ID_TYPE_MAX; id_type++) {
-			if (!_nmp_object_init_cache_id (obj, id_type, &cache_id_storage, &cache_id))
+		for (id_type = NMP_OBJECT_GET_CLASS (obj)->supported_cache_ids; *id_type; id_type++) {
+			if (!_nmp_object_init_cache_id (obj, *id_type, &cache_id_storage, &cache_id))
 				continue;
 			if (!cache_id)
 				continue;
@@ -1943,6 +2100,7 @@ const NMPClass _nmp_classes[NMP_OBJECT_TYPE_MAX] = {
 		.rtm_gettype                        = RTM_GETLINK,
 		.signal_type_id                     = NM_PLATFORM_SIGNAL_ID_LINK,
 		.signal_type                        = NM_PLATFORM_SIGNAL_LINK_CHANGED,
+		.supported_cache_ids                = _supported_cache_ids_link,
 		.cmd_obj_init_cache_id              = _vt_cmd_obj_init_cache_id_link,
 		.cmd_obj_cmp                        = _vt_cmd_obj_cmp_link,
 		.cmd_obj_copy                       = _vt_cmd_obj_copy_link,
@@ -1967,6 +2125,7 @@ const NMPClass _nmp_classes[NMP_OBJECT_TYPE_MAX] = {
 		.rtm_gettype                        = RTM_GETADDR,
 		.signal_type_id                     = NM_PLATFORM_SIGNAL_ID_IP4_ADDRESS,
 		.signal_type                        = NM_PLATFORM_SIGNAL_IP4_ADDRESS_CHANGED,
+		.supported_cache_ids                = _supported_cache_ids_ipx_address,
 		.cmd_obj_init_cache_id              = _vt_cmd_obj_init_cache_id_ipx_address,
 		.cmd_obj_stackinit_id               = _vt_cmd_obj_stackinit_id_ip4_address,
 		.cmd_obj_is_alive                   = _vt_cmd_obj_is_alive_ipx_address,
@@ -1986,6 +2145,7 @@ const NMPClass _nmp_classes[NMP_OBJECT_TYPE_MAX] = {
 		.rtm_gettype                        = RTM_GETADDR,
 		.signal_type_id                     = NM_PLATFORM_SIGNAL_ID_IP6_ADDRESS,
 		.signal_type                        = NM_PLATFORM_SIGNAL_IP6_ADDRESS_CHANGED,
+		.supported_cache_ids                = _supported_cache_ids_ipx_address,
 		.cmd_obj_init_cache_id              = _vt_cmd_obj_init_cache_id_ipx_address,
 		.cmd_obj_stackinit_id               = _vt_cmd_obj_stackinit_id_ip6_address,
 		.cmd_obj_is_alive                   = _vt_cmd_obj_is_alive_ipx_address,
@@ -2005,6 +2165,7 @@ const NMPClass _nmp_classes[NMP_OBJECT_TYPE_MAX] = {
 		.rtm_gettype                        = RTM_GETROUTE,
 		.signal_type_id                     = NM_PLATFORM_SIGNAL_ID_IP4_ROUTE,
 		.signal_type                        = NM_PLATFORM_SIGNAL_IP4_ROUTE_CHANGED,
+		.supported_cache_ids                = _supported_cache_ids_ip4_route,
 		.cmd_obj_init_cache_id              = _vt_cmd_obj_init_cache_id_ipx_route,
 		.cmd_obj_stackinit_id               = _vt_cmd_obj_stackinit_id_ip4_route,
 		.cmd_obj_is_alive                   = _vt_cmd_obj_is_alive_ipx_route,
@@ -2024,6 +2185,7 @@ const NMPClass _nmp_classes[NMP_OBJECT_TYPE_MAX] = {
 		.rtm_gettype                        = RTM_GETROUTE,
 		.signal_type_id                     = NM_PLATFORM_SIGNAL_ID_IP6_ROUTE,
 		.signal_type                        = NM_PLATFORM_SIGNAL_IP6_ROUTE_CHANGED,
+		.supported_cache_ids                = _supported_cache_ids_ip6_route,
 		.cmd_obj_init_cache_id              = _vt_cmd_obj_init_cache_id_ipx_route,
 		.cmd_obj_stackinit_id               = _vt_cmd_obj_stackinit_id_ip6_route,
 		.cmd_obj_is_alive                   = _vt_cmd_obj_is_alive_ipx_route,
diff --git a/src/platform/nmp-object.h b/src/platform/nmp-object.h
index 6d5b9627..c5241037 100644
--- a/src/platform/nmp-object.h
+++ b/src/platform/nmp-object.h
@@ -57,6 +57,8 @@ typedef enum { /*< skip >*/
  * matching v4/v6 and ifindex -- or maybe not at all if it isn't visible.
  * */
 typedef enum { /*< skip >*/
+	NMP_CACHE_ID_TYPE_NONE,
+
 	/* all the objects of a certain type */
 	NMP_CACHE_ID_TYPE_OBJECT_TYPE,
 
@@ -77,6 +79,17 @@ typedef enum { /*< skip >*/
 	NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_BY_IFINDEX_NO_DEFAULT,
 	NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_BY_IFINDEX_ONLY_DEFAULT,
 
+	/* Consider all the destination fields of a route, that is, the ID without the ifindex
+	 * and gateway (meaning: network/plen,metric).
+	 * The reason for this is that `ip route change` can replace an existing route
+	 * and modify it's ifindex/gateway. Effectively, that means it deletes an existing
+	 * route and adds a different one (as the ID of the route changes). However, it only
+	 * sends one RTM_NEWADDR notification without notifying about the deletion. We detect
+	 * that by having this index to contain overlapping routes which require special
+	 * cache-resync. */
+	NMP_CACHE_ID_TYPE_ROUTES_BY_DESTINATION_IP4,
+	NMP_CACHE_ID_TYPE_ROUTES_BY_DESTINATION_IP6,
+
 	__NMP_CACHE_ID_TYPE_MAX,
 	NMP_CACHE_ID_TYPE_MAX = __NMP_CACHE_ID_TYPE_MAX - 1,
 } NMPCacheIdType;
@@ -87,7 +100,7 @@ typedef struct {
 	union {
 		NMMultiIndexId base;
 		guint8 _id_type; /* NMPCacheIdType as guint8 */
-		struct {
+		struct _nm_packed {
 			/* NMP_CACHE_ID_TYPE_OBJECT_TYPE */
 			/* NMP_CACHE_ID_TYPE_OBJECT_TYPE_VISIBLE_ONLY */
 			/* NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_NO_DEFAULT */
@@ -95,19 +108,33 @@ typedef struct {
 			guint8 _id_type;
 			guint8 obj_type; /* NMPObjectType as guint8 */
 		} object_type;
-		struct {
+		struct _nm_packed {
 			/* NMP_CACHE_ID_TYPE_ADDRROUTE_VISIBLE_BY_IFINDEX */
 			/* NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_BY_IFINDEX_NO_DEFAULT */
 			/* NMP_CACHE_ID_TYPE_ROUTES_VISIBLE_BY_IFINDEX_ONLY_DEFAULT */
 			guint8 _id_type;
 			guint8 obj_type; /* NMPObjectType as guint8 */
-			int ifindex;
+			int _misaligned_ifindex;
 		} object_type_by_ifindex;
-		struct {
+		struct _nm_packed {
 			/* NMP_CACHE_ID_TYPE_LINK_BY_IFNAME */
 			guint8 _id_type;
 			char ifname_short[IFNAMSIZ - 1]; /* don't include the trailing NUL so the struct fits in 4 bytes. */
 		} link_by_ifname;
+		struct _nm_packed {
+			/* NMP_CACHE_ID_TYPE_ROUTES_BY_DESTINATION_IP6 */
+			guint8 _id_type;
+			guint8 plen;
+			guint32 _misaligned_metric;
+			guint32 _misaligned_network;
+		} routes_by_destination_ip4;
+		struct _nm_packed {
+			/* NMP_CACHE_ID_TYPE_ROUTES_BY_DESTINATION_IP4 */
+			guint8 _id_type;
+			guint8 plen;
+			guint32 _misaligned_metric;
+			struct in6_addr _misaligned_network;
+		} routes_by_destination_ip6;
 	};
 } NMPCacheId;
 
@@ -124,6 +151,8 @@ typedef struct {
 	const char *obj_type_name;
 	const char *signal_type;
 
+	const guint8 *supported_cache_ids;
+
 	/* Only for NMPObjectLnk* types. */
 	NMLinkType lnk_link_type;
 
@@ -341,10 +370,10 @@ NMPObject *nmp_object_new_link (int ifindex);
 const NMPObject *nmp_object_stackinit (NMPObject *obj, NMPObjectType obj_type, const NMPlatformObject *plobj);
 const NMPObject *nmp_object_stackinit_id  (NMPObject *obj, const NMPObject *src);
 const NMPObject *nmp_object_stackinit_id_link (NMPObject *obj, int ifindex);
-const NMPObject *nmp_object_stackinit_id_ip4_address (NMPObject *obj, int ifindex, guint32 address, int plen, guint32 peer_address);
-const NMPObject *nmp_object_stackinit_id_ip6_address (NMPObject *obj, int ifindex, const struct in6_addr *address, int plen);
-const NMPObject *nmp_object_stackinit_id_ip4_route (NMPObject *obj, int ifindex, guint32 network, int plen, guint32 metric);
-const NMPObject *nmp_object_stackinit_id_ip6_route (NMPObject *obj, int ifindex, const struct in6_addr *network, int plen, guint32 metric);
+const NMPObject *nmp_object_stackinit_id_ip4_address (NMPObject *obj, int ifindex, guint32 address, guint8 plen, guint32 peer_address);
+const NMPObject *nmp_object_stackinit_id_ip6_address (NMPObject *obj, int ifindex, const struct in6_addr *address, guint8 plen);
+const NMPObject *nmp_object_stackinit_id_ip4_route (NMPObject *obj, int ifindex, guint32 network, guint8 plen, guint32 metric);
+const NMPObject *nmp_object_stackinit_id_ip6_route (NMPObject *obj, int ifindex, const struct in6_addr *network, guint8 plen, guint32 metric);
 
 const char *nmp_object_to_string (const NMPObject *obj, NMPObjectToStringMode to_string_mode, char *buf, gsize buf_size);
 int nmp_object_cmp (const NMPObject *obj1, const NMPObject *obj2);
@@ -375,16 +404,21 @@ guint nmp_cache_id_hash (const NMPCacheId *id);
 NMPCacheId *nmp_cache_id_clone (const NMPCacheId *id);
 void nmp_cache_id_destroy (NMPCacheId *id);
 
+NMPCacheId *nmp_cache_id_copy (NMPCacheId *id, const NMPCacheId *src);
 NMPCacheId *nmp_cache_id_init_object_type (NMPCacheId *id, NMPObjectType obj_type, gboolean visible_only);
 NMPCacheId *nmp_cache_id_init_addrroute_visible_by_ifindex (NMPCacheId *id, NMPObjectType obj_type, int ifindex);
 NMPCacheId *nmp_cache_id_init_routes_visible (NMPCacheId *id, NMPObjectType obj_type, gboolean with_default, gboolean with_non_default, int ifindex);
 NMPCacheId *nmp_cache_id_init_link_by_ifname (NMPCacheId *id, const char *ifname);
+NMPCacheId *nmp_cache_id_init_routes_by_destination_ip4 (NMPCacheId *id, guint32 network, guint8 plen, guint32 metric);
+NMPCacheId *nmp_cache_id_init_routes_by_destination_ip6 (NMPCacheId *id, const struct in6_addr *network, guint8 plen, guint32 metric);
 
 const NMPlatformObject *const *nmp_cache_lookup_multi (const NMPCache *cache, const NMPCacheId *cache_id, guint *out_len);
 GArray *nmp_cache_lookup_multi_to_array (const NMPCache *cache, NMPObjectType obj_type, const NMPCacheId *cache_id);
 const NMPObject *nmp_cache_lookup_obj (const NMPCache *cache, const NMPObject *obj);
 const NMPObject *nmp_cache_lookup_link (const NMPCache *cache, int ifindex);
 
+const NMPObject *nmp_cache_find_other_route_for_same_destination (const NMPCache *cache, const NMPObject *route);
+
 const NMPObject *nmp_cache_lookup_link_full (const NMPCache *cache,
                                              int ifindex,
                                              const char *ifname,
diff --git a/src/platform/tests/Makefile.am b/src/platform/tests/Makefile.am
index ebf20e15..5af4ce91 100644
--- a/src/platform/tests/Makefile.am
+++ b/src/platform/tests/Makefile.am
@@ -50,56 +50,56 @@ EXTRA_DIST = test-common.h
 monitor_SOURCES = monitor.c $(PLATFORM_SOURCES)
 monitor_LDADD = $(PLATFORM_LDADD)
 
-test_link_fake_SOURCES = test-link.c $(TEST_SOURCES)
+test_link_fake_SOURCES = $(TEST_SOURCES) test-link.c
 test_link_fake_CPPFLAGS = \
 	$(AM_CPPFLAGS) \
 	-DSETUP=nm_fake_platform_setup \
 	-DKERNEL_HACKS=0
 test_link_fake_LDADD = $(PLATFORM_LDADD)
 
-test_link_linux_SOURCES = test-link.c $(TEST_SOURCES)
+test_link_linux_SOURCES = $(TEST_SOURCES) test-link.c
 test_link_linux_CPPFLAGS = \
 	$(AM_CPPFLAGS) \
 	-DSETUP=nm_linux_platform_setup \
 	-DKERNEL_HACKS=1
 test_link_linux_LDADD = $(PLATFORM_LDADD)
 
-test_address_fake_SOURCES = test-address.c $(TEST_SOURCES)
+test_address_fake_SOURCES = $(TEST_SOURCES) test-address.c
 test_address_fake_CPPFLAGS = \
 	$(AM_CPPFLAGS) \
 	-DSETUP=nm_fake_platform_setup \
 	-DKERNEL_HACKS=0
 test_address_fake_LDADD = $(PLATFORM_LDADD)
 
-test_address_linux_SOURCES = test-address.c $(TEST_SOURCES)
+test_address_linux_SOURCES = $(TEST_SOURCES) test-address.c
 test_address_linux_CPPFLAGS = \
 	$(AM_CPPFLAGS) \
 	-DSETUP=nm_linux_platform_setup \
 	-DKERNEL_HACKS=1
 test_address_linux_LDADD = $(PLATFORM_LDADD)
 
-test_route_fake_SOURCES = test-route.c $(TEST_SOURCES)
+test_route_fake_SOURCES = $(TEST_SOURCES) test-route.c
 test_route_fake_CPPFLAGS = \
 	$(AM_CPPFLAGS) \
 	-DSETUP=nm_fake_platform_setup \
 	-DKERNEL_HACKS=0
 test_route_fake_LDADD = $(PLATFORM_LDADD)
 
-test_route_linux_SOURCES = test-route.c $(TEST_SOURCES)
+test_route_linux_SOURCES = $(TEST_SOURCES) test-route.c
 test_route_linux_CPPFLAGS = \
 	$(AM_CPPFLAGS) \
 	-DSETUP=nm_linux_platform_setup \
 	-DKERNEL_HACKS=1
 test_route_linux_LDADD = $(PLATFORM_LDADD)
 
-test_cleanup_fake_SOURCES = test-cleanup.c $(TEST_SOURCES)
+test_cleanup_fake_SOURCES = $(TEST_SOURCES) test-cleanup.c
 test_cleanup_fake_CPPFLAGS = \
 	$(AM_CPPFLAGS) \
 	-DSETUP=nm_fake_platform_setup \
 	-DKERNEL_HACKS=0
 test_cleanup_fake_LDADD = $(PLATFORM_LDADD)
 
-test_cleanup_linux_SOURCES = test-cleanup.c $(TEST_SOURCES)
+test_cleanup_linux_SOURCES = $(TEST_SOURCES) test-cleanup.c
 test_cleanup_linux_CPPFLAGS = \
 	$(AM_CPPFLAGS) \
 	-DSETUP=nm_linux_platform_setup \
diff --git a/src/platform/tests/Makefile.in b/src/platform/tests/Makefile.in
index 7c4b72ea..60cd6d82 100644
--- a/src/platform/tests/Makefile.in
+++ b/src/platform/tests/Makefile.in
@@ -137,8 +137,8 @@ am__objects_2 = test_address_fake-nm-platform.$(OBJEXT) \
 	test_address_fake-nm-linux-platform.$(OBJEXT)
 am__objects_3 = test_address_fake-test-common.$(OBJEXT) \
 	$(am__objects_2)
-am_test_address_fake_OBJECTS =  \
-	test_address_fake-test-address.$(OBJEXT) $(am__objects_3)
+am_test_address_fake_OBJECTS = $(am__objects_3) \
+	test_address_fake-test-address.$(OBJEXT)
 test_address_fake_OBJECTS = $(am_test_address_fake_OBJECTS)
 test_address_fake_DEPENDENCIES = $(PLATFORM_LDADD)
 am__objects_4 = test_address_linux-nm-platform.$(OBJEXT) \
@@ -146,8 +146,8 @@ am__objects_4 = test_address_linux-nm-platform.$(OBJEXT) \
 	test_address_linux-nm-linux-platform.$(OBJEXT)
 am__objects_5 = test_address_linux-test-common.$(OBJEXT) \
 	$(am__objects_4)
-am_test_address_linux_OBJECTS =  \
-	test_address_linux-test-address.$(OBJEXT) $(am__objects_5)
+am_test_address_linux_OBJECTS = $(am__objects_5) \
+	test_address_linux-test-address.$(OBJEXT)
 test_address_linux_OBJECTS = $(am_test_address_linux_OBJECTS)
 test_address_linux_DEPENDENCIES = $(PLATFORM_LDADD)
 am__objects_6 = test_cleanup_fake-nm-platform.$(OBJEXT) \
@@ -155,8 +155,8 @@ am__objects_6 = test_cleanup_fake-nm-platform.$(OBJEXT) \
 	test_cleanup_fake-nm-linux-platform.$(OBJEXT)
 am__objects_7 = test_cleanup_fake-test-common.$(OBJEXT) \
 	$(am__objects_6)
-am_test_cleanup_fake_OBJECTS =  \
-	test_cleanup_fake-test-cleanup.$(OBJEXT) $(am__objects_7)
+am_test_cleanup_fake_OBJECTS = $(am__objects_7) \
+	test_cleanup_fake-test-cleanup.$(OBJEXT)
 test_cleanup_fake_OBJECTS = $(am_test_cleanup_fake_OBJECTS)
 test_cleanup_fake_DEPENDENCIES = $(PLATFORM_LDADD)
 am__objects_8 = test_cleanup_linux-nm-platform.$(OBJEXT) \
@@ -164,8 +164,8 @@ am__objects_8 = test_cleanup_linux-nm-platform.$(OBJEXT) \
 	test_cleanup_linux-nm-linux-platform.$(OBJEXT)
 am__objects_9 = test_cleanup_linux-test-common.$(OBJEXT) \
 	$(am__objects_8)
-am_test_cleanup_linux_OBJECTS =  \
-	test_cleanup_linux-test-cleanup.$(OBJEXT) $(am__objects_9)
+am_test_cleanup_linux_OBJECTS = $(am__objects_9) \
+	test_cleanup_linux-test-cleanup.$(OBJEXT)
 test_cleanup_linux_OBJECTS = $(am_test_cleanup_linux_OBJECTS)
 test_cleanup_linux_DEPENDENCIES = $(PLATFORM_LDADD)
 am_test_general_OBJECTS = test-general.$(OBJEXT)
@@ -176,8 +176,8 @@ am__objects_10 = test_link_fake-nm-platform.$(OBJEXT) \
 	test_link_fake-nm-linux-platform.$(OBJEXT)
 am__objects_11 = test_link_fake-test-common.$(OBJEXT) \
 	$(am__objects_10)
-am_test_link_fake_OBJECTS = test_link_fake-test-link.$(OBJEXT) \
-	$(am__objects_11)
+am_test_link_fake_OBJECTS = $(am__objects_11) \
+	test_link_fake-test-link.$(OBJEXT)
 test_link_fake_OBJECTS = $(am_test_link_fake_OBJECTS)
 test_link_fake_DEPENDENCIES = $(PLATFORM_LDADD)
 am__objects_12 = test_link_linux-nm-platform.$(OBJEXT) \
@@ -185,8 +185,8 @@ am__objects_12 = test_link_linux-nm-platform.$(OBJEXT) \
 	test_link_linux-nm-linux-platform.$(OBJEXT)
 am__objects_13 = test_link_linux-test-common.$(OBJEXT) \
 	$(am__objects_12)
-am_test_link_linux_OBJECTS = test_link_linux-test-link.$(OBJEXT) \
-	$(am__objects_13)
+am_test_link_linux_OBJECTS = $(am__objects_13) \
+	test_link_linux-test-link.$(OBJEXT)
 test_link_linux_OBJECTS = $(am_test_link_linux_OBJECTS)
 test_link_linux_DEPENDENCIES = $(PLATFORM_LDADD)
 am_test_nmp_object_OBJECTS = test-nmp-object.$(OBJEXT)
@@ -198,8 +198,8 @@ am__objects_14 = test_route_fake-nm-platform.$(OBJEXT) \
 	test_route_fake-nm-linux-platform.$(OBJEXT)
 am__objects_15 = test_route_fake-test-common.$(OBJEXT) \
 	$(am__objects_14)
-am_test_route_fake_OBJECTS = test_route_fake-test-route.$(OBJEXT) \
-	$(am__objects_15)
+am_test_route_fake_OBJECTS = $(am__objects_15) \
+	test_route_fake-test-route.$(OBJEXT)
 test_route_fake_OBJECTS = $(am_test_route_fake_OBJECTS)
 test_route_fake_DEPENDENCIES = $(PLATFORM_LDADD)
 am__objects_16 = test_route_linux-nm-platform.$(OBJEXT) \
@@ -207,8 +207,8 @@ am__objects_16 = test_route_linux-nm-platform.$(OBJEXT) \
 	test_route_linux-nm-linux-platform.$(OBJEXT)
 am__objects_17 = test_route_linux-test-common.$(OBJEXT) \
 	$(am__objects_16)
-am_test_route_linux_OBJECTS = test_route_linux-test-route.$(OBJEXT) \
-	$(am__objects_17)
+am_test_route_linux_OBJECTS = $(am__objects_17) \
+	test_route_linux-test-route.$(OBJEXT)
 test_route_linux_OBJECTS = $(am_test_route_linux_OBJECTS)
 test_route_linux_DEPENDENCIES = $(PLATFORM_LDADD)
 AM_V_P = $(am__v_P_@AM_V@)
@@ -776,56 +776,56 @@ PLATFORM_LDADD = \
 EXTRA_DIST = test-common.h
 monitor_SOURCES = monitor.c $(PLATFORM_SOURCES)
 monitor_LDADD = $(PLATFORM_LDADD)
-test_link_fake_SOURCES = test-link.c $(TEST_SOURCES)
+test_link_fake_SOURCES = $(TEST_SOURCES) test-link.c
 test_link_fake_CPPFLAGS = \
 	$(AM_CPPFLAGS) \
 	-DSETUP=nm_fake_platform_setup \
 	-DKERNEL_HACKS=0
 
 test_link_fake_LDADD = $(PLATFORM_LDADD)
-test_link_linux_SOURCES = test-link.c $(TEST_SOURCES)
+test_link_linux_SOURCES = $(TEST_SOURCES) test-link.c
 test_link_linux_CPPFLAGS = \
 	$(AM_CPPFLAGS) \
 	-DSETUP=nm_linux_platform_setup \
 	-DKERNEL_HACKS=1
 
 test_link_linux_LDADD = $(PLATFORM_LDADD)
-test_address_fake_SOURCES = test-address.c $(TEST_SOURCES)
+test_address_fake_SOURCES = $(TEST_SOURCES) test-address.c
 test_address_fake_CPPFLAGS = \
 	$(AM_CPPFLAGS) \
 	-DSETUP=nm_fake_platform_setup \
 	-DKERNEL_HACKS=0
 
 test_address_fake_LDADD = $(PLATFORM_LDADD)
-test_address_linux_SOURCES = test-address.c $(TEST_SOURCES)
+test_address_linux_SOURCES = $(TEST_SOURCES) test-address.c
 test_address_linux_CPPFLAGS = \
 	$(AM_CPPFLAGS) \
 	-DSETUP=nm_linux_platform_setup \
 	-DKERNEL_HACKS=1
 
 test_address_linux_LDADD = $(PLATFORM_LDADD)
-test_route_fake_SOURCES = test-route.c $(TEST_SOURCES)
+test_route_fake_SOURCES = $(TEST_SOURCES) test-route.c
 test_route_fake_CPPFLAGS = \
 	$(AM_CPPFLAGS) \
 	-DSETUP=nm_fake_platform_setup \
 	-DKERNEL_HACKS=0
 
 test_route_fake_LDADD = $(PLATFORM_LDADD)
-test_route_linux_SOURCES = test-route.c $(TEST_SOURCES)
+test_route_linux_SOURCES = $(TEST_SOURCES) test-route.c
 test_route_linux_CPPFLAGS = \
 	$(AM_CPPFLAGS) \
 	-DSETUP=nm_linux_platform_setup \
 	-DKERNEL_HACKS=1
 
 test_route_linux_LDADD = $(PLATFORM_LDADD)
-test_cleanup_fake_SOURCES = test-cleanup.c $(TEST_SOURCES)
+test_cleanup_fake_SOURCES = $(TEST_SOURCES) test-cleanup.c
 test_cleanup_fake_CPPFLAGS = \
 	$(AM_CPPFLAGS) \
 	-DSETUP=nm_fake_platform_setup \
 	-DKERNEL_HACKS=0
 
 test_cleanup_fake_LDADD = $(PLATFORM_LDADD)
-test_cleanup_linux_SOURCES = test-cleanup.c $(TEST_SOURCES)
+test_cleanup_linux_SOURCES = $(TEST_SOURCES) test-cleanup.c
 test_cleanup_linux_CPPFLAGS = \
 	$(AM_CPPFLAGS) \
 	-DSETUP=nm_linux_platform_setup \
@@ -1047,20 +1047,6 @@ nm-linux-platform.obj: ../nm-linux-platform.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi`
 
-test_address_fake-test-address.o: test-address.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_fake-test-address.o -MD -MP -MF $(DEPDIR)/test_address_fake-test-address.Tpo -c -o test_address_fake-test-address.o `test -f 'test-address.c' || echo '$(srcdir)/'`test-address.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_address_fake-test-address.Tpo $(DEPDIR)/test_address_fake-test-address.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-address.c' object='test_address_fake-test-address.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_fake-test-address.o `test -f 'test-address.c' || echo '$(srcdir)/'`test-address.c
-
-test_address_fake-test-address.obj: test-address.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_fake-test-address.obj -MD -MP -MF $(DEPDIR)/test_address_fake-test-address.Tpo -c -o test_address_fake-test-address.obj `if test -f 'test-address.c'; then $(CYGPATH_W) 'test-address.c'; else $(CYGPATH_W) '$(srcdir)/test-address.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_address_fake-test-address.Tpo $(DEPDIR)/test_address_fake-test-address.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-address.c' object='test_address_fake-test-address.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_fake-test-address.obj `if test -f 'test-address.c'; then $(CYGPATH_W) 'test-address.c'; else $(CYGPATH_W) '$(srcdir)/test-address.c'; fi`
-
 test_address_fake-test-common.o: test-common.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_fake-test-common.o -MD -MP -MF $(DEPDIR)/test_address_fake-test-common.Tpo -c -o test_address_fake-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_address_fake-test-common.Tpo $(DEPDIR)/test_address_fake-test-common.Po
@@ -1117,19 +1103,19 @@ test_address_fake-nm-linux-platform.obj: ../nm-linux-platform.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_fake-nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi`
 
-test_address_linux-test-address.o: test-address.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_linux-test-address.o -MD -MP -MF $(DEPDIR)/test_address_linux-test-address.Tpo -c -o test_address_linux-test-address.o `test -f 'test-address.c' || echo '$(srcdir)/'`test-address.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_address_linux-test-address.Tpo $(DEPDIR)/test_address_linux-test-address.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-address.c' object='test_address_linux-test-address.o' libtool=no @AMDEPBACKSLASH@
+test_address_fake-test-address.o: test-address.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_fake-test-address.o -MD -MP -MF $(DEPDIR)/test_address_fake-test-address.Tpo -c -o test_address_fake-test-address.o `test -f 'test-address.c' || echo '$(srcdir)/'`test-address.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_address_fake-test-address.Tpo $(DEPDIR)/test_address_fake-test-address.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-address.c' object='test_address_fake-test-address.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_linux-test-address.o `test -f 'test-address.c' || echo '$(srcdir)/'`test-address.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_fake-test-address.o `test -f 'test-address.c' || echo '$(srcdir)/'`test-address.c
 
-test_address_linux-test-address.obj: test-address.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_linux-test-address.obj -MD -MP -MF $(DEPDIR)/test_address_linux-test-address.Tpo -c -o test_address_linux-test-address.obj `if test -f 'test-address.c'; then $(CYGPATH_W) 'test-address.c'; else $(CYGPATH_W) '$(srcdir)/test-address.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_address_linux-test-address.Tpo $(DEPDIR)/test_address_linux-test-address.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-address.c' object='test_address_linux-test-address.obj' libtool=no @AMDEPBACKSLASH@
+test_address_fake-test-address.obj: test-address.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_fake-test-address.obj -MD -MP -MF $(DEPDIR)/test_address_fake-test-address.Tpo -c -o test_address_fake-test-address.obj `if test -f 'test-address.c'; then $(CYGPATH_W) 'test-address.c'; else $(CYGPATH_W) '$(srcdir)/test-address.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_address_fake-test-address.Tpo $(DEPDIR)/test_address_fake-test-address.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-address.c' object='test_address_fake-test-address.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_linux-test-address.obj `if test -f 'test-address.c'; then $(CYGPATH_W) 'test-address.c'; else $(CYGPATH_W) '$(srcdir)/test-address.c'; fi`
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_fake-test-address.obj `if test -f 'test-address.c'; then $(CYGPATH_W) 'test-address.c'; else $(CYGPATH_W) '$(srcdir)/test-address.c'; fi`
 
 test_address_linux-test-common.o: test-common.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_linux-test-common.o -MD -MP -MF $(DEPDIR)/test_address_linux-test-common.Tpo -c -o test_address_linux-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c
@@ -1187,19 +1173,19 @@ test_address_linux-nm-linux-platform.obj: ../nm-linux-platform.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_linux-nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi`
 
-test_cleanup_fake-test-cleanup.o: test-cleanup.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_fake-test-cleanup.o -MD -MP -MF $(DEPDIR)/test_cleanup_fake-test-cleanup.Tpo -c -o test_cleanup_fake-test-cleanup.o `test -f 'test-cleanup.c' || echo '$(srcdir)/'`test-cleanup.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_fake-test-cleanup.Tpo $(DEPDIR)/test_cleanup_fake-test-cleanup.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-cleanup.c' object='test_cleanup_fake-test-cleanup.o' libtool=no @AMDEPBACKSLASH@
+test_address_linux-test-address.o: test-address.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_linux-test-address.o -MD -MP -MF $(DEPDIR)/test_address_linux-test-address.Tpo -c -o test_address_linux-test-address.o `test -f 'test-address.c' || echo '$(srcdir)/'`test-address.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_address_linux-test-address.Tpo $(DEPDIR)/test_address_linux-test-address.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-address.c' object='test_address_linux-test-address.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_fake-test-cleanup.o `test -f 'test-cleanup.c' || echo '$(srcdir)/'`test-cleanup.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_linux-test-address.o `test -f 'test-address.c' || echo '$(srcdir)/'`test-address.c
 
-test_cleanup_fake-test-cleanup.obj: test-cleanup.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_fake-test-cleanup.obj -MD -MP -MF $(DEPDIR)/test_cleanup_fake-test-cleanup.Tpo -c -o test_cleanup_fake-test-cleanup.obj `if test -f 'test-cleanup.c'; then $(CYGPATH_W) 'test-cleanup.c'; else $(CYGPATH_W) '$(srcdir)/test-cleanup.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_fake-test-cleanup.Tpo $(DEPDIR)/test_cleanup_fake-test-cleanup.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-cleanup.c' object='test_cleanup_fake-test-cleanup.obj' libtool=no @AMDEPBACKSLASH@
+test_address_linux-test-address.obj: test-address.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_address_linux-test-address.obj -MD -MP -MF $(DEPDIR)/test_address_linux-test-address.Tpo -c -o test_address_linux-test-address.obj `if test -f 'test-address.c'; then $(CYGPATH_W) 'test-address.c'; else $(CYGPATH_W) '$(srcdir)/test-address.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_address_linux-test-address.Tpo $(DEPDIR)/test_address_linux-test-address.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-address.c' object='test_address_linux-test-address.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_fake-test-cleanup.obj `if test -f 'test-cleanup.c'; then $(CYGPATH_W) 'test-cleanup.c'; else $(CYGPATH_W) '$(srcdir)/test-cleanup.c'; fi`
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_address_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_address_linux-test-address.obj `if test -f 'test-address.c'; then $(CYGPATH_W) 'test-address.c'; else $(CYGPATH_W) '$(srcdir)/test-address.c'; fi`
 
 test_cleanup_fake-test-common.o: test-common.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_fake-test-common.o -MD -MP -MF $(DEPDIR)/test_cleanup_fake-test-common.Tpo -c -o test_cleanup_fake-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c
@@ -1257,19 +1243,19 @@ test_cleanup_fake-nm-linux-platform.obj: ../nm-linux-platform.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_fake-nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi`
 
-test_cleanup_linux-test-cleanup.o: test-cleanup.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_linux-test-cleanup.o -MD -MP -MF $(DEPDIR)/test_cleanup_linux-test-cleanup.Tpo -c -o test_cleanup_linux-test-cleanup.o `test -f 'test-cleanup.c' || echo '$(srcdir)/'`test-cleanup.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_linux-test-cleanup.Tpo $(DEPDIR)/test_cleanup_linux-test-cleanup.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-cleanup.c' object='test_cleanup_linux-test-cleanup.o' libtool=no @AMDEPBACKSLASH@
+test_cleanup_fake-test-cleanup.o: test-cleanup.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_fake-test-cleanup.o -MD -MP -MF $(DEPDIR)/test_cleanup_fake-test-cleanup.Tpo -c -o test_cleanup_fake-test-cleanup.o `test -f 'test-cleanup.c' || echo '$(srcdir)/'`test-cleanup.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_fake-test-cleanup.Tpo $(DEPDIR)/test_cleanup_fake-test-cleanup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-cleanup.c' object='test_cleanup_fake-test-cleanup.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_linux-test-cleanup.o `test -f 'test-cleanup.c' || echo '$(srcdir)/'`test-cleanup.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_fake-test-cleanup.o `test -f 'test-cleanup.c' || echo '$(srcdir)/'`test-cleanup.c
 
-test_cleanup_linux-test-cleanup.obj: test-cleanup.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_linux-test-cleanup.obj -MD -MP -MF $(DEPDIR)/test_cleanup_linux-test-cleanup.Tpo -c -o test_cleanup_linux-test-cleanup.obj `if test -f 'test-cleanup.c'; then $(CYGPATH_W) 'test-cleanup.c'; else $(CYGPATH_W) '$(srcdir)/test-cleanup.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_linux-test-cleanup.Tpo $(DEPDIR)/test_cleanup_linux-test-cleanup.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-cleanup.c' object='test_cleanup_linux-test-cleanup.obj' libtool=no @AMDEPBACKSLASH@
+test_cleanup_fake-test-cleanup.obj: test-cleanup.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_fake-test-cleanup.obj -MD -MP -MF $(DEPDIR)/test_cleanup_fake-test-cleanup.Tpo -c -o test_cleanup_fake-test-cleanup.obj `if test -f 'test-cleanup.c'; then $(CYGPATH_W) 'test-cleanup.c'; else $(CYGPATH_W) '$(srcdir)/test-cleanup.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_fake-test-cleanup.Tpo $(DEPDIR)/test_cleanup_fake-test-cleanup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-cleanup.c' object='test_cleanup_fake-test-cleanup.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_linux-test-cleanup.obj `if test -f 'test-cleanup.c'; then $(CYGPATH_W) 'test-cleanup.c'; else $(CYGPATH_W) '$(srcdir)/test-cleanup.c'; fi`
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_fake-test-cleanup.obj `if test -f 'test-cleanup.c'; then $(CYGPATH_W) 'test-cleanup.c'; else $(CYGPATH_W) '$(srcdir)/test-cleanup.c'; fi`
 
 test_cleanup_linux-test-common.o: test-common.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_linux-test-common.o -MD -MP -MF $(DEPDIR)/test_cleanup_linux-test-common.Tpo -c -o test_cleanup_linux-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c
@@ -1327,19 +1313,19 @@ test_cleanup_linux-nm-linux-platform.obj: ../nm-linux-platform.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_linux-nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi`
 
-test_link_fake-test-link.o: test-link.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_fake-test-link.o -MD -MP -MF $(DEPDIR)/test_link_fake-test-link.Tpo -c -o test_link_fake-test-link.o `test -f 'test-link.c' || echo '$(srcdir)/'`test-link.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_link_fake-test-link.Tpo $(DEPDIR)/test_link_fake-test-link.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-link.c' object='test_link_fake-test-link.o' libtool=no @AMDEPBACKSLASH@
+test_cleanup_linux-test-cleanup.o: test-cleanup.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_linux-test-cleanup.o -MD -MP -MF $(DEPDIR)/test_cleanup_linux-test-cleanup.Tpo -c -o test_cleanup_linux-test-cleanup.o `test -f 'test-cleanup.c' || echo '$(srcdir)/'`test-cleanup.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_linux-test-cleanup.Tpo $(DEPDIR)/test_cleanup_linux-test-cleanup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-cleanup.c' object='test_cleanup_linux-test-cleanup.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_fake-test-link.o `test -f 'test-link.c' || echo '$(srcdir)/'`test-link.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_linux-test-cleanup.o `test -f 'test-cleanup.c' || echo '$(srcdir)/'`test-cleanup.c
 
-test_link_fake-test-link.obj: test-link.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_fake-test-link.obj -MD -MP -MF $(DEPDIR)/test_link_fake-test-link.Tpo -c -o test_link_fake-test-link.obj `if test -f 'test-link.c'; then $(CYGPATH_W) 'test-link.c'; else $(CYGPATH_W) '$(srcdir)/test-link.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_link_fake-test-link.Tpo $(DEPDIR)/test_link_fake-test-link.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-link.c' object='test_link_fake-test-link.obj' libtool=no @AMDEPBACKSLASH@
+test_cleanup_linux-test-cleanup.obj: test-cleanup.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_cleanup_linux-test-cleanup.obj -MD -MP -MF $(DEPDIR)/test_cleanup_linux-test-cleanup.Tpo -c -o test_cleanup_linux-test-cleanup.obj `if test -f 'test-cleanup.c'; then $(CYGPATH_W) 'test-cleanup.c'; else $(CYGPATH_W) '$(srcdir)/test-cleanup.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_cleanup_linux-test-cleanup.Tpo $(DEPDIR)/test_cleanup_linux-test-cleanup.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-cleanup.c' object='test_cleanup_linux-test-cleanup.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_fake-test-link.obj `if test -f 'test-link.c'; then $(CYGPATH_W) 'test-link.c'; else $(CYGPATH_W) '$(srcdir)/test-link.c'; fi`
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_cleanup_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_cleanup_linux-test-cleanup.obj `if test -f 'test-cleanup.c'; then $(CYGPATH_W) 'test-cleanup.c'; else $(CYGPATH_W) '$(srcdir)/test-cleanup.c'; fi`
 
 test_link_fake-test-common.o: test-common.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_fake-test-common.o -MD -MP -MF $(DEPDIR)/test_link_fake-test-common.Tpo -c -o test_link_fake-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c
@@ -1397,19 +1383,19 @@ test_link_fake-nm-linux-platform.obj: ../nm-linux-platform.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_fake-nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi`
 
-test_link_linux-test-link.o: test-link.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_linux-test-link.o -MD -MP -MF $(DEPDIR)/test_link_linux-test-link.Tpo -c -o test_link_linux-test-link.o `test -f 'test-link.c' || echo '$(srcdir)/'`test-link.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_link_linux-test-link.Tpo $(DEPDIR)/test_link_linux-test-link.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-link.c' object='test_link_linux-test-link.o' libtool=no @AMDEPBACKSLASH@
+test_link_fake-test-link.o: test-link.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_fake-test-link.o -MD -MP -MF $(DEPDIR)/test_link_fake-test-link.Tpo -c -o test_link_fake-test-link.o `test -f 'test-link.c' || echo '$(srcdir)/'`test-link.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_link_fake-test-link.Tpo $(DEPDIR)/test_link_fake-test-link.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-link.c' object='test_link_fake-test-link.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_linux-test-link.o `test -f 'test-link.c' || echo '$(srcdir)/'`test-link.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_fake-test-link.o `test -f 'test-link.c' || echo '$(srcdir)/'`test-link.c
 
-test_link_linux-test-link.obj: test-link.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_linux-test-link.obj -MD -MP -MF $(DEPDIR)/test_link_linux-test-link.Tpo -c -o test_link_linux-test-link.obj `if test -f 'test-link.c'; then $(CYGPATH_W) 'test-link.c'; else $(CYGPATH_W) '$(srcdir)/test-link.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_link_linux-test-link.Tpo $(DEPDIR)/test_link_linux-test-link.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-link.c' object='test_link_linux-test-link.obj' libtool=no @AMDEPBACKSLASH@
+test_link_fake-test-link.obj: test-link.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_fake-test-link.obj -MD -MP -MF $(DEPDIR)/test_link_fake-test-link.Tpo -c -o test_link_fake-test-link.obj `if test -f 'test-link.c'; then $(CYGPATH_W) 'test-link.c'; else $(CYGPATH_W) '$(srcdir)/test-link.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_link_fake-test-link.Tpo $(DEPDIR)/test_link_fake-test-link.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-link.c' object='test_link_fake-test-link.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_linux-test-link.obj `if test -f 'test-link.c'; then $(CYGPATH_W) 'test-link.c'; else $(CYGPATH_W) '$(srcdir)/test-link.c'; fi`
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_fake-test-link.obj `if test -f 'test-link.c'; then $(CYGPATH_W) 'test-link.c'; else $(CYGPATH_W) '$(srcdir)/test-link.c'; fi`
 
 test_link_linux-test-common.o: test-common.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_linux-test-common.o -MD -MP -MF $(DEPDIR)/test_link_linux-test-common.Tpo -c -o test_link_linux-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c
@@ -1467,19 +1453,19 @@ test_link_linux-nm-linux-platform.obj: ../nm-linux-platform.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_linux-nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi`
 
-test_route_fake-test-route.o: test-route.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_fake-test-route.o -MD -MP -MF $(DEPDIR)/test_route_fake-test-route.Tpo -c -o test_route_fake-test-route.o `test -f 'test-route.c' || echo '$(srcdir)/'`test-route.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_route_fake-test-route.Tpo $(DEPDIR)/test_route_fake-test-route.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-route.c' object='test_route_fake-test-route.o' libtool=no @AMDEPBACKSLASH@
+test_link_linux-test-link.o: test-link.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_linux-test-link.o -MD -MP -MF $(DEPDIR)/test_link_linux-test-link.Tpo -c -o test_link_linux-test-link.o `test -f 'test-link.c' || echo '$(srcdir)/'`test-link.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_link_linux-test-link.Tpo $(DEPDIR)/test_link_linux-test-link.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-link.c' object='test_link_linux-test-link.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_fake-test-route.o `test -f 'test-route.c' || echo '$(srcdir)/'`test-route.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_linux-test-link.o `test -f 'test-link.c' || echo '$(srcdir)/'`test-link.c
 
-test_route_fake-test-route.obj: test-route.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_fake-test-route.obj -MD -MP -MF $(DEPDIR)/test_route_fake-test-route.Tpo -c -o test_route_fake-test-route.obj `if test -f 'test-route.c'; then $(CYGPATH_W) 'test-route.c'; else $(CYGPATH_W) '$(srcdir)/test-route.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_route_fake-test-route.Tpo $(DEPDIR)/test_route_fake-test-route.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-route.c' object='test_route_fake-test-route.obj' libtool=no @AMDEPBACKSLASH@
+test_link_linux-test-link.obj: test-link.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_link_linux-test-link.obj -MD -MP -MF $(DEPDIR)/test_link_linux-test-link.Tpo -c -o test_link_linux-test-link.obj `if test -f 'test-link.c'; then $(CYGPATH_W) 'test-link.c'; else $(CYGPATH_W) '$(srcdir)/test-link.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_link_linux-test-link.Tpo $(DEPDIR)/test_link_linux-test-link.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-link.c' object='test_link_linux-test-link.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_fake-test-route.obj `if test -f 'test-route.c'; then $(CYGPATH_W) 'test-route.c'; else $(CYGPATH_W) '$(srcdir)/test-route.c'; fi`
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_link_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_link_linux-test-link.obj `if test -f 'test-link.c'; then $(CYGPATH_W) 'test-link.c'; else $(CYGPATH_W) '$(srcdir)/test-link.c'; fi`
 
 test_route_fake-test-common.o: test-common.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_fake-test-common.o -MD -MP -MF $(DEPDIR)/test_route_fake-test-common.Tpo -c -o test_route_fake-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c
@@ -1537,19 +1523,19 @@ test_route_fake-nm-linux-platform.obj: ../nm-linux-platform.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_fake-nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi`
 
-test_route_linux-test-route.o: test-route.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_linux-test-route.o -MD -MP -MF $(DEPDIR)/test_route_linux-test-route.Tpo -c -o test_route_linux-test-route.o `test -f 'test-route.c' || echo '$(srcdir)/'`test-route.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_route_linux-test-route.Tpo $(DEPDIR)/test_route_linux-test-route.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-route.c' object='test_route_linux-test-route.o' libtool=no @AMDEPBACKSLASH@
+test_route_fake-test-route.o: test-route.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_fake-test-route.o -MD -MP -MF $(DEPDIR)/test_route_fake-test-route.Tpo -c -o test_route_fake-test-route.o `test -f 'test-route.c' || echo '$(srcdir)/'`test-route.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_route_fake-test-route.Tpo $(DEPDIR)/test_route_fake-test-route.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-route.c' object='test_route_fake-test-route.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_linux-test-route.o `test -f 'test-route.c' || echo '$(srcdir)/'`test-route.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_fake-test-route.o `test -f 'test-route.c' || echo '$(srcdir)/'`test-route.c
 
-test_route_linux-test-route.obj: test-route.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_linux-test-route.obj -MD -MP -MF $(DEPDIR)/test_route_linux-test-route.Tpo -c -o test_route_linux-test-route.obj `if test -f 'test-route.c'; then $(CYGPATH_W) 'test-route.c'; else $(CYGPATH_W) '$(srcdir)/test-route.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_route_linux-test-route.Tpo $(DEPDIR)/test_route_linux-test-route.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-route.c' object='test_route_linux-test-route.obj' libtool=no @AMDEPBACKSLASH@
+test_route_fake-test-route.obj: test-route.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_fake-test-route.obj -MD -MP -MF $(DEPDIR)/test_route_fake-test-route.Tpo -c -o test_route_fake-test-route.obj `if test -f 'test-route.c'; then $(CYGPATH_W) 'test-route.c'; else $(CYGPATH_W) '$(srcdir)/test-route.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_route_fake-test-route.Tpo $(DEPDIR)/test_route_fake-test-route.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-route.c' object='test_route_fake-test-route.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_linux-test-route.obj `if test -f 'test-route.c'; then $(CYGPATH_W) 'test-route.c'; else $(CYGPATH_W) '$(srcdir)/test-route.c'; fi`
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_fake_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_fake-test-route.obj `if test -f 'test-route.c'; then $(CYGPATH_W) 'test-route.c'; else $(CYGPATH_W) '$(srcdir)/test-route.c'; fi`
 
 test_route_linux-test-common.o: test-common.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_linux-test-common.o -MD -MP -MF $(DEPDIR)/test_route_linux-test-common.Tpo -c -o test_route_linux-test-common.o `test -f 'test-common.c' || echo '$(srcdir)/'`test-common.c
@@ -1607,6 +1593,20 @@ test_route_linux-nm-linux-platform.obj: ../nm-linux-platform.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_linux-nm-linux-platform.obj `if test -f '../nm-linux-platform.c'; then $(CYGPATH_W) '../nm-linux-platform.c'; else $(CYGPATH_W) '$(srcdir)/../nm-linux-platform.c'; fi`
 
+test_route_linux-test-route.o: test-route.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_linux-test-route.o -MD -MP -MF $(DEPDIR)/test_route_linux-test-route.Tpo -c -o test_route_linux-test-route.o `test -f 'test-route.c' || echo '$(srcdir)/'`test-route.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_route_linux-test-route.Tpo $(DEPDIR)/test_route_linux-test-route.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-route.c' object='test_route_linux-test-route.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_linux-test-route.o `test -f 'test-route.c' || echo '$(srcdir)/'`test-route.c
+
+test_route_linux-test-route.obj: test-route.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_route_linux-test-route.obj -MD -MP -MF $(DEPDIR)/test_route_linux-test-route.Tpo -c -o test_route_linux-test-route.obj `if test -f 'test-route.c'; then $(CYGPATH_W) 'test-route.c'; else $(CYGPATH_W) '$(srcdir)/test-route.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/test_route_linux-test-route.Tpo $(DEPDIR)/test_route_linux-test-route.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='test-route.c' object='test_route_linux-test-route.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_route_linux_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_route_linux-test-route.obj `if test -f 'test-route.c'; then $(CYGPATH_W) 'test-route.c'; else $(CYGPATH_W) '$(srcdir)/test-route.c'; fi`
+
 mostlyclean-libtool:
 	-rm -f *.lo
 
diff --git a/src/platform/tests/test-address.c b/src/platform/tests/test-address.c
index 83a0bfd3..05a14448 100644
--- a/src/platform/tests/test-address.c
+++ b/src/platform/tests/test-address.c
@@ -94,12 +94,12 @@ test_ip4_address_general (void)
 
 	/* Add address */
 	g_assert (!nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr));
-	nmtstp_ip4_address_add (EX, ifindex, addr, IP4_PLEN, addr, lifetime, preferred, 0, NULL);
+	nmtstp_ip4_address_add (NULL, EX, ifindex, addr, IP4_PLEN, addr, lifetime, preferred, 0, NULL);
 	g_assert (nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr));
 	accept_signal (address_added);
 
 	/* Add address again (aka update) */
-	nmtstp_ip4_address_add (EX, ifindex, addr, IP4_PLEN, addr, lifetime + 100, preferred + 50, 0, NULL);
+	nmtstp_ip4_address_add (NULL, EX, ifindex, addr, IP4_PLEN, addr, lifetime + 100, preferred + 50, 0, NULL);
 	accept_signals (address_changed, 0, 1);
 
 	/* Test address listing */
@@ -114,12 +114,12 @@ test_ip4_address_general (void)
 	g_array_unref (addresses);
 
 	/* Remove address */
-	nmtstp_ip4_address_del (EX, ifindex, addr, IP4_PLEN, addr);
+	nmtstp_ip4_address_del (NULL, EX, ifindex, addr, IP4_PLEN, addr);
 	g_assert (!nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr));
 	accept_signal (address_removed);
 
 	/* Remove address again */
-	nmtstp_ip4_address_del (EX, ifindex, addr, IP4_PLEN, addr);
+	nmtstp_ip4_address_del (NULL, EX, ifindex, addr, IP4_PLEN, addr);
 
 	free_signal (address_added);
 	free_signal (address_changed);
@@ -144,12 +144,12 @@ test_ip6_address_general (void)
 
 	/* Add address */
 	g_assert (!nm_platform_ip6_address_get (NM_PLATFORM_GET, ifindex, addr, IP6_PLEN));
-	nmtstp_ip6_address_add (EX, ifindex, addr, IP6_PLEN, in6addr_any, lifetime, preferred, flags);
+	nmtstp_ip6_address_add (NULL, EX, ifindex, addr, IP6_PLEN, in6addr_any, lifetime, preferred, flags);
 	g_assert (nm_platform_ip6_address_get (NM_PLATFORM_GET, ifindex, addr, IP6_PLEN));
 	accept_signal (address_added);
 
 	/* Add address again (aka update) */
-	nmtstp_ip6_address_add (EX, ifindex, addr, IP6_PLEN, in6addr_any, lifetime, preferred, flags);
+	nmtstp_ip6_address_add (NULL, EX, ifindex, addr, IP6_PLEN, in6addr_any, lifetime, preferred, flags);
 	accept_signals (address_changed, 0, 1);
 
 	/* Test address listing */
@@ -163,12 +163,12 @@ test_ip6_address_general (void)
 	g_array_unref (addresses);
 
 	/* Remove address */
-	nmtstp_ip6_address_del (EX, ifindex, addr, IP6_PLEN);
+	nmtstp_ip6_address_del (NULL, EX, ifindex, addr, IP6_PLEN);
 	g_assert (!nm_platform_ip6_address_get (NM_PLATFORM_GET, ifindex, addr, IP6_PLEN));
 	accept_signal (address_removed);
 
 	/* Remove address again */
-	nmtstp_ip6_address_del (EX, ifindex, addr, IP6_PLEN);
+	nmtstp_ip6_address_del (NULL, EX, ifindex, addr, IP6_PLEN);
 
 	/* ensure not pending signal. */
 	accept_signals (address_changed, 0, 1);
@@ -197,15 +197,15 @@ test_ip4_address_general_2 (void)
 	g_assert (nm_platform_link_set_up (NM_PLATFORM_GET, DEVICE_IFINDEX, NULL));
 
 	/* Add/delete notification */
-	nmtstp_ip4_address_add (EX, ifindex, addr, IP4_PLEN, addr, lifetime, preferred, 0, NULL);
+	nmtstp_ip4_address_add (NULL, EX, ifindex, addr, IP4_PLEN, addr, lifetime, preferred, 0, NULL);
 	accept_signal (address_added);
 	g_assert (nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr));
-	nmtstp_ip4_address_del (EX, ifindex, addr, IP4_PLEN, addr);
+	nmtstp_ip4_address_del (NULL, EX, ifindex, addr, IP4_PLEN, addr);
 	accept_signal (address_removed);
 	g_assert (!nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr));
 
 	/* Add/delete conflict */
-	nmtstp_ip4_address_add (EX, ifindex, addr, IP4_PLEN, addr, lifetime, preferred, 0, NULL);
+	nmtstp_ip4_address_add (NULL, EX, ifindex, addr, IP4_PLEN, addr, lifetime, preferred, 0, NULL);
 	g_assert (nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr));
 	accept_signal (address_added);
 
@@ -227,20 +227,20 @@ test_ip6_address_general_2 (void)
 	inet_pton (AF_INET6, IP6_ADDRESS, &addr);
 
 	/* Add/delete notification */
-	nmtstp_ip6_address_add (EX, ifindex, addr, IP6_PLEN, in6addr_any, lifetime, preferred, 0);
+	nmtstp_ip6_address_add (NULL, EX, ifindex, addr, IP6_PLEN, in6addr_any, lifetime, preferred, 0);
 	accept_signal (address_added);
 	g_assert (nm_platform_ip6_address_get (NM_PLATFORM_GET, ifindex, addr, IP6_PLEN));
 
-	nmtstp_ip6_address_del (EX, ifindex, addr, IP6_PLEN);
+	nmtstp_ip6_address_del (NULL, EX, ifindex, addr, IP6_PLEN);
 	accept_signal (address_removed);
 	g_assert (!nm_platform_ip6_address_get (NM_PLATFORM_GET, ifindex, addr, IP6_PLEN));
 
 	/* Add/delete conflict */
-	nmtstp_ip6_address_add (EX, ifindex, addr, IP6_PLEN, in6addr_any, lifetime, preferred, 0);
+	nmtstp_ip6_address_add (NULL, EX, ifindex, addr, IP6_PLEN, in6addr_any, lifetime, preferred, 0);
 	accept_signal (address_added);
 	g_assert (nm_platform_ip6_address_get (NM_PLATFORM_GET, ifindex, addr, IP6_PLEN));
 
-	nmtstp_ip6_address_add (EX, ifindex, addr, IP6_PLEN, in6addr_any, lifetime, preferred, flags);
+	nmtstp_ip6_address_add (NULL, EX, ifindex, addr, IP6_PLEN, in6addr_any, lifetime, preferred, flags);
 	ensure_no_signal (address_added);
 	g_assert (nm_platform_ip6_address_get (NM_PLATFORM_GET, ifindex, addr, IP6_PLEN));
 
@@ -273,7 +273,7 @@ test_ip4_address_peer (void)
 	accept_signals (address_added, 0, G_MAXINT);
 
 	/* Add/delete notification */
-	nmtstp_ip4_address_add (EX, ifindex, addr, IP4_PLEN, addr_peer, lifetime, preferred, 0, NULL);
+	nmtstp_ip4_address_add (NULL, EX, ifindex, addr, IP4_PLEN, addr_peer, lifetime, preferred, 0, NULL);
 	accept_signal (address_added);
 	a = nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr_peer);
 	g_assert (a);
@@ -281,7 +281,7 @@ test_ip4_address_peer (void)
 
 	nmtstp_ip_address_assert_lifetime ((NMPlatformIPAddress *) a, -1, lifetime, preferred);
 
-	nmtstp_ip4_address_add (EX, ifindex, addr, IP4_PLEN, addr_peer2, lifetime, preferred, 0, NULL);
+	nmtstp_ip4_address_add (NULL, EX, ifindex, addr, IP4_PLEN, addr_peer2, lifetime, preferred, 0, NULL);
 	accept_signal (address_added);
 	g_assert (nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr_peer));
 	a = nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr_peer2);
@@ -290,7 +290,7 @@ test_ip4_address_peer (void)
 	nmtstp_ip_address_assert_lifetime ((NMPlatformIPAddress *) a, -1, lifetime, preferred);
 
 	g_assert (addr != addr_peer);
-	nmtstp_ip4_address_del (EX, ifindex, addr, IP4_PLEN, addr_peer);
+	nmtstp_ip4_address_del (NULL, EX, ifindex, addr, IP4_PLEN, addr_peer);
 	accept_signal (address_removed);
 	g_assert (!nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr_peer));
 	g_assert (nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, IP4_PLEN, addr_peer2));
@@ -308,7 +308,7 @@ test_ip4_address_peer_zero (void)
 	in_addr_t addr, addr_peer;
 	guint32 lifetime = 2000;
 	guint32 preferred = 1000;
-	const int plen = 24;
+	const gint8 plen = 24;
 	const char *label = NULL;
 	in_addr_t peers[3], r_peers[3];
 	int i;
@@ -328,7 +328,7 @@ test_ip4_address_peer_zero (void)
 	for (i = 0; i < G_N_ELEMENTS (peers); i++) {
 		g_assert (!nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, plen, r_peers[i]));
 
-		nmtstp_ip4_address_add (EX, ifindex, addr, plen, r_peers[i], lifetime, preferred, 0, label);
+		nmtstp_ip4_address_add (NULL, EX, ifindex, addr, plen, r_peers[i], lifetime, preferred, 0, label);
 
 		addrs = nm_platform_ip4_address_get_all (NM_PLATFORM_GET, ifindex);
 		g_assert (addrs);
@@ -343,7 +343,7 @@ test_ip4_address_peer_zero (void)
 	for (i = 0; i < G_N_ELEMENTS (peers); i++) {
 		g_assert (nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, addr, plen, r_peers[i]));
 
-		nmtstp_ip4_address_del (EX, ifindex, addr, plen, r_peers[i]);
+		nmtstp_ip4_address_del (NULL, EX, ifindex, addr, plen, r_peers[i]);
 
 		addrs = nm_platform_ip4_address_get_all (NM_PLATFORM_GET, ifindex);
 		g_assert (addrs);
@@ -355,7 +355,7 @@ test_ip4_address_peer_zero (void)
 /*****************************************************************************/
 
 void
-init_tests (int *argc, char ***argv)
+_nmtstp_init_tests (int *argc, char ***argv)
 {
 	nmtst_init_with_logging (argc, argv, NULL, "ALL");
 }
@@ -412,7 +412,7 @@ _g_test_add_func (const char *testpath,
 }
 
 void
-setup_tests (void)
+_nmtstp_setup_tests (void)
 {
 	_g_test_add_func ("/address/ipv4/general", test_ip4_address_general);
 	_g_test_add_func ("/address/ipv6/general", test_ip6_address_general);
diff --git a/src/platform/tests/test-cleanup.c b/src/platform/tests/test-cleanup.c
index 4036daad..3b52487a 100644
--- a/src/platform/tests/test-cleanup.c
+++ b/src/platform/tests/test-cleanup.c
@@ -107,13 +107,13 @@ test_cleanup_internal (void)
 }
 
 void
-init_tests (int *argc, char ***argv)
+_nmtstp_init_tests (int *argc, char ***argv)
 {
 	nmtst_init_with_logging (argc, argv, NULL, "ALL");
 }
 
 void
-setup_tests (void)
+_nmtstp_setup_tests (void)
 {
 	nm_platform_link_delete (NM_PLATFORM_GET, nm_platform_link_get_ifindex (NM_PLATFORM_GET, DEVICE_NAME));
 	g_assert (!nm_platform_link_get_by_ifname (NM_PLATFORM_GET, DEVICE_NAME));
diff --git a/src/platform/tests/test-common.c b/src/platform/tests/test-common.c
index e9fffe90..b1947a6d 100644
--- a/src/platform/tests/test-common.c
+++ b/src/platform/tests/test-common.c
@@ -27,11 +27,11 @@
 
 #include "test-common.h"
 
-#include "nm-test-utils.h"
-
 #define SIGNAL_DATA_FMT "'%s-%s' ifindex %d%s%s%s (%d times received)"
 #define SIGNAL_DATA_ARG(data) (data)->name, nm_platform_signal_change_type_to_string ((data)->change_type), (data)->ifindex, (data)->ifname ? " ifname '" : "", (data)->ifname ? (data)->ifname : "", (data)->ifname ? "'" : "", (data)->received_count
 
+/*****************************************************************************/
+
 gboolean
 nmtstp_is_root_test (void)
 {
@@ -47,6 +47,20 @@ nmtstp_is_sysfs_writable (void)
 	       || (access ("/sys/devices", W_OK) == 0);
 }
 
+static void
+_init_platform (NMPlatform **platform, gboolean external_command)
+{
+	g_assert (platform);
+	if (!*platform)
+		*platform = NM_PLATFORM_GET;
+	g_assert (NM_IS_PLATFORM (*platform));
+
+	if (external_command)
+		g_assert (NM_IS_LINUX_PLATFORM (*platform));
+}
+
+/*****************************************************************************/
+
 SignalData *
 add_signal_full (const char *name, NMPlatformSignalChangeType change_type, GCallback callback, int ifindex, const char *ifname)
 {
@@ -180,8 +194,10 @@ link_callback (NMPlatform *platform, NMPObjectType obj_type, int ifindex, NMPlat
 		g_error ("Added/changed link not found in the local cache.");
 }
 
+/*****************************************************************************/
+
 gboolean
-ip4_route_exists (const char *ifname, guint32 network, int plen, guint32 metric)
+nmtstp_ip4_route_exists (const char *ifname, guint32 network, int plen, guint32 metric)
 {
 	gs_free char *arg_network = NULL;
 	const char *argv[] = {
@@ -205,7 +221,7 @@ ip4_route_exists (const char *ifname, guint32 network, int plen, guint32 metric)
 	g_assert (!strstr (ifname, " metric "));
 	g_assert (plen >= 0 && plen <= 32);
 
-	if (!NM_IS_LINUX_PLATFORM (nm_platform_get ())) {
+	if (!nmtstp_is_root_test ()) {
 		/* If we don't test against linux-platform, we don't actually configure any
 		 * routes in the system. */
 		return -1;
@@ -259,15 +275,17 @@ ip4_route_exists (const char *ifname, guint32 network, int plen, guint32 metric)
 }
 
 void
-_assert_ip4_route_exists (const char *file, guint line, const char *func, gboolean exists, const char *ifname, guint32 network, int plen, guint32 metric)
+_nmtstp_assert_ip4_route_exists (const char *file, guint line, const char *func, NMPlatform *platform, gboolean exists, const char *ifname, guint32 network, int plen, guint32 metric)
 {
 	int ifindex;
 	gboolean exists_checked;
 
+	_init_platform (&platform, FALSE);
+
 	/* Check for existance of the route by spawning iproute2. Do this because platform
 	 * code might be entirely borked, but we expect ip-route to give a correct result.
 	 * If the ip command cannot be found, we accept this as success. */
-	exists_checked = ip4_route_exists (ifname, network, plen, metric);
+	exists_checked = nmtstp_ip4_route_exists (ifname, network, plen, metric);
 	if (exists_checked != -1 && !exists_checked != !exists) {
 		g_error ("[%s:%u] %s(): We expect the ip4 route %s/%d metric %u %s, but it %s",
 		         file, line, func,
@@ -276,9 +294,9 @@ _assert_ip4_route_exists (const char *file, guint line, const char *func, gboole
 		         exists ? "doesn't" : "does");
 	}
 
-	ifindex = nm_platform_link_get_ifindex (NM_PLATFORM_GET, ifname);
+	ifindex = nm_platform_link_get_ifindex (platform, ifname);
 	g_assert (ifindex > 0);
-	if (!nm_platform_ip4_route_get (NM_PLATFORM_GET, ifindex, network, plen, metric) != !exists) {
+	if (!nm_platform_ip4_route_get (platform, ifindex, network, plen, metric) != !exists) {
 		g_error ("[%s:%u] %s(): The ip4 route %s/%d metric %u %s, but platform thinks %s",
 		         file, line, func,
 		         nm_utils_inet4_ntop (network, NULL), plen, metric,
@@ -287,6 +305,8 @@ _assert_ip4_route_exists (const char *file, guint line, const char *func, gboole
 	}
 }
 
+/*****************************************************************************/
+
 int
 nmtstp_run_command (const char *format, ...)
 {
@@ -309,7 +329,7 @@ nmtstp_run_command (const char *format, ...)
 
 typedef struct {
 	GMainLoop *loop;
-	gboolean timeout;
+	guint signal_counts;
 	guint id;
 } WaitForSignalData;
 
@@ -323,6 +343,8 @@ _wait_for_signal_cb (NMPlatform *platform,
 {
 	WaitForSignalData *data = user_data;
 
+	data->signal_counts++;
+	nm_clear_g_source (&data->id);
 	g_main_loop_quit (data->loop);
 }
 
@@ -331,20 +353,19 @@ _wait_for_signal_timeout (gpointer user_data)
 {
 	WaitForSignalData *data = user_data;
 
-	data->timeout = TRUE;
+	g_assert (data->id);
 	data->id = 0;
 	g_main_loop_quit (data->loop);
 	return G_SOURCE_REMOVE;
 }
 
-gboolean
+guint
 nmtstp_wait_for_signal (NMPlatform *platform, guint timeout_ms)
 {
 	WaitForSignalData data = { 0 };
 	gulong id_link, id_ip4_address, id_ip6_address, id_ip4_route, id_ip6_route;
 
-	if (!platform)
-		platform = NM_PLATFORM_GET;
+	_init_platform (&platform, FALSE);
 
 	data.loop = g_main_loop_new (NULL, FALSE);
 
@@ -359,33 +380,34 @@ nmtstp_wait_for_signal (NMPlatform *platform, guint timeout_ms)
 
 	g_main_loop_run (data.loop);
 
+	g_assert (!data.id);
 	g_assert (nm_clear_g_signal_handler (platform, &id_link));
 	g_assert (nm_clear_g_signal_handler (platform, &id_ip4_address));
 	g_assert (nm_clear_g_signal_handler (platform, &id_ip6_address));
 	g_assert (nm_clear_g_signal_handler (platform, &id_ip4_route));
 	g_assert (nm_clear_g_signal_handler (platform, &id_ip6_route));
 
-	if (nm_clear_g_source (&data.id))
-		g_assert (timeout_ms != 0 && !data.timeout);
-
 	g_clear_pointer (&data.loop, g_main_loop_unref);
 
-	return !data.timeout;
+	/* return the number of signals, or 0 if timeout was reached .*/
+	return data.signal_counts;
 }
 
-gboolean
+guint
 nmtstp_wait_for_signal_until (NMPlatform *platform, gint64 until_ms)
 {
 	gint64 now;
+	guint signal_counts;
 
 	while (TRUE) {
 		now = nm_utils_get_monotonic_timestamp_ms ();
 
 		if (until_ms < now)
-			return FALSE;
+			return 0;
 
-		if (nmtstp_wait_for_signal (platform, MAX (1, until_ms - now)))
-			return TRUE;
+		signal_counts = nmtstp_wait_for_signal (platform, MAX (1, until_ms - now));
+		if (signal_counts)
+			return signal_counts;
 	}
 }
 
@@ -401,10 +423,12 @@ nmtstp_wait_for_link_until (NMPlatform *platform, const char *ifname, NMLinkType
 	const NMPlatformLink *plink;
 	gint64 now;
 
+	_init_platform (&platform, FALSE);
+
 	while (TRUE) {
 		now = nm_utils_get_monotonic_timestamp_ms ();
 
-		plink = nm_platform_link_get_by_ifname (platform ?: NM_PLATFORM_GET, ifname);
+		plink = nm_platform_link_get_by_ifname (platform, ifname);
 		if (   plink
 		    && (expected_link_type == NM_LINK_TYPE_NONE || plink->type == expected_link_type))
 			return plink;
@@ -432,6 +456,8 @@ nmtstp_assert_wait_for_link_until (NMPlatform *platform, const char *ifname, NML
 	return plink;
 }
 
+/*****************************************************************************/
+
 int
 nmtstp_run_command_check_external_global (void)
 {
@@ -460,6 +486,8 @@ nmtstp_run_command_check_external (int external_command)
 	return (nmtst_get_rand_int () % 2) == 0;
 }
 
+/*****************************************************************************/
+
 #define CHECK_LIFETIME_MAX_DIFF    2
 
 gboolean
@@ -556,8 +584,11 @@ nmtstp_ip_address_assert_lifetime (const NMPlatformIPAddress *addr,
 	g_assert (nmtstp_ip_address_check_lifetime (addr, n, expected_lifetime, expected_preferred));
 }
 
+/*****************************************************************************/
+
 static void
-_ip_address_add (gboolean external_command,
+_ip_address_add (NMPlatform *platform,
+                 gboolean external_command,
                  gboolean is_v4,
                  int ifindex,
                  const NMIPAddr *address,
@@ -572,6 +603,8 @@ _ip_address_add (gboolean external_command,
 
 	external_command = nmtstp_run_command_check_external (external_command);
 
+	_init_platform (&platform, external_command);
+
 	if (external_command) {
 		const char *ifname;
 		gs_free char *s_valid = NULL;
@@ -579,7 +612,7 @@ _ip_address_add (gboolean external_command,
 		gs_free char *s_label = NULL;
 		char b1[NM_UTILS_INET_ADDRSTRLEN], b2[NM_UTILS_INET_ADDRSTRLEN];
 
-		ifname = nm_platform_link_get_name (NM_PLATFORM_GET, ifindex);
+		ifname = nm_platform_link_get_name (platform, ifindex);
 		g_assert (ifname);
 
 		if (lifetime != NM_PLATFORM_LIFETIME_PERMANENT)
@@ -628,7 +661,7 @@ _ip_address_add (gboolean external_command,
 		gboolean success;
 
 		if (is_v4) {
-			success = nm_platform_ip4_address_add (NM_PLATFORM_GET,
+			success = nm_platform_ip4_address_add (platform,
 			                                       ifindex,
 			                                       address->addr4,
 			                                       plen,
@@ -639,7 +672,7 @@ _ip_address_add (gboolean external_command,
 			                                       label);
 		} else {
 			g_assert (label == NULL);
-			success = nm_platform_ip6_address_add (NM_PLATFORM_GET,
+			success = nm_platform_ip6_address_add (platform,
 			                                       ifindex,
 			                                       address->addr6,
 			                                       plen,
@@ -656,14 +689,14 @@ _ip_address_add (gboolean external_command,
 	do {
 
 		if (external_command)
-			nm_platform_process_events (NM_PLATFORM_GET);
+			nm_platform_process_events (platform);
 
 		/* let's wait until we see the address as we added it. */
 		if (is_v4) {
 			const NMPlatformIP4Address *a;
 
 			g_assert (flags == 0);
-			a = nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, address->addr4, plen, peer_address->addr4);
+			a = nm_platform_ip4_address_get (platform, ifindex, address->addr4, plen, peer_address->addr4);
 			if (   a
 			    && a->peer_address == peer_address->addr4
 			    && nmtstp_ip_address_check_lifetime ((NMPlatformIPAddress*) a, -1, lifetime, preferred)
@@ -675,7 +708,7 @@ _ip_address_add (gboolean external_command,
 			g_assert (label == NULL);
 			g_assert (flags == 0);
 
-			a = nm_platform_ip6_address_get (NM_PLATFORM_GET, ifindex, address->addr6, plen);
+			a = nm_platform_ip6_address_get (platform, ifindex, address->addr6, plen);
 			if (   a
 			    && !memcmp (nm_platform_ip6_address_get_peer (a),
 			                (IN6_IS_ADDR_UNSPECIFIED (&peer_address->addr6) || IN6_ARE_ADDR_EQUAL (&address->addr6, &peer_address->addr6))
@@ -688,10 +721,188 @@ _ip_address_add (gboolean external_command,
 		/* for internal command, we expect not to reach this line.*/
 		g_assert (external_command);
 
-		g_assert (nmtstp_wait_for_signal_until (NM_PLATFORM_GET, end_time));
+		nmtstp_assert_wait_for_signal_until (platform, end_time);
+	} while (TRUE);
+}
+
+void
+nmtstp_ip4_address_add (NMPlatform *platform,
+                        gboolean external_command,
+                        int ifindex,
+                        in_addr_t address,
+                        int plen,
+                        in_addr_t peer_address,
+                        guint32 lifetime,
+                        guint32 preferred,
+                        guint32 flags,
+                        const char *label)
+{
+	_ip_address_add (platform,
+	                 external_command,
+	                 TRUE,
+	                 ifindex,
+	                 (NMIPAddr *) &address,
+	                 plen,
+	                 (NMIPAddr *) &peer_address,
+	                 lifetime,
+	                 preferred,
+	                 flags,
+	                 label);
+}
+
+void
+nmtstp_ip6_address_add (NMPlatform *platform,
+                        gboolean external_command,
+                        int ifindex,
+                        struct in6_addr address,
+                        int plen,
+                        struct in6_addr peer_address,
+                        guint32 lifetime,
+                        guint32 preferred,
+                        guint32 flags)
+{
+	_ip_address_add (platform,
+	                 external_command,
+	                 FALSE,
+	                 ifindex,
+	                 (NMIPAddr *) &address,
+	                 plen,
+	                 (NMIPAddr *) &peer_address,
+	                 lifetime,
+	                 preferred,
+	                 flags,
+	                 NULL);
+}
+
+/*****************************************************************************/
+
+static void
+_ip_address_del (NMPlatform *platform,
+                 gboolean external_command,
+                 gboolean is_v4,
+                 int ifindex,
+                 const NMIPAddr *address,
+                 int plen,
+                 const NMIPAddr *peer_address)
+{
+	gint64 end_time;
+
+	external_command = nmtstp_run_command_check_external (external_command);
+
+	_init_platform (&platform, external_command);
+
+	if (external_command) {
+		const char *ifname;
+		char b1[NM_UTILS_INET_ADDRSTRLEN], b2[NM_UTILS_INET_ADDRSTRLEN];
+		int success;
+		gboolean had_address;
+
+		ifname = nm_platform_link_get_name (platform, ifindex);
+		g_assert (ifname);
+
+		/* let's wait until we see the address as we added it. */
+		if (is_v4)
+			had_address = !!nm_platform_ip4_address_get (platform, ifindex, address->addr4, plen, peer_address->addr4);
+		else
+			had_address = !!nm_platform_ip6_address_get (platform, ifindex, address->addr6, plen);
+
+		if (is_v4) {
+			success = nmtstp_run_command ("ip address delete %s%s%s/%d dev %s",
+			                              nm_utils_inet4_ntop (address->addr4, b1),
+			                              peer_address->addr4 != address->addr4 ? " peer " : "",
+			                              peer_address->addr4 != address->addr4 ? nm_utils_inet4_ntop (peer_address->addr4, b2) : "",
+			                              plen,
+			                              ifname);
+		} else {
+			g_assert (!peer_address);
+			success = nmtstp_run_command ("ip address delete %s/%d dev %s",
+			                              nm_utils_inet6_ntop (&address->addr6, b1),
+			                              plen,
+			                              ifname);
+		}
+		g_assert (success == 0 || !had_address);
+	} else {
+		gboolean success;
+
+		if (is_v4) {
+			success = nm_platform_ip4_address_delete (platform,
+			                                          ifindex,
+			                                          address->addr4,
+			                                          plen,
+			                                          peer_address->addr4);
+		} else {
+			g_assert (!peer_address);
+			success = nm_platform_ip6_address_delete (platform,
+			                                          ifindex,
+			                                          address->addr6,
+			                                          plen);
+		}
+		g_assert (success);
+	}
+
+	/* Let's wait until we get the result */
+	end_time = nm_utils_get_monotonic_timestamp_ms () + 250;
+	do {
+		if (external_command)
+			nm_platform_process_events (platform);
+
+		/* let's wait until we see the address as we added it. */
+		if (is_v4) {
+			const NMPlatformIP4Address *a;
+
+			a = nm_platform_ip4_address_get (platform, ifindex, address->addr4, plen, peer_address->addr4);
+			if (!a)
+				break;
+		} else {
+			const NMPlatformIP6Address *a;
+
+			a = nm_platform_ip6_address_get (platform, ifindex, address->addr6, plen);
+			if (!a)
+				break;
+		}
+
+		/* for internal command, we expect not to reach this line.*/
+		g_assert (external_command);
+
+		nmtstp_assert_wait_for_signal_until (platform, end_time);
 	} while (TRUE);
 }
 
+void
+nmtstp_ip4_address_del (NMPlatform *platform,
+                        gboolean external_command,
+                        int ifindex,
+                        in_addr_t address,
+                        int plen,
+                        in_addr_t peer_address)
+{
+	_ip_address_del (platform,
+	                 external_command,
+	                 TRUE,
+	                 ifindex,
+	                 (NMIPAddr *) &address,
+	                 plen,
+	                 (NMIPAddr *) &peer_address);
+}
+
+void
+nmtstp_ip6_address_del (NMPlatform *platform,
+                        gboolean external_command,
+                        int ifindex,
+                        struct in6_addr address,
+                        int plen)
+{
+	_ip_address_del (platform,
+	                 external_command,
+	                 FALSE,
+	                 ifindex,
+	                 (NMIPAddr *) &address,
+	                 plen,
+	                 NULL);
+}
+
+/*****************************************************************************/
+
 #define _assert_pllink(platform, success, pllink, name, type) \
 	G_STMT_START { \
 		const NMPlatformLink *_pllink = (pllink); \
@@ -706,7 +917,8 @@ _ip_address_add (gboolean external_command,
 	} G_STMT_END
 
 const NMPlatformLink *
-nmtstp_link_dummy_add (gboolean external_command,
+nmtstp_link_dummy_add (NMPlatform *platform,
+                       gboolean external_command,
                        const char *name)
 {
 	const NMPlatformLink *pllink = NULL;
@@ -716,21 +928,24 @@ nmtstp_link_dummy_add (gboolean external_command,
 
 	external_command = nmtstp_run_command_check_external (external_command);
 
+	_init_platform (&platform, external_command);
+
 	if (external_command) {
 		success = !nmtstp_run_command ("ip link add %s type dummy",
 		                                name);
 		if (success)
-			pllink = nmtstp_assert_wait_for_link (NM_PLATFORM_GET, name, NM_LINK_TYPE_DUMMY, 100);
+			pllink = nmtstp_assert_wait_for_link (platform, name, NM_LINK_TYPE_DUMMY, 100);
 	} else
-		success = nm_platform_link_dummy_add (NM_PLATFORM_GET, name, &pllink) == NM_PLATFORM_ERROR_SUCCESS;
+		success = nm_platform_link_dummy_add (platform, name, &pllink) == NM_PLATFORM_ERROR_SUCCESS;
 
 	g_assert (success);
-	_assert_pllink (NM_PLATFORM_GET, success, pllink, name, NM_LINK_TYPE_DUMMY);
+	_assert_pllink (platform, success, pllink, name, NM_LINK_TYPE_DUMMY);
 	return pllink;
 }
 
 const NMPlatformLink *
-nmtstp_link_gre_add (gboolean external_command,
+nmtstp_link_gre_add (NMPlatform *platform,
+                     gboolean external_command,
                      const char *name,
                      const NMPlatformLnkGre *lnk)
 {
@@ -742,11 +957,13 @@ nmtstp_link_gre_add (gboolean external_command,
 
 	external_command = nmtstp_run_command_check_external (external_command);
 
+	_init_platform (&platform, external_command);
+
 	if (external_command) {
 		gs_free char *dev = NULL;
 
 		if (lnk->parent_ifindex)
-			dev = g_strdup_printf ("dev %s", nm_platform_link_get_name (NM_PLATFORM_GET, lnk->parent_ifindex));
+			dev = g_strdup_printf ("dev %s", nm_platform_link_get_name (platform, lnk->parent_ifindex));
 
 		success = !nmtstp_run_command ("ip tunnel add %s mode gre %s local %s remote %s ttl %u tos %02x %s",
 		                                name,
@@ -757,17 +974,18 @@ nmtstp_link_gre_add (gboolean external_command,
 		                                lnk->tos,
 		                                lnk->path_mtu_discovery ? "pmtudisc" : "nopmtudisc");
 		if (success)
-			pllink = nmtstp_assert_wait_for_link (NM_PLATFORM_GET, name, NM_LINK_TYPE_GRE, 100);
+			pllink = nmtstp_assert_wait_for_link (platform, name, NM_LINK_TYPE_GRE, 100);
 	} else
-		success = nm_platform_link_gre_add (NM_PLATFORM_GET, name, lnk, &pllink) == NM_PLATFORM_ERROR_SUCCESS;
+		success = nm_platform_link_gre_add (platform, name, lnk, &pllink) == NM_PLATFORM_ERROR_SUCCESS;
 
-	_assert_pllink (NM_PLATFORM_GET, success, pllink, name, NM_LINK_TYPE_GRE);
+	_assert_pllink (platform, success, pllink, name, NM_LINK_TYPE_GRE);
 
 	return pllink;
 }
 
 const NMPlatformLink *
-nmtstp_link_ip6tnl_add (gboolean external_command,
+nmtstp_link_ip6tnl_add (NMPlatform *platform,
+                        gboolean external_command,
                         const char *name,
                         const NMPlatformLnkIp6Tnl *lnk)
 {
@@ -779,12 +997,14 @@ nmtstp_link_ip6tnl_add (gboolean external_command,
 
 	external_command = nmtstp_run_command_check_external (external_command);
 
+	_init_platform (&platform, external_command);
+
 	if (external_command) {
 		gs_free char *dev = NULL;
 		const char *mode;
 
 		if (lnk->parent_ifindex)
-			dev = g_strdup_printf ("dev %s", nm_platform_link_get_name (NM_PLATFORM_GET, lnk->parent_ifindex));
+			dev = g_strdup_printf ("dev %s", nm_platform_link_get_name (platform, lnk->parent_ifindex));
 
 		switch (lnk->proto) {
 		case IPPROTO_IPIP:
@@ -808,17 +1028,18 @@ nmtstp_link_ip6tnl_add (gboolean external_command,
 		                                lnk->encap_limit,
 		                                lnk->flow_label);
 		if (success)
-			pllink = nmtstp_assert_wait_for_link (NM_PLATFORM_GET, name, NM_LINK_TYPE_IP6TNL, 100);
+			pllink = nmtstp_assert_wait_for_link (platform, name, NM_LINK_TYPE_IP6TNL, 100);
 	} else
-		success = nm_platform_link_ip6tnl_add (NM_PLATFORM_GET, name, lnk, &pllink) == NM_PLATFORM_ERROR_SUCCESS;
+		success = nm_platform_link_ip6tnl_add (platform, name, lnk, &pllink) == NM_PLATFORM_ERROR_SUCCESS;
 
-	_assert_pllink (NM_PLATFORM_GET, success, pllink, name, NM_LINK_TYPE_IP6TNL);
+	_assert_pllink (platform, success, pllink, name, NM_LINK_TYPE_IP6TNL);
 
 	return pllink;
 }
 
 const NMPlatformLink *
-nmtstp_link_ipip_add (gboolean external_command,
+nmtstp_link_ipip_add (NMPlatform *platform,
+                      gboolean external_command,
                       const char *name,
                       const NMPlatformLnkIpIp *lnk)
 {
@@ -830,11 +1051,13 @@ nmtstp_link_ipip_add (gboolean external_command,
 
 	external_command = nmtstp_run_command_check_external (external_command);
 
+	_init_platform (&platform, external_command);
+
 	if (external_command) {
 		gs_free char *dev = NULL;
 
 		if (lnk->parent_ifindex)
-			dev = g_strdup_printf ("dev %s", nm_platform_link_get_name (NM_PLATFORM_GET, lnk->parent_ifindex));
+			dev = g_strdup_printf ("dev %s", nm_platform_link_get_name (platform, lnk->parent_ifindex));
 
 		success = !nmtstp_run_command ("ip tunnel add %s mode ipip %s local %s remote %s ttl %u tos %02x %s",
 		                                name,
@@ -845,17 +1068,18 @@ nmtstp_link_ipip_add (gboolean external_command,
 		                                lnk->tos,
 		                                lnk->path_mtu_discovery ? "pmtudisc" : "nopmtudisc");
 		if (success)
-			pllink = nmtstp_assert_wait_for_link (NM_PLATFORM_GET, name, NM_LINK_TYPE_IPIP, 100);
+			pllink = nmtstp_assert_wait_for_link (platform, name, NM_LINK_TYPE_IPIP, 100);
 	} else
-		success = nm_platform_link_ipip_add (NM_PLATFORM_GET, name, lnk, &pllink) == NM_PLATFORM_ERROR_SUCCESS;
+		success = nm_platform_link_ipip_add (platform, name, lnk, &pllink) == NM_PLATFORM_ERROR_SUCCESS;
 
-	_assert_pllink (NM_PLATFORM_GET, success, pllink, name, NM_LINK_TYPE_IPIP);
+	_assert_pllink (platform, success, pllink, name, NM_LINK_TYPE_IPIP);
 
 	return pllink;
 }
 
 const NMPlatformLink *
-nmtstp_link_macvlan_add (gboolean external_command,
+nmtstp_link_macvlan_add (NMPlatform *platform,
+                         gboolean external_command,
                          const char *name,
                          int parent,
                          const NMPlatformLnkMacvlan *lnk)
@@ -868,6 +1092,8 @@ nmtstp_link_macvlan_add (gboolean external_command,
 
 	external_command = nmtstp_run_command_check_external (external_command);
 
+	_init_platform (&platform, external_command);
+
 	link_type = lnk->tap ? NM_LINK_TYPE_MACVTAP : NM_LINK_TYPE_MACVLAN;
 
 	if (external_command) {
@@ -879,7 +1105,7 @@ nmtstp_link_macvlan_add (gboolean external_command,
 				[MACVLAN_MODE_PASSTHRU] = "passthru",
 		};
 
-		dev = nm_platform_link_get_name (NM_PLATFORM_GET, parent);
+		dev = nm_platform_link_get_name (platform, parent);
 		g_assert (dev);
 		g_assert_cmpint (lnk->mode, <, G_N_ELEMENTS (modes));
 
@@ -890,17 +1116,18 @@ nmtstp_link_macvlan_add (gboolean external_command,
 		                                modes[lnk->mode],
 		                                lnk->no_promisc ? "nopromisc" : "");
 		if (success)
-			pllink = nmtstp_assert_wait_for_link (NM_PLATFORM_GET, name, link_type, 100);
+			pllink = nmtstp_assert_wait_for_link (platform, name, link_type, 100);
 	} else
-		success = nm_platform_link_macvlan_add (NM_PLATFORM_GET, name, parent, lnk, &pllink) == NM_PLATFORM_ERROR_SUCCESS;
+		success = nm_platform_link_macvlan_add (platform, name, parent, lnk, &pllink) == NM_PLATFORM_ERROR_SUCCESS;
 
-	_assert_pllink (NM_PLATFORM_GET, success, pllink, name, link_type);
+	_assert_pllink (platform, success, pllink, name, link_type);
 
 	return pllink;
 }
 
 const NMPlatformLink *
-nmtstp_link_sit_add (gboolean external_command,
+nmtstp_link_sit_add (NMPlatform *platform,
+                     gboolean external_command,
                      const char *name,
                      const NMPlatformLnkSit *lnk)
 {
@@ -912,13 +1139,15 @@ nmtstp_link_sit_add (gboolean external_command,
 
 	external_command = nmtstp_run_command_check_external (external_command);
 
+	_init_platform (&platform, external_command);
+
 	if (external_command) {
 		const char *dev = "";
 
 		if (lnk->parent_ifindex) {
 			const char *parent_name;
 
-			parent_name = nm_platform_link_get_name (NM_PLATFORM_GET, lnk->parent_ifindex);
+			parent_name = nm_platform_link_get_name (platform, lnk->parent_ifindex);
 			g_assert (parent_name);
 			dev = nm_sprintf_bufa (100, " dev %s", parent_name);
 		}
@@ -932,17 +1161,18 @@ nmtstp_link_sit_add (gboolean external_command,
 		                                lnk->tos,
 		                                lnk->path_mtu_discovery ? "pmtudisc" : "nopmtudisc");
 		if (success)
-			pllink = nmtstp_assert_wait_for_link (NM_PLATFORM_GET, name, NM_LINK_TYPE_SIT, 100);
+			pllink = nmtstp_assert_wait_for_link (platform, name, NM_LINK_TYPE_SIT, 100);
 	} else
-		success = nm_platform_link_sit_add (NM_PLATFORM_GET, name, lnk, &pllink) == NM_PLATFORM_ERROR_SUCCESS;
+		success = nm_platform_link_sit_add (platform, name, lnk, &pllink) == NM_PLATFORM_ERROR_SUCCESS;
 
-	_assert_pllink (NM_PLATFORM_GET, success, pllink, name, NM_LINK_TYPE_SIT);
+	_assert_pllink (platform, success, pllink, name, NM_LINK_TYPE_SIT);
 
 	return pllink;
 }
 
 const NMPlatformLink *
-nmtstp_link_vxlan_add (gboolean external_command,
+nmtstp_link_vxlan_add (NMPlatform *platform,
+                       gboolean external_command,
                        const char *name,
                        const NMPlatformLnkVxlan *lnk)
 {
@@ -954,12 +1184,14 @@ nmtstp_link_vxlan_add (gboolean external_command,
 
 	external_command = nmtstp_run_command_check_external (external_command);
 
+	_init_platform (&platform, external_command);
+
 	if (external_command) {
 		gs_free char *dev = NULL;
 		gs_free char *local = NULL, *remote = NULL;
 
 		if (lnk->parent_ifindex)
-			dev = g_strdup_printf ("dev %s", nm_platform_link_get_name (NM_PLATFORM_GET, lnk->parent_ifindex));
+			dev = g_strdup_printf ("dev %s", nm_platform_link_get_name (platform, lnk->parent_ifindex));
 
 		if (lnk->local)
 			local = g_strdup_printf ("%s", nm_utils_inet4_ntop (lnk->local, NULL));
@@ -985,12 +1217,12 @@ nmtstp_link_vxlan_add (gboolean external_command,
 		/* Older versions of iproute2 don't support adding vxlan devices.
 		 * On failure, fallback to using platform code. */
 		if (err == 0)
-			pllink = nmtstp_assert_wait_for_link (NM_PLATFORM_GET, name, NM_LINK_TYPE_VXLAN, 100);
+			pllink = nmtstp_assert_wait_for_link (platform, name, NM_LINK_TYPE_VXLAN, 100);
 		else
 			_LOGI ("Adding vxlan device via iproute2 failed. Assume iproute2 is not up to the task.");
 	}
 	if (!pllink) {
-		plerr = nm_platform_link_vxlan_add (NM_PLATFORM_GET, name, lnk, &pllink);
+		plerr = nm_platform_link_vxlan_add (platform, name, lnk, &pllink);
 		g_assert_cmpint (plerr, ==, NM_PLATFORM_ERROR_SUCCESS);
 		g_assert (pllink);
 	}
@@ -1000,168 +1232,7 @@ nmtstp_link_vxlan_add (gboolean external_command,
 	return pllink;
 }
 
-void
-nmtstp_ip4_address_add (gboolean external_command,
-                        int ifindex,
-                        in_addr_t address,
-                        int plen,
-                        in_addr_t peer_address,
-                        guint32 lifetime,
-                        guint32 preferred,
-                        guint32 flags,
-                        const char *label)
-{
-	_ip_address_add (external_command,
-	                 TRUE,
-	                 ifindex,
-	                 (NMIPAddr *) &address,
-	                 plen,
-	                 (NMIPAddr *) &peer_address,
-	                 lifetime,
-	                 preferred,
-	                 flags,
-	                 label);
-}
-
-void
-nmtstp_ip6_address_add (gboolean external_command,
-                        int ifindex,
-                        struct in6_addr address,
-                        int plen,
-                        struct in6_addr peer_address,
-                        guint32 lifetime,
-                        guint32 preferred,
-                        guint32 flags)
-{
-	_ip_address_add (external_command,
-	                 FALSE,
-	                 ifindex,
-	                 (NMIPAddr *) &address,
-	                 plen,
-	                 (NMIPAddr *) &peer_address,
-	                 lifetime,
-	                 preferred,
-	                 flags,
-	                 NULL);
-}
-
-static void
-_ip_address_del (gboolean external_command,
-                 gboolean is_v4,
-                 int ifindex,
-                 const NMIPAddr *address,
-                 int plen,
-                 const NMIPAddr *peer_address)
-{
-	gint64 end_time;
-
-	external_command = nmtstp_run_command_check_external (external_command);
-
-	if (external_command) {
-		const char *ifname;
-		char b1[NM_UTILS_INET_ADDRSTRLEN], b2[NM_UTILS_INET_ADDRSTRLEN];
-		int success;
-		gboolean had_address;
-
-		ifname = nm_platform_link_get_name (NM_PLATFORM_GET, ifindex);
-		g_assert (ifname);
-
-		/* let's wait until we see the address as we added it. */
-		if (is_v4)
-			had_address = !!nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, address->addr4, plen, peer_address->addr4);
-		else
-			had_address = !!nm_platform_ip6_address_get (NM_PLATFORM_GET, ifindex, address->addr6, plen);
-
-		if (is_v4) {
-			success = nmtstp_run_command ("ip address delete %s%s%s/%d dev %s",
-			                              nm_utils_inet4_ntop (address->addr4, b1),
-			                              peer_address->addr4 != address->addr4 ? " peer " : "",
-			                              peer_address->addr4 != address->addr4 ? nm_utils_inet4_ntop (peer_address->addr4, b2) : "",
-			                              plen,
-			                              ifname);
-		} else {
-			g_assert (!peer_address);
-			success = nmtstp_run_command ("ip address delete %s/%d dev %s",
-			                              nm_utils_inet6_ntop (&address->addr6, b1),
-			                              plen,
-			                              ifname);
-		}
-		g_assert (success == 0 || !had_address);
-	} else {
-		gboolean success;
-
-		if (is_v4) {
-			success = nm_platform_ip4_address_delete (NM_PLATFORM_GET,
-			                                          ifindex,
-			                                          address->addr4,
-			                                          plen,
-			                                          peer_address->addr4);
-		} else {
-			g_assert (!peer_address);
-			success = nm_platform_ip6_address_delete (NM_PLATFORM_GET,
-			                                          ifindex,
-			                                          address->addr6,
-			                                          plen);
-		}
-		g_assert (success);
-	}
-
-	/* Let's wait until we get the result */
-	end_time = nm_utils_get_monotonic_timestamp_ms () + 250;
-	do {
-		if (external_command)
-			nm_platform_process_events (NM_PLATFORM_GET);
-
-		/* let's wait until we see the address as we added it. */
-		if (is_v4) {
-			const NMPlatformIP4Address *a;
-
-			a = nm_platform_ip4_address_get (NM_PLATFORM_GET, ifindex, address->addr4, plen, peer_address->addr4);
-			if (!a)
-				break;
-		} else {
-			const NMPlatformIP6Address *a;
-
-			a = nm_platform_ip6_address_get (NM_PLATFORM_GET, ifindex, address->addr6, plen);
-			if (!a)
-				break;
-		}
-
-		/* for internal command, we expect not to reach this line.*/
-		g_assert (external_command);
-
-		g_assert (nmtstp_wait_for_signal_until (NM_PLATFORM_GET, end_time));
-	} while (TRUE);
-}
-
-void
-nmtstp_ip4_address_del (gboolean external_command,
-                        int ifindex,
-                        in_addr_t address,
-                        int plen,
-                        in_addr_t peer_address)
-{
-	_ip_address_del (external_command,
-	                 TRUE,
-	                 ifindex,
-	                 (NMIPAddr *) &address,
-	                 plen,
-	                 (NMIPAddr *) &peer_address);
-}
-
-void
-nmtstp_ip6_address_del (gboolean external_command,
-                        int ifindex,
-                        struct in6_addr address,
-                        int plen)
-{
-	_ip_address_del (external_command,
-	                 FALSE,
-	                 ifindex,
-	                 (NMIPAddr *) &address,
-	                 plen,
-	                 NULL);
-}
+/*****************************************************************************/
 
 const NMPlatformLink *
 nmtstp_link_get_typed (NMPlatform *platform,
@@ -1171,8 +1242,7 @@ nmtstp_link_get_typed (NMPlatform *platform,
 {
 	const NMPlatformLink *pllink = NULL;
 
-	if (!platform)
-		platform = NM_PLATFORM_GET;
+	_init_platform (&platform, FALSE);
 
 	if (ifindex > 0) {
 		pllink = nm_platform_link_get (platform, ifindex);
@@ -1210,8 +1280,11 @@ nmtstp_link_get (NMPlatform *platform,
 	return nmtstp_link_get_typed (platform, ifindex, name, NM_LINK_TYPE_NONE);
 }
 
+/*****************************************************************************/
+
 void
-nmtstp_link_del (gboolean external_command,
+nmtstp_link_del (NMPlatform *platform,
+                 gboolean external_command,
                  int ifindex,
                  const char *name)
 {
@@ -1220,19 +1293,21 @@ nmtstp_link_del (gboolean external_command,
 	gboolean success;
 	gs_free char *name_copy = NULL;
 
-	pllink = nmtstp_link_get (NM_PLATFORM_GET, ifindex, name);
+	external_command = nmtstp_run_command_check_external (external_command);
+
+	_init_platform (&platform, external_command);
+
+	pllink = nmtstp_link_get (platform, ifindex, name);
 
 	g_assert (pllink);
 
 	name = name_copy = g_strdup (pllink->name);
 	ifindex = pllink->ifindex;
 
-	external_command = nmtstp_run_command_check_external (external_command);
-
 	if (external_command) {
 		nmtstp_run_command_check ("ip link delete %s", name);
 	} else {
-		success = nm_platform_link_delete (NM_PLATFORM_GET, ifindex);
+		success = nm_platform_link_delete (platform, ifindex);
 		g_assert (success);
 	}
 
@@ -1240,22 +1315,25 @@ nmtstp_link_del (gboolean external_command,
 	end_time = nm_utils_get_monotonic_timestamp_ms () + 250;
 	do {
 		if (external_command)
-			nm_platform_process_events (NM_PLATFORM_GET);
+			nm_platform_process_events (platform);
 
-		if (!nm_platform_link_get (NM_PLATFORM_GET, ifindex)) {
-			g_assert (!nm_platform_link_get_by_ifname (NM_PLATFORM_GET, name));
+		if (!nm_platform_link_get (platform, ifindex)) {
+			g_assert (!nm_platform_link_get_by_ifname (platform, name));
 			break;
 		}
 
 		/* for internal command, we expect not to reach this line.*/
 		g_assert (external_command);
 
-		g_assert (nmtstp_wait_for_signal_until (NM_PLATFORM_GET, end_time));
+		nmtstp_assert_wait_for_signal_until (platform, end_time);
 	} while (TRUE);
 }
 
+/*****************************************************************************/
+
 void
-nmtstp_link_set_updown (gboolean external_command,
+nmtstp_link_set_updown (NMPlatform *platform,
+                        gboolean external_command,
                         int ifindex,
                         gboolean up)
 {
@@ -1264,10 +1342,12 @@ nmtstp_link_set_updown (gboolean external_command,
 
 	external_command = nmtstp_run_command_check_external (external_command);
 
+	_init_platform (&platform, external_command);
+
 	if (external_command) {
 		const char *ifname;
 
-		ifname = nm_platform_link_get_name (NM_PLATFORM_GET, ifindex);
+		ifname = nm_platform_link_get_name (platform, ifindex);
 		g_assert (ifname);
 
 		nmtstp_run_command_check ("ip link set %s %s",
@@ -1275,19 +1355,19 @@ nmtstp_link_set_updown (gboolean external_command,
 		                          up ? "up" : "down");
 	} else {
 		if (up)
-			g_assert (nm_platform_link_set_up (NM_PLATFORM_GET, ifindex, NULL));
+			g_assert (nm_platform_link_set_up (platform, ifindex, NULL));
 		else
-			g_assert (nm_platform_link_set_down (NM_PLATFORM_GET, ifindex));
+			g_assert (nm_platform_link_set_down (platform, ifindex));
 	}
 
 	/* Let's wait until we get the result */
 	end_time = nm_utils_get_monotonic_timestamp_ms () + 250;
 	do {
 		if (external_command)
-			nm_platform_process_events (NM_PLATFORM_GET);
+			nm_platform_process_events (platform);
 
 		/* let's wait until we see the address as we added it. */
-		plink = nm_platform_link_get (NM_PLATFORM_GET, ifindex);
+		plink = nm_platform_link_get (platform, ifindex);
 		g_assert (plink);
 
 		if (NM_FLAGS_HAS (plink->n_ifi_flags, IFF_UP) == !!up)
@@ -1296,7 +1376,7 @@ nmtstp_link_set_updown (gboolean external_command,
 		/* for internal command, we expect not to reach this line.*/
 		g_assert (external_command);
 
-		g_assert (nmtstp_wait_for_signal_until (NM_PLATFORM_GET, end_time));
+		nmtstp_assert_wait_for_signal_until (platform, end_time);
 	} while (TRUE);
 }
 
@@ -1513,7 +1593,7 @@ main (int argc, char **argv)
 	int result;
 	const char *program = *argv;
 
-	init_tests (&argc, &argv);
+	_nmtstp_init_tests (&argc, &argv);
 
 	if (   nmtstp_is_root_test ()
 	    && (geteuid () != 0 || getegid () != 0)) {
@@ -1571,7 +1651,7 @@ main (int argc, char **argv)
 
 	SETUP ();
 
-	setup_tests ();
+	_nmtstp_setup_tests ();
 
 	result = g_test_run ();
 
diff --git a/src/platform/tests/test-common.h b/src/platform/tests/test-common.h
index 82561193..0e3cf10b 100644
--- a/src/platform/tests/test-common.h
+++ b/src/platform/tests/test-common.h
@@ -4,7 +4,6 @@
 #include <string.h>
 #include <arpa/inet.h>
 
-#include "nm-default.h"
 #include "nm-platform.h"
 #include "nm-fake-platform.h"
 #include "nm-linux-platform.h"
@@ -38,16 +37,6 @@
 
 /*********************************************************************************************/
 
-typedef struct {
-	gulong handler_id;
-	const char *name;
-	NMPlatformSignalChangeType change_type;
-	gint received_count;
-	GMainLoop *loop;
-	int ifindex;
-	const char *ifname;
-} SignalData;
-
 gboolean nmtstp_is_root_test (void);
 gboolean nmtstp_is_sysfs_writable (void);
 
@@ -64,6 +53,16 @@ int nmtstp_namespace_get_fd_for_process (pid_t pid, const char *ns_name);
 
 /******************************************************************************/
 
+typedef struct {
+	gulong handler_id;
+	const char *name;
+	NMPlatformSignalChangeType change_type;
+	gint received_count;
+	GMainLoop *loop;
+	int ifindex;
+	const char *ifname;
+} SignalData;
+
 SignalData *add_signal_full (const char *name, NMPlatformSignalChangeType change_type, GCallback callback, int ifindex, const char *ifname);
 #define add_signal(name, change_type, callback) add_signal_full (name, change_type, (GCallback) callback, 0, NULL)
 #define add_signal_ifindex(name, change_type, callback, ifindex) add_signal_full (name, change_type, (GCallback) callback, ifindex, NULL)
@@ -81,27 +80,49 @@ void _free_signal (const char *file, int line, const char *func, SignalData *dat
 #define ensure_no_signal(data) _ensure_no_signal(__FILE__, __LINE__, G_STRFUNC, data)
 #define free_signal(data) _free_signal(__FILE__, __LINE__, G_STRFUNC, data)
 
-gboolean ip4_route_exists (const char *ifname, guint32 network, int plen, guint32 metric);
-
-void _assert_ip4_route_exists (const char *file, guint line, const char *func, gboolean exists, const char *ifname, guint32 network, int plen, guint32 metric);
-#define assert_ip4_route_exists(exists, ifname, network, plen, metric) _assert_ip4_route_exists (__FILE__, __LINE__, G_STRFUNC, exists, ifname, network, plen, metric)
-
 void link_callback (NMPlatform *platform, NMPObjectType obj_type, int ifindex, NMPlatformLink *received, NMPlatformSignalChangeType change_type, SignalData *data);
 
+/*****************************************************************************/
+
 int nmtstp_run_command (const char *format, ...) __attribute__((__format__ (__printf__, 1, 2)));
 #define nmtstp_run_command_check(...) do { g_assert_cmpint (nmtstp_run_command (__VA_ARGS__), ==, 0); } while (0)
 
-gboolean nmtstp_wait_for_signal (NMPlatform *platform, guint timeout_ms);
-gboolean nmtstp_wait_for_signal_until (NMPlatform *platform, gint64 until_ms);
+/*****************************************************************************/
+
+guint nmtstp_wait_for_signal (NMPlatform *platform, guint timeout_ms);
+guint nmtstp_wait_for_signal_until (NMPlatform *platform, gint64 until_ms);
 const NMPlatformLink *nmtstp_wait_for_link (NMPlatform *platform, const char *ifname, NMLinkType expected_link_type, guint timeout_ms);
 const NMPlatformLink *nmtstp_wait_for_link_until (NMPlatform *platform, const char *ifname, NMLinkType expected_link_type, gint64 until_ms);
 
+#define nmtstp_assert_wait_for_signal(platform, timeout_ms) \
+	G_STMT_START { \
+		if (nmtstp_wait_for_signal (platform, timeout_ms) == 0) \
+			g_assert_not_reached (); \
+	} G_STMT_END
+
+#define nmtstp_assert_wait_for_signal_until(platform, until_ms) \
+	G_STMT_START { \
+		if (nmtstp_wait_for_signal_until (platform, until_ms) == 0) \
+			g_assert_not_reached (); \
+	} G_STMT_END
+
 const NMPlatformLink *nmtstp_assert_wait_for_link (NMPlatform *platform, const char *ifname, NMLinkType expected_link_type, guint timeout_ms);
 const NMPlatformLink *nmtstp_assert_wait_for_link_until (NMPlatform *platform, const char *ifname, NMLinkType expected_link_type, gint64 until_ms);
 
+/*****************************************************************************/
+
 int nmtstp_run_command_check_external_global (void);
 gboolean nmtstp_run_command_check_external (int external_command);
 
+/*****************************************************************************/
+
+gboolean nmtstp_ip4_route_exists (const char *ifname, guint32 network, int plen, guint32 metric);
+
+void _nmtstp_assert_ip4_route_exists (const char *file, guint line, const char *func, NMPlatform *platform, gboolean exists, const char *ifname, guint32 network, int plen, guint32 metric);
+#define nmtstp_assert_ip4_route_exists(platform, exists, ifname, network, plen, metric) _nmtstp_assert_ip4_route_exists (__FILE__, __LINE__, G_STRFUNC, platform, exists, ifname, network, plen, metric)
+
+/*****************************************************************************/
+
 gboolean nmtstp_ip_address_check_lifetime (const NMPlatformIPAddress *addr,
                                            gint64 now,
                                            guint32 expected_lifetime,
@@ -110,7 +131,9 @@ void nmtstp_ip_address_assert_lifetime (const NMPlatformIPAddress *addr,
                                         gint64 now,
                                         guint32 expected_lifetime,
                                         guint32 expected_preferred);
-void nmtstp_ip4_address_add (gboolean external_command,
+
+void nmtstp_ip4_address_add (NMPlatform *platform,
+                             gboolean external_command,
                              int ifindex,
                              in_addr_t address,
                              int plen,
@@ -119,7 +142,8 @@ void nmtstp_ip4_address_add (gboolean external_command,
                              guint32 preferred,
                              guint32 flags,
                              const char *label);
-void nmtstp_ip6_address_add (gboolean external_command,
+void nmtstp_ip6_address_add (NMPlatform *platform,
+                             gboolean external_command,
                              int ifindex,
                              struct in6_addr address,
                              int plen,
@@ -127,49 +151,64 @@ void nmtstp_ip6_address_add (gboolean external_command,
                              guint32 lifetime,
                              guint32 preferred,
                              guint32 flags);
-void nmtstp_ip4_address_del (gboolean external_command,
+void nmtstp_ip4_address_del (NMPlatform *platform,
+                             gboolean external_command,
                              int ifindex,
                              in_addr_t address,
                              int plen,
                              in_addr_t peer_address);
-void nmtstp_ip6_address_del (gboolean external_command,
+void nmtstp_ip6_address_del (NMPlatform *platform,
+                             gboolean external_command,
                              int ifindex,
                              struct in6_addr address,
                              int plen);
 
+/*****************************************************************************/
+
 const NMPlatformLink *nmtstp_link_get_typed (NMPlatform *platform, int ifindex, const char *name, NMLinkType link_type);
 const NMPlatformLink *nmtstp_link_get (NMPlatform *platform, int ifindex, const char *name);
 
-void nmtstp_link_set_updown (gboolean external_command,
+void nmtstp_link_set_updown (NMPlatform *platform,
+                             gboolean external_command,
                              int ifindex,
                              gboolean up);
 
-const NMPlatformLink *nmtstp_link_dummy_add (gboolean external_command,
+const NMPlatformLink *nmtstp_link_dummy_add (NMPlatform *platform,
+                                             gboolean external_command,
                                              const char *name);
-const NMPlatformLink *nmtstp_link_gre_add (gboolean external_command,
+const NMPlatformLink *nmtstp_link_gre_add (NMPlatform *platform,
+                                           gboolean external_command,
                                            const char *name,
                                            const NMPlatformLnkGre *lnk);
-const NMPlatformLink *nmtstp_link_ip6tnl_add (gboolean external_command,
+const NMPlatformLink *nmtstp_link_ip6tnl_add (NMPlatform *platform,
+                                              gboolean external_command,
                                               const char *name,
                                               const NMPlatformLnkIp6Tnl *lnk);
-const NMPlatformLink *nmtstp_link_ipip_add (gboolean external_command,
+const NMPlatformLink *nmtstp_link_ipip_add (NMPlatform *platform,
+                                            gboolean external_command,
                                             const char *name,
                                             const NMPlatformLnkIpIp *lnk);
-const NMPlatformLink *nmtstp_link_macvlan_add (gboolean external_command,
+const NMPlatformLink *nmtstp_link_macvlan_add (NMPlatform *platform,
+                                               gboolean external_command,
                                                const char *name,
                                                int parent,
                                                const NMPlatformLnkMacvlan *lnk);
-const NMPlatformLink *nmtstp_link_sit_add (gboolean external_command,
+const NMPlatformLink *nmtstp_link_sit_add (NMPlatform *platform,
+                                           gboolean external_command,
                                            const char *name,
                                            const NMPlatformLnkSit *lnk);
-const NMPlatformLink *nmtstp_link_vxlan_add (gboolean external_command,
+const NMPlatformLink *nmtstp_link_vxlan_add (NMPlatform *platform,
+                                             gboolean external_command,
                                              const char *name,
                                              const NMPlatformLnkVxlan *lnk);
 
-void nmtstp_link_del (gboolean external_command,
+void nmtstp_link_del (NMPlatform *platform,
+                      gboolean external_command,
                       int ifindex,
                       const char *name);
 
-void init_tests (int *argc, char ***argv);
-void setup_tests (void);
+/*****************************************************************************/
+
+void _nmtstp_init_tests (int *argc, char ***argv);
+void _nmtstp_setup_tests (void);
 
diff --git a/src/platform/tests/test-general.c b/src/platform/tests/test-general.c
index 66f72fa5..d8d92561 100644
--- a/src/platform/tests/test-general.c
+++ b/src/platform/tests/test-general.c
@@ -35,7 +35,7 @@ test_init_linux_platform (void)
 {
 	gs_unref_object NMPlatform *platform = NULL;
 
-	platform = g_object_new (NM_TYPE_LINUX_PLATFORM, NULL);
+	platform = nm_linux_platform_new (NM_PLATFORM_NETNS_SUPPORT_DEFAULT);
 }
 
 /******************************************************************/
@@ -46,7 +46,7 @@ test_link_get_all (void)
 	gs_unref_object NMPlatform *platform = NULL;
 	gs_unref_array GArray *links = NULL;
 
-	platform = g_object_new (NM_TYPE_LINUX_PLATFORM, NULL);
+	platform = nm_linux_platform_new (NM_PLATFORM_NETNS_SUPPORT_DEFAULT);
 
 	links = nm_platform_link_get_all (platform);
 }
diff --git a/src/platform/tests/test-link.c b/src/platform/tests/test-link.c
index 94695edc..9d548aab 100644
--- a/src/platform/tests/test-link.c
+++ b/src/platform/tests/test-link.c
@@ -343,7 +343,7 @@ test_slave (int master, int type, SignalData *master_changed)
 	ensure_no_signal (link_added);
 	ensure_no_signal (link_changed);
 	ensure_no_signal (link_removed);
-	nmtstp_link_del (-1, ifindex, NULL);
+	nmtstp_link_del (NULL, -1, ifindex, NULL);
 	accept_signals (master_changed, 0, 1);
 	accept_signals (link_changed, 0, 1);
 	accept_signal (link_removed);
@@ -437,7 +437,7 @@ test_software (NMLinkType link_type, const char *link_typename)
 	free_signal (link_changed);
 
 	/* Delete */
-	nmtstp_link_del (-1, ifindex, DEVICE_NAME);
+	nmtstp_link_del (NULL, -1, ifindex, DEVICE_NAME);
 	accept_signal (link_removed);
 
 	/* Delete again */
@@ -448,7 +448,7 @@ test_software (NMLinkType link_type, const char *link_typename)
 	if (link_type == NM_LINK_TYPE_VLAN) {
 		SignalData *link_removed_parent = add_signal_ifindex (NM_PLATFORM_SIGNAL_LINK_CHANGED, NM_PLATFORM_SIGNAL_REMOVED, link_callback, vlan_parent);
 
-		nmtstp_link_del (-1, vlan_parent, NULL);
+		nmtstp_link_del (NULL, -1, vlan_parent, NULL);
 		accept_signal (link_removed_parent);
 		free_signal (link_removed_parent);
 	}
@@ -531,7 +531,7 @@ test_bridge_addr (void)
 	g_assert_cmpint (plink->addr.len, ==, sizeof (addr));
 	g_assert (!memcmp (plink->addr.data, addr, sizeof (addr)));
 
-	nmtstp_link_del (-1, link.ifindex, link.name);
+	nmtstp_link_del (NULL, -1, link.ifindex, link.name);
 }
 
 /*****************************************************************************/
@@ -606,7 +606,7 @@ test_internal (void)
 	accept_signal (link_changed);
 
 	/* Delete device */
-	nmtstp_link_del (-1, ifindex, DEVICE_NAME);
+	nmtstp_link_del (NULL, -1, ifindex, DEVICE_NAME);
 	accept_signal (link_removed);
 
 	/* Try to delete again */
@@ -717,7 +717,7 @@ test_software_detect (gconstpointer user_data)
 			gracefully_skip = nm_utils_modprobe (NULL, TRUE, "ip_gre", NULL) != 0;
 		}
 
-		if (!nmtstp_link_gre_add (ext, DEVICE_NAME, &lnk_gre)) {
+		if (!nmtstp_link_gre_add (NULL, ext, DEVICE_NAME, &lnk_gre)) {
 			if (gracefully_skip) {
 				g_test_skip ("Cannot create gre tunnel because of missing ip_gre module (modprobe ip_gre)");
 				goto out_delete_parent;
@@ -741,7 +741,7 @@ test_software_detect (gconstpointer user_data)
 		lnk_ipip.tos = 32;
 		lnk_ipip.path_mtu_discovery = FALSE;
 
-		if (!nmtstp_link_ipip_add (ext, DEVICE_NAME, &lnk_ipip)) {
+		if (!nmtstp_link_ipip_add (NULL, ext, DEVICE_NAME, &lnk_ipip)) {
 			if (gracefully_skip) {
 				g_test_skip ("Cannot create ipip tunnel because of missing ipip module (modprobe ipip)");
 				goto out_delete_parent;
@@ -767,7 +767,7 @@ test_software_detect (gconstpointer user_data)
 		lnk_ip6tnl.flow_label = 1337;
 		lnk_ip6tnl.proto = IPPROTO_IPV6;
 
-		if (!nmtstp_link_ip6tnl_add (ext, DEVICE_NAME, &lnk_ip6tnl)) {
+		if (!nmtstp_link_ip6tnl_add (NULL, ext, DEVICE_NAME, &lnk_ip6tnl)) {
 			if (gracefully_skip) {
 				g_test_skip ("Cannot create ip6tnl tunnel because of missing ip6_tunnel module (modprobe ip6_tunnel)");
 				goto out_delete_parent;
@@ -783,7 +783,7 @@ test_software_detect (gconstpointer user_data)
 		lnk_macvlan.no_promisc = FALSE;
 		lnk_macvlan.tap = FALSE;
 
-		if (!nmtstp_link_macvlan_add (ext, DEVICE_NAME, ifindex_parent, &lnk_macvlan))
+		if (!nmtstp_link_macvlan_add (NULL, ext, DEVICE_NAME, ifindex_parent, &lnk_macvlan))
 			g_error ("Failed adding MACVLAN interface");
 		break;
 	}
@@ -794,7 +794,7 @@ test_software_detect (gconstpointer user_data)
 		lnk_macvtap.no_promisc = FALSE;
 		lnk_macvtap.tap = TRUE;
 
-		if (!nmtstp_link_macvlan_add (ext, DEVICE_NAME, ifindex_parent, &lnk_macvtap))
+		if (!nmtstp_link_macvlan_add (NULL, ext, DEVICE_NAME, ifindex_parent, &lnk_macvtap))
 			g_error ("Failed adding MACVTAP interface");
 		break;
 	}
@@ -814,7 +814,7 @@ test_software_detect (gconstpointer user_data)
 			gracefully_skip = nm_utils_modprobe (NULL, TRUE, "sit", NULL) != 0;
 		}
 
-		if (!nmtstp_link_sit_add (ext, DEVICE_NAME, &lnk_sit)) {
+		if (!nmtstp_link_sit_add (NULL, ext, DEVICE_NAME, &lnk_sit)) {
 			if (gracefully_skip) {
 				g_test_skip ("Cannot create sit tunnel because of missing sit module (modprobe sit)");
 				goto out_delete_parent;
@@ -853,7 +853,7 @@ test_software_detect (gconstpointer user_data)
 			break;
 		}
 
-		g_assert (nmtstp_link_vxlan_add (ext, DEVICE_NAME, &lnk_vxlan));
+		g_assert (nmtstp_link_vxlan_add (NULL, ext, DEVICE_NAME, &lnk_vxlan));
 		break;
 	}
 	default:
@@ -862,7 +862,7 @@ test_software_detect (gconstpointer user_data)
 
 	ifindex = nmtstp_assert_wait_for_link (NM_PLATFORM_GET, DEVICE_NAME, test_data->link_type, 100)->ifindex;
 
-	nmtstp_link_set_updown (-1, ifindex_parent, TRUE);
+	nmtstp_link_set_updown (NULL, -1, ifindex_parent, TRUE);
 
 	for (i_step = 0; i_step < 5; i_step++) {
 
@@ -880,7 +880,7 @@ test_software_detect (gconstpointer user_data)
 				 * https://bugzilla.redhat.com/show_bug.cgi?id=1277131 */
 				g_usleep (1);
 			}
-			nmtstp_link_set_updown (-1, ifindex, set_up);
+			nmtstp_link_set_updown (NULL, -1, ifindex, set_up);
 		}
 
 		lnk = nm_platform_link_get_lnk (NM_PLATFORM_GET, ifindex, test_data->link_type, &plink);
@@ -1017,9 +1017,9 @@ test_software_detect (gconstpointer user_data)
 		}
 	}
 
-	nmtstp_link_del (-1, ifindex, DEVICE_NAME);
+	nmtstp_link_del (NULL, -1, ifindex, DEVICE_NAME);
 out_delete_parent:
-	nmtstp_link_del (-1, ifindex_parent, PARENT_NAME);
+	nmtstp_link_del (NULL, -1, ifindex_parent, PARENT_NAME);
 }
 
 static void
@@ -1597,8 +1597,8 @@ test_vlan_set_xgress (void)
 		_assert_vlan_flags (ifindex, NM_VLAN_FLAG_REORDER_HEADERS | NM_VLAN_FLAG_GVRP);
 	}
 
-	nmtstp_link_del (-1, ifindex, DEVICE_NAME);
-	nmtstp_link_del (-1, ifindex_parent, PARENT_NAME);
+	nmtstp_link_del (NULL, -1, ifindex, DEVICE_NAME);
+	nmtstp_link_del (NULL, -1, ifindex_parent, PARENT_NAME);
 }
 
 /*****************************************************************************/
@@ -1625,7 +1625,7 @@ test_create_many_links_do (guint n_devices)
 			 * while adding all the links. */
 			nmtstp_run_command_check ("ip link add %s type dummy", name);
 		} else
-			nmtstp_link_dummy_add (EX, name);
+			nmtstp_link_dummy_add (NULL, EX, name);
 	}
 
 	_LOGI (">>> process events after creating devices...");
@@ -1654,7 +1654,7 @@ test_create_many_links_do (guint n_devices)
 		if (EX == 2)
 			nmtstp_run_command_check ("ip link delete %s", name);
 		else
-			nmtstp_link_del (EX, g_array_index (ifindexes, int, i), name);
+			nmtstp_link_del (NULL, EX, g_array_index (ifindexes, int, i), name);
 	}
 
 	_LOGI (">>> process events after deleting devices...");
@@ -1743,7 +1743,7 @@ test_nl_bugs_veth (void)
 	});
 
 out:
-	nmtstp_link_del (-1, ifindex_veth0, IFACE_VETH0);
+	nmtstp_link_del (NULL, -1, ifindex_veth0, IFACE_VETH0);
 	g_assert (!nmtstp_link_get (NM_PLATFORM_GET, ifindex_veth0, IFACE_VETH0));
 	g_assert (!nmtstp_link_get (NM_PLATFORM_GET, ifindex_veth1, IFACE_VETH1));
 	nmtstp_namespace_handle_release (ns_handle);
@@ -1768,7 +1768,7 @@ test_nl_bugs_spuroius_newlink (void)
 	nmtstp_run_command_check ("ip link add %s type bond", IFACE_BOND0);
 	ifindex_bond0 = nmtstp_assert_wait_for_link (NM_PLATFORM_GET, IFACE_BOND0, NM_LINK_TYPE_BOND, 100)->ifindex;
 
-	nmtstp_link_set_updown (-1, ifindex_bond0, TRUE);
+	nmtstp_link_set_updown (NULL, -1, ifindex_bond0, TRUE);
 
 	nmtstp_run_command_check ("ip link set %s master %s", IFACE_DUMMY0, IFACE_BOND0);
 	NMTST_WAIT_ASSERT (100, {
@@ -1796,7 +1796,7 @@ again:
 	}
 
 	g_assert (!nmtstp_link_get (NM_PLATFORM_GET, ifindex_bond0, IFACE_BOND0));
-	nmtstp_link_del (-1, ifindex_dummy0, IFACE_DUMMY0);
+	nmtstp_link_del (NULL, -1, ifindex_dummy0, IFACE_DUMMY0);
 }
 
 /*****************************************************************************/
@@ -1818,7 +1818,7 @@ test_nl_bugs_spuroius_dellink (void)
 	nmtstp_run_command_check ("ip link add %s type bridge", IFACE_BRIDGE0);
 	ifindex_bridge0 = nmtstp_assert_wait_for_link (NM_PLATFORM_GET, IFACE_BRIDGE0, NM_LINK_TYPE_BRIDGE, 100)->ifindex;
 
-	nmtstp_link_set_updown (-1, ifindex_bridge0, TRUE);
+	nmtstp_link_set_updown (NULL, -1, ifindex_bridge0, TRUE);
 
 	nmtstp_run_command_check ("ip link set %s master %s", IFACE_DUMMY0, IFACE_BRIDGE0);
 	NMTST_WAIT_ASSERT (100, {
@@ -1850,8 +1850,8 @@ again:
 		goto again;
 	}
 
-	nmtstp_link_del (-1, ifindex_bridge0, IFACE_BRIDGE0);
-	nmtstp_link_del (-1, ifindex_dummy0, IFACE_DUMMY0);
+	nmtstp_link_del (NULL, -1, ifindex_bridge0, IFACE_BRIDGE0);
+	nmtstp_link_del (NULL, -1, ifindex_dummy0, IFACE_DUMMY0);
 }
 
 /******************************************************************/
@@ -1880,7 +1880,7 @@ _test_netns_create_platform (void)
 	netns = nmp_netns_new ();
 	g_assert (NMP_IS_NETNS (netns));
 
-	platform = g_object_new (NM_TYPE_LINUX_PLATFORM, NM_PLATFORM_NETNS_SUPPORT, TRUE, NULL);
+	platform = nm_linux_platform_new (TRUE);
 	g_assert (NM_IS_LINUX_PLATFORM (platform));
 
 	nmp_netns_pop (netns);
@@ -1932,7 +1932,7 @@ test_netns_general (gpointer fixture, gconstpointer test_data)
 	if (_test_netns_check_skip ())
 		return;
 
-	platform_1 = g_object_new (NM_TYPE_LINUX_PLATFORM, NM_PLATFORM_NETNS_SUPPORT, TRUE, NULL);
+	platform_1 = nm_linux_platform_new (TRUE);
 	platform_2 = _test_netns_create_platform ();
 
 	/* add some dummy devices. The "other-*" devices are there to bump the ifindex */
@@ -2028,7 +2028,7 @@ test_netns_set_netns (gpointer fixture, gconstpointer test_data)
 	if (_test_netns_check_skip ())
 		return;
 
-	platforms[0] = platform_0 = g_object_new (NM_TYPE_LINUX_PLATFORM, NM_PLATFORM_NETNS_SUPPORT, TRUE, NULL);
+	platforms[0] = platform_0 = nm_linux_platform_new (TRUE);
 	platforms[1] = platform_1 = _test_netns_create_platform ();
 	platforms[2] = platform_2 = _test_netns_create_platform ();
 
@@ -2125,7 +2125,7 @@ test_netns_push (gpointer fixture, gconstpointer test_data)
 	if (_test_netns_check_skip ())
 		return;
 
-	pl[0].platform = platform_0 = g_object_new (NM_TYPE_LINUX_PLATFORM, NM_PLATFORM_NETNS_SUPPORT, TRUE, NULL);
+	pl[0].platform = platform_0 = nm_linux_platform_new (TRUE);
 	pl[1].platform = platform_1 = _test_netns_create_platform ();
 	pl[2].platform = platform_2 = _test_netns_create_platform ();
 
@@ -2257,7 +2257,7 @@ test_netns_bind_to_path (gpointer fixture, gconstpointer test_data)
 	if (_test_netns_check_skip ())
 		return;
 
-	platforms[0] = platform_0 = g_object_new (NM_TYPE_LINUX_PLATFORM, NM_PLATFORM_NETNS_SUPPORT, TRUE, NULL);
+	platforms[0] = platform_0 = nm_linux_platform_new (TRUE);
 	platforms[1] = platform_1 = _test_netns_create_platform ();
 	platforms[2] = platform_2 = _test_netns_create_platform ();
 
@@ -2293,13 +2293,13 @@ test_netns_bind_to_path (gpointer fixture, gconstpointer test_data)
 /*****************************************************************************/
 
 void
-init_tests (int *argc, char ***argv)
+_nmtstp_init_tests (int *argc, char ***argv)
 {
 	nmtst_init_with_logging (argc, argv, NULL, "ALL");
 }
 
 void
-setup_tests (void)
+_nmtstp_setup_tests (void)
 {
 	nm_platform_link_delete (NM_PLATFORM_GET, nm_platform_link_get_ifindex (NM_PLATFORM_GET, DEVICE_NAME));
 	nm_platform_link_delete (NM_PLATFORM_GET, nm_platform_link_get_ifindex (NM_PLATFORM_GET, SLAVE_NAME));
diff --git a/src/platform/tests/test-route.c b/src/platform/tests/test-route.c
index 85851854..a50392a6 100644
--- a/src/platform/tests/test-route.c
+++ b/src/platform/tests/test-route.c
@@ -82,50 +82,50 @@ test_ip4_route_metric0 (void)
 	int mss = 1000;
 
 	/* No routes initially */
-	assert_ip4_route_exists (FALSE, DEVICE_NAME, network, plen, 0);
-	assert_ip4_route_exists (FALSE, DEVICE_NAME, network, plen, metric);
+	nmtstp_assert_ip4_route_exists (NULL, FALSE, DEVICE_NAME, network, plen, 0);
+	nmtstp_assert_ip4_route_exists (NULL, FALSE, DEVICE_NAME, network, plen, metric);
 
 	/* add the first route */
 	g_assert (nm_platform_ip4_route_add (NM_PLATFORM_GET, ifindex, NM_IP_CONFIG_SOURCE_USER, network, plen, INADDR_ANY, 0, metric, mss));
 	accept_signal (route_added);
 
-	assert_ip4_route_exists (FALSE, DEVICE_NAME, network, plen, 0);
-	assert_ip4_route_exists (TRUE,  DEVICE_NAME, network, plen, metric);
+	nmtstp_assert_ip4_route_exists (NULL, FALSE, DEVICE_NAME, network, plen, 0);
+	nmtstp_assert_ip4_route_exists (NULL, TRUE,  DEVICE_NAME, network, plen, metric);
 
 	/* Deleting route with metric 0 does nothing */
 	g_assert (nm_platform_ip4_route_delete (NM_PLATFORM_GET, ifindex, network, plen, 0));
 	ensure_no_signal (route_removed);
 
-	assert_ip4_route_exists (FALSE, DEVICE_NAME, network, plen, 0);
-	assert_ip4_route_exists (TRUE,  DEVICE_NAME, network, plen, metric);
+	nmtstp_assert_ip4_route_exists (NULL, FALSE, DEVICE_NAME, network, plen, 0);
+	nmtstp_assert_ip4_route_exists (NULL, TRUE,  DEVICE_NAME, network, plen, metric);
 
 	/* add the second route */
 	g_assert (nm_platform_ip4_route_add (NM_PLATFORM_GET, ifindex, NM_IP_CONFIG_SOURCE_USER, network, plen, INADDR_ANY, 0, 0, mss));
 	accept_signal (route_added);
 
-	assert_ip4_route_exists (TRUE,  DEVICE_NAME, network, plen, 0);
-	assert_ip4_route_exists (TRUE,  DEVICE_NAME, network, plen, metric);
+	nmtstp_assert_ip4_route_exists (NULL, TRUE,  DEVICE_NAME, network, plen, 0);
+	nmtstp_assert_ip4_route_exists (NULL, TRUE,  DEVICE_NAME, network, plen, metric);
 
 	/* Delete route with metric 0 */
 	g_assert (nm_platform_ip4_route_delete (NM_PLATFORM_GET, ifindex, network, plen, 0));
 	accept_signal (route_removed);
 
-	assert_ip4_route_exists (FALSE, DEVICE_NAME, network, plen, 0);
-	assert_ip4_route_exists (TRUE,  DEVICE_NAME, network, plen, metric);
+	nmtstp_assert_ip4_route_exists (NULL, FALSE, DEVICE_NAME, network, plen, 0);
+	nmtstp_assert_ip4_route_exists (NULL, TRUE,  DEVICE_NAME, network, plen, metric);
 
 	/* Delete route with metric 0 again (we expect nothing to happen) */
 	g_assert (nm_platform_ip4_route_delete (NM_PLATFORM_GET, ifindex, network, plen, 0));
 	ensure_no_signal (route_removed);
 
-	assert_ip4_route_exists (FALSE, DEVICE_NAME, network, plen, 0);
-	assert_ip4_route_exists (TRUE,  DEVICE_NAME, network, plen, metric);
+	nmtstp_assert_ip4_route_exists (NULL, FALSE, DEVICE_NAME, network, plen, 0);
+	nmtstp_assert_ip4_route_exists (NULL, TRUE,  DEVICE_NAME, network, plen, metric);
 
 	/* Delete the other route */
 	g_assert (nm_platform_ip4_route_delete (NM_PLATFORM_GET, ifindex, network, plen, metric));
 	accept_signal (route_removed);
 
-	assert_ip4_route_exists (FALSE, DEVICE_NAME, network, plen, 0);
-	assert_ip4_route_exists (FALSE, DEVICE_NAME, network, plen, metric);
+	nmtstp_assert_ip4_route_exists (NULL, FALSE, DEVICE_NAME, network, plen, 0);
+	nmtstp_assert_ip4_route_exists (NULL, FALSE, DEVICE_NAME, network, plen, metric);
 
 	free_signal (route_added);
 	free_signal (route_changed);
@@ -142,7 +142,7 @@ test_ip4_route (void)
 	GArray *routes;
 	NMPlatformIP4Route rts[3];
 	in_addr_t network;
-	int plen = 24;
+	guint8 plen = 24;
 	in_addr_t gateway;
 	/* Choose a high metric so that we hopefully don't conflict. */
 	int metric = 22986;
@@ -156,9 +156,9 @@ test_ip4_route (void)
 	accept_signal (route_added);
 
 	/* Add route */
-	assert_ip4_route_exists (FALSE, DEVICE_NAME, network, plen, metric);
+	nmtstp_assert_ip4_route_exists (NULL, FALSE, DEVICE_NAME, network, plen, metric);
 	g_assert (nm_platform_ip4_route_add (NM_PLATFORM_GET, ifindex, NM_IP_CONFIG_SOURCE_USER, network, plen, gateway, 0, metric, mss));
-	assert_ip4_route_exists (TRUE, DEVICE_NAME, network, plen, metric);
+	nmtstp_assert_ip4_route_exists (NULL, TRUE, DEVICE_NAME, network, plen, metric);
 	accept_signal (route_added);
 
 	/* Add route again */
@@ -166,9 +166,9 @@ test_ip4_route (void)
 	accept_signals (route_changed, 0, 1);
 
 	/* Add default route */
-	assert_ip4_route_exists (FALSE, DEVICE_NAME, 0, 0, metric);
+	nmtstp_assert_ip4_route_exists (NULL, FALSE, DEVICE_NAME, 0, 0, metric);
 	g_assert (nm_platform_ip4_route_add (NM_PLATFORM_GET, ifindex, NM_IP_CONFIG_SOURCE_USER, 0, 0, gateway, 0, metric, mss));
-	assert_ip4_route_exists (TRUE, DEVICE_NAME, 0, 0, metric);
+	nmtstp_assert_ip4_route_exists (NULL, TRUE, DEVICE_NAME, 0, 0, metric);
 	accept_signal (route_added);
 
 	/* Add default route again */
@@ -208,7 +208,7 @@ test_ip4_route (void)
 
 	/* Remove route */
 	g_assert (nm_platform_ip4_route_delete (NM_PLATFORM_GET, ifindex, network, plen, metric));
-	assert_ip4_route_exists (FALSE, DEVICE_NAME, network, plen, metric);
+	nmtstp_assert_ip4_route_exists (NULL, FALSE, DEVICE_NAME, network, plen, metric);
 	accept_signal (route_removed);
 
 	/* Remove route again */
@@ -229,7 +229,7 @@ test_ip6_route (void)
 	GArray *routes;
 	NMPlatformIP6Route rts[3];
 	struct in6_addr network;
-	int plen = 64;
+	guint8 plen = 64;
 	struct in6_addr gateway;
 	/* Choose a high metric so that we hopefully don't conflict. */
 	int metric = 22987;
@@ -329,13 +329,13 @@ test_ip4_zero_gateway (void)
 /*****************************************************************************/
 
 void
-init_tests (int *argc, char ***argv)
+_nmtstp_init_tests (int *argc, char ***argv)
 {
 	nmtst_init_with_logging (argc, argv, NULL, "ALL");
 }
 
 void
-setup_tests (void)
+_nmtstp_setup_tests (void)
 {
 	SignalData *link_added = add_signal_ifname (NM_PLATFORM_SIGNAL_LINK_CHANGED, NM_PLATFORM_SIGNAL_ADDED, link_callback, DEVICE_NAME);
 
diff --git a/src/ppp-manager/nm-ppp-manager.c b/src/ppp-manager/nm-ppp-manager.c
index 16e34f11..89a7addf 100644
--- a/src/ppp-manager/nm-ppp-manager.c
+++ b/src/ppp-manager/nm-ppp-manager.c
@@ -481,7 +481,7 @@ impl_ppp_manager_set_ip4_config (NMPPPManager *manager,
 	if (g_variant_lookup (config_dict, NM_PPP_IP4_CONFIG_PREFIX, "u", &u32))
 		address.plen = u32;
 
-	if (address.address && address.plen) {
+	if (address.address && address.plen && address.plen <= 32) {
 		address.source = NM_IP_CONFIG_SOURCE_PPP;
 		nm_ip4_config_add_address (config, &address);
 	} else {
@@ -554,6 +554,7 @@ impl_ppp_manager_set_ip6_config (NMPPPManager *manager,
 	NMPlatformIP6Address addr;
 	struct in6_addr a;
 	NMUtilsIPv6IfaceId iid = NM_UTILS_IPV6_IFACE_ID_INIT;
+	gboolean has_peer = FALSE;
 
 	_LOGI ("(IPv6 Config Get) reply received.");
 
@@ -567,9 +568,12 @@ impl_ppp_manager_set_ip6_config (NMPPPManager *manager,
 	if (iid_value_to_ll6_addr (config_dict, NM_PPP_IP6_CONFIG_PEER_IID, &a, NULL)) {
 		nm_ip6_config_set_gateway (config, &a);
 		addr.peer_address = a;
+		has_peer = TRUE;
 	}
 
 	if (iid_value_to_ll6_addr (config_dict, NM_PPP_IP6_CONFIG_OUR_IID, &addr.address, &iid)) {
+		if (!has_peer)
+			addr.peer_address = addr.address;
 		nm_ip6_config_add_address (config, &addr);
 
 		if (set_ip_config_common (manager, config_dict, NM_PPP_IP6_CONFIG_INTERFACE, NULL)) {
@@ -1064,8 +1068,14 @@ nm_ppp_manager_start (NMPPPManager *manager,
 	}
 	
 	pppoe_setting = nm_connection_get_setting_pppoe (connection);
-	if (pppoe_setting)
+	if (pppoe_setting) {
+		/* We can't modify the applied connection's setting, make a copy */
+		if (!s_ppp_created) {
+			s_ppp = NM_SETTING_PPP (nm_setting_duplicate ((NMSetting *) s_ppp));
+			s_ppp_created = TRUE;
+		}
 		pppoe_fill_defaults (s_ppp);
+	}
 
 	adsl_setting = (NMSettingAdsl *) nm_connection_get_setting (connection, NM_TYPE_SETTING_ADSL);
 
diff --git a/src/settings/plugins/ifcfg-rh/reader.c b/src/settings/plugins/ifcfg-rh/reader.c
index 41ffa27d..39e981f9 100644
--- a/src/settings/plugins/ifcfg-rh/reader.c
+++ b/src/settings/plugins/ifcfg-rh/reader.c
@@ -358,7 +358,7 @@ read_full_ip4_address (shvarFile *ifcfg,
 {
 	char *ip_tag, *prefix_tag, *netmask_tag, *gw_tag;
 	char *ip = NULL;
-	long prefix = 0;
+	int prefix = 0;
 	gboolean success = FALSE;
 	char *value;
 	guint32 tmp;
@@ -395,47 +395,40 @@ read_full_ip4_address (shvarFile *ifcfg,
 	/* Prefix */
 	value = svGetValue (ifcfg, prefix_tag, FALSE);
 	if (value) {
-		errno = 0;
-		prefix = strtol (value, NULL, 10);
-		if (errno || prefix < 0) {
+		prefix = _nm_utils_ascii_str_to_int64 (value, 10, 0, 32, -1);
+		if (prefix < 0) {
 			g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION,
 			             "Invalid IP4 prefix '%s'", value);
 			g_free (value);
 			goto done;
 		}
 		g_free (value);
-	}
-
-	/* Fall back to NETMASK if no PREFIX was specified */
-	if (prefix == 0) {
+	} else {
+		/* Fall back to NETMASK if no PREFIX was specified */
 		if (!read_ip4_address (ifcfg, netmask_tag, &value, error))
 			goto done;
 		if (value) {
 			inet_pton (AF_INET, value, &tmp);
 			prefix = nm_utils_ip4_netmask_to_prefix (tmp);
 			g_free (value);
-		}
-	}
-
-	if (prefix == 0 && base_addr)
-		prefix = nm_ip_address_get_prefix (base_addr);
-
-	/* Try to autodetermine the prefix for the address' class */
-	if (prefix == 0) {
-		if (inet_pton (AF_INET, ip, &tmp) == 1) {
-			prefix = nm_utils_ip4_get_default_prefix (tmp);
+		} else {
+			if (base_addr)
+				prefix = nm_ip_address_get_prefix (base_addr);
+			else {
+				/* Try to autodetermine the prefix for the address' class */
+				if (inet_pton (AF_INET, ip, &tmp) == 1) {
+					prefix = nm_utils_ip4_get_default_prefix (tmp);
 
-			PARSE_WARNING ("missing %s, assuming %s/%ld", prefix_tag, ip, prefix);
+					PARSE_WARNING ("missing %s, assuming %s/%d", prefix_tag, ip, prefix);
+				} else {
+					g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION,
+					             "Missing IP4 prefix");
+					goto done;
+				}
+			}
 		}
 	}
 
-	/* Validate the prefix */
-	if (prefix == 0) {
-		g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION,
-		             "Missing IP4 prefix");
-		goto done;
-	}
-
 	*out_address = nm_ip_address_new (AF_INET, ip, prefix, error);
 	if (*out_address)
 		success = TRUE;
@@ -717,7 +710,7 @@ parse_full_ip6_address (shvarFile *ifcfg,
 {
 	char **list;
 	char *ip_val, *prefix_val;
-	long prefix;
+	int prefix;
 	gboolean success = FALSE;
 
 	g_return_val_if_fail (addr_str != NULL, FALSE);
@@ -737,9 +730,8 @@ parse_full_ip6_address (shvarFile *ifcfg,
 
 	prefix_val = list[1];
 	if (prefix_val) {
-		errno = 0;
-		prefix = strtol (prefix_val, NULL, 10);
-		if (errno || prefix <= 0 || prefix > 128) {
+		prefix = _nm_utils_ascii_str_to_int64 (prefix_val, 10, 0, 128, -1);
+		if (prefix < 0) {
 			g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION,
 			             "Invalid IP6 prefix '%s'", prefix_val);
 			goto error;
diff --git a/src/tests/test-general.c b/src/tests/test-general.c
index b2512590..a45357e8 100644
--- a/src/tests/test-general.c
+++ b/src/tests/test-general.c
@@ -98,6 +98,122 @@ test_nm_utils_ip6_address_clear_host_address (void)
 	g_rand_free (r);
 }
 
+/*****************************************************************************/
+
+static void
+_test_same_prefix (const char *a1, const char *a2, guint8 plen)
+{
+	struct in6_addr a = *nmtst_inet6_from_string (a1);
+	struct in6_addr b = *nmtst_inet6_from_string (a2);
+
+	g_assert (nm_utils_ip6_address_same_prefix (&a, &b, plen));
+}
+
+static void
+test_nm_utils_ip6_address_same_prefix (void)
+{
+	guint n, i;
+	const guint N = 100;
+	union {
+		guint8 ptr[sizeof (struct in6_addr)];
+		struct in6_addr val;
+	} a, b, addrmask, addrmask_bit;
+	guint8 plen;
+
+	/* test#1 */
+	for (n = 0; n < N; n++) {
+		gboolean is_same = n < N / 2;
+		gboolean result;
+
+		nmtst_rand_buf (NULL, a.ptr, sizeof (a));
+		nmtst_rand_buf (NULL, b.ptr, sizeof (b));
+again_plen:
+		plen = nmtst_get_rand_int () % 129;
+		if (!is_same && NM_IN_SET (plen, 0, 128))
+			goto again_plen;
+
+		if (plen < 128) {
+			for (i = 0; (i + 1) * 8 <= plen; i++)
+				b.ptr[i] = a.ptr[i];
+			if (plen % 8) {
+				guint8 mask;
+
+				g_assert (i < sizeof (a));
+				mask = ~((1 << (8 - (plen % 8))) - 1);
+				b.ptr[i] = (a.ptr[i] & mask) | (b.ptr[i] & ~mask);
+				if (!is_same) {
+					mask = (1 << (8 - (plen % 8)));
+					b.ptr[i] = (b.ptr[i] & ~mask) | ~(b.ptr[i] & mask);
+				}
+			} else if (!is_same) {
+				g_assert (i > 0);
+
+				b.ptr[i - 1] = (b.ptr[i - 1] & ~0x1) | ~(b.ptr[i - 1] & 0x1);
+			}
+		} else
+			b = a;
+
+		result = nm_utils_ip6_address_same_prefix (&a.val, &b.val, plen);
+		g_assert (result == is_same);
+		g_assert (NM_IN_SET (result, TRUE, FALSE));
+	}
+
+	/* test#2 */
+	for (n = 0; n < N; n++) {
+		nmtst_rand_buf (NULL, a.ptr, sizeof (a));
+		nmtst_rand_buf (NULL, b.ptr, sizeof (b));
+		plen = nmtst_get_rand_int () % 129;
+
+		memset (addrmask.ptr, 0xFF, sizeof (addrmask));
+		nm_utils_ip6_address_clear_host_address (&addrmask.val, &addrmask.val, plen);
+
+		for (i = 0; i < sizeof (a); i++)
+			b.ptr[i] = (a.ptr[i] & addrmask.ptr[i]) | (b.ptr[i] & ~addrmask.ptr[i]);
+
+		g_assert (nm_utils_ip6_address_same_prefix (&a.val, &b.val, plen) == TRUE);
+	}
+
+	/* test#3 */
+	for (n = 0; n < N; n++) {
+		gboolean reached = FALSE;
+
+		nmtst_rand_buf (NULL, a.ptr, sizeof (a));
+		nmtst_rand_buf (NULL, b.ptr, sizeof (b));
+		plen = nmtst_get_rand_int () % 129;
+
+		if (!plen)
+			continue;
+
+		memset (addrmask.ptr, 0xFF, sizeof (addrmask));
+		nm_utils_ip6_address_clear_host_address (&addrmask.val, &addrmask.val, plen);
+
+		memset (addrmask_bit.ptr, 0xFF, sizeof (addrmask_bit));
+		nm_utils_ip6_address_clear_host_address (&addrmask_bit.val, &addrmask_bit.val, plen - 1);
+
+		for (i = 0; i < sizeof (a); i++)
+			b.ptr[i] = (a.ptr[i] & addrmask.ptr[i]) | (b.ptr[i] & ~addrmask.ptr[i]);
+
+		/* flip the last bit. */
+		for (i = 0; i < sizeof (a); i++) {
+			guint8 mask = addrmask.ptr[i] ^ addrmask_bit.ptr[i];
+			if (mask) {
+				g_assert (!reached);
+				g_assert (nm_utils_is_power_of_two (mask));
+				reached = TRUE;
+				b.ptr[i] = (b.ptr[i] & ~mask) | ~(b.ptr[i] & mask);
+			}
+		}
+		g_assert (reached);
+
+		g_assert (nm_utils_ip6_address_same_prefix (&a.val, &b.val, plen) == FALSE);
+	}
+
+	/* test#4 */
+	_test_same_prefix ("::", "::1", 10);
+	_test_same_prefix ("abcd::", "abcd::1", 10);
+}
+
+/*****************************************************************************/
 
 static void
 test_nm_utils_log_connection_diff (void)
@@ -1257,6 +1373,7 @@ main (int argc, char **argv)
 	g_test_add_func ("/general/nm_utils_strbuf_append", test_nm_utils_strbuf_append);
 
 	g_test_add_func ("/general/nm_utils_ip6_address_clear_host_address", test_nm_utils_ip6_address_clear_host_address);
+	g_test_add_func ("/general/nm_utils_ip6_address_same_prefix", test_nm_utils_ip6_address_same_prefix);
 	g_test_add_func ("/general/nm_utils_log_connection_diff", test_nm_utils_log_connection_diff);
 
 	g_test_add_func ("/general/connection-match/basic", test_connection_match_basic);
diff --git a/src/tests/test-ip4-config.c b/src/tests/test-ip4-config.c
index 2b743c8c..9d38dc27 100644
--- a/src/tests/test-ip4-config.c
+++ b/src/tests/test-ip4-config.c
@@ -28,44 +28,6 @@
 
 #include "nm-test-utils.h"
 
-static void
-addr_init (NMPlatformIP4Address *a, const char *addr, const char *peer, guint plen)
-{
-	memset (a, 0, sizeof (*a));
-	g_assert (inet_pton (AF_INET, addr, (void *) &a->address) == 1);
-	if (peer)
-		g_assert (inet_pton (AF_INET, peer, (void *) &a->peer_address) == 1);
-	else
-		a->peer_address = a->address;
-	a->plen = plen;
-}
-
-static void
-route_new (NMPlatformIP4Route *route, const char *network, guint plen, const char *gw)
-{
-	guint n;
-
-	g_assert (route);
-	memset (route, 0, sizeof (*route));
-	g_assert (inet_pton (AF_INET, network, (void *) &n) == 1);
-	route->network = n;
-	route->plen = plen;
-	if (gw) {
-		n = 0;
-		g_assert (inet_pton (AF_INET, gw, (void *) &n) == 1);
-		route->gateway = n;
-	}
-}
-
-static guint32
-addr_to_num (const char *addr)
-{
-	guint n;
-
-	g_assert (inet_pton (AF_INET, addr, (void *) &n) == 1);
-	return n;
-}
-
 static NMIP4Config *
 build_test_config (void)
 {
@@ -76,29 +38,29 @@ build_test_config (void)
 	/* Build up the config to subtract */
 	config = nm_ip4_config_new (1);
 
-	addr_init (&addr, "192.168.1.10", "1.2.3.4", 24);
+	addr = *nmtst_platform_ip4_address ("192.168.1.10", "1.2.3.4", 24);
 	nm_ip4_config_add_address (config, &addr);
-	
-	route_new (&route, "10.0.0.0", 8, "192.168.1.1");
+
+	route = *nmtst_platform_ip4_route ("10.0.0.0", 8, "192.168.1.1");
 	nm_ip4_config_add_route (config, &route);
 
-	route_new (&route, "172.16.0.0", 16, "192.168.1.1");
+	route = *nmtst_platform_ip4_route ("172.16.0.0", 16, "192.168.1.1");
 	nm_ip4_config_add_route (config, &route);
 
-	nm_ip4_config_set_gateway (config, addr_to_num ("192.168.1.1"));
+	nm_ip4_config_set_gateway (config, nmtst_inet4_from_string ("192.168.1.1"));
 
-	nm_ip4_config_add_nameserver (config, addr_to_num ("4.2.2.1"));
-	nm_ip4_config_add_nameserver (config, addr_to_num ("4.2.2.2"));
+	nm_ip4_config_add_nameserver (config, nmtst_inet4_from_string ("4.2.2.1"));
+	nm_ip4_config_add_nameserver (config, nmtst_inet4_from_string ("4.2.2.2"));
 	nm_ip4_config_add_domain (config, "foobar.com");
 	nm_ip4_config_add_domain (config, "baz.com");
 	nm_ip4_config_add_search (config, "blahblah.com");
 	nm_ip4_config_add_search (config, "beatbox.com");
 
-	nm_ip4_config_add_nis_server (config, addr_to_num ("1.2.3.9"));
-	nm_ip4_config_add_nis_server (config, addr_to_num ("1.2.3.10"));
+	nm_ip4_config_add_nis_server (config, nmtst_inet4_from_string ("1.2.3.9"));
+	nm_ip4_config_add_nis_server (config, nmtst_inet4_from_string ("1.2.3.10"));
 
-	nm_ip4_config_add_wins (config, addr_to_num ("4.2.3.9"));
-	nm_ip4_config_add_wins (config, addr_to_num ("4.2.3.10"));
+	nm_ip4_config_add_wins (config, nmtst_inet4_from_string ("4.2.3.9"));
+	nm_ip4_config_add_wins (config, nmtst_inet4_from_string ("4.2.3.10"));
 
 	return config;
 }
@@ -116,12 +78,12 @@ test_subtract (void)
 	const char *expected_route_dest = "8.7.6.5";
 	guint32 expected_route_plen = 8;
 	const char *expected_route_next_hop = "192.168.1.1";
-	guint32 expected_ns1 = addr_to_num ("8.8.8.8");
-	guint32 expected_ns2 = addr_to_num ("8.8.8.9");
+	guint32 expected_ns1 = nmtst_inet4_from_string ("8.8.8.8");
+	guint32 expected_ns2 = nmtst_inet4_from_string ("8.8.8.9");
 	const char *expected_domain = "wonderfalls.com";
 	const char *expected_search = "somewhere.com";
-	guint32 expected_nis = addr_to_num ("1.2.3.13");
-	guint32 expected_wins = addr_to_num ("2.3.4.5");
+	guint32 expected_nis = nmtst_inet4_from_string ("1.2.3.13");
+	guint32 expected_wins = nmtst_inet4_from_string ("2.3.4.5");
 	guint32 expected_mss = 1400;
 	guint32 expected_mtu = 1492;
 
@@ -129,10 +91,10 @@ test_subtract (void)
 
 	/* add a couple more things to the test config */
 	dst = build_test_config ();
-	addr_init (&addr, expected_addr, NULL, expected_addr_plen);
+	addr = *nmtst_platform_ip4_address (expected_addr, NULL, expected_addr_plen);
 	nm_ip4_config_add_address (dst, &addr);
-	
-	route_new (&route, expected_route_dest, expected_route_plen, expected_route_next_hop);
+
+	route = *nmtst_platform_ip4_route (expected_route_dest, expected_route_plen, expected_route_next_hop);
 	nm_ip4_config_add_route (dst, &route);
 
 	nm_ip4_config_add_nameserver (dst, expected_ns1);
@@ -152,7 +114,7 @@ test_subtract (void)
 	g_assert_cmpuint (nm_ip4_config_get_num_addresses (dst), ==, 1);
 	test_addr = nm_ip4_config_get_address (dst, 0);
 	g_assert (test_addr != NULL);
-	g_assert_cmpuint (test_addr->address, ==, addr_to_num (expected_addr));
+	g_assert_cmpuint (test_addr->address, ==, nmtst_inet4_from_string (expected_addr));
 	g_assert_cmpuint (test_addr->peer_address, ==, test_addr->address);
 	g_assert_cmpuint (test_addr->plen, ==, expected_addr_plen);
 
@@ -161,9 +123,9 @@ test_subtract (void)
 	g_assert_cmpuint (nm_ip4_config_get_num_routes (dst), ==, 1);
 	test_route = nm_ip4_config_get_route (dst, 0);
 	g_assert (test_route != NULL);
-	g_assert_cmpuint (test_route->network, ==, addr_to_num (expected_route_dest));
+	g_assert_cmpuint (test_route->network, ==, nmtst_inet4_from_string (expected_route_dest));
 	g_assert_cmpuint (test_route->plen, ==, expected_route_plen);
-	g_assert_cmpuint (test_route->gateway, ==, addr_to_num (expected_route_next_hop));
+	g_assert_cmpuint (test_route->gateway, ==, nmtst_inet4_from_string (expected_route_next_hop));
 
 	g_assert_cmpuint (nm_ip4_config_get_num_nameservers (dst), ==, 2);
 	g_assert_cmpuint (nm_ip4_config_get_nameserver (dst, 0), ==, expected_ns1);
@@ -198,7 +160,7 @@ test_compare_with_source (void)
 	b = nm_ip4_config_new (2);
 
 	/* Address */
-	addr_init (&addr, "1.2.3.4", NULL, 24);
+	addr = *nmtst_platform_ip4_address ("1.2.3.4", NULL, 24);
 	addr.source = NM_IP_CONFIG_SOURCE_USER;
 	nm_ip4_config_add_address (a, &addr);
 
@@ -206,7 +168,7 @@ test_compare_with_source (void)
 	nm_ip4_config_add_address (b, &addr);
 
 	/* Route */
-	route_new (&route, "10.0.0.0", 8, "192.168.1.1");
+	route = *nmtst_platform_ip4_route ("10.0.0.0", 8, "192.168.1.1");
 	route.source = NM_IP_CONFIG_SOURCE_USER;
 	nm_ip4_config_add_route (a, &route);
 
@@ -230,7 +192,7 @@ test_add_address_with_source (void)
 	a = nm_ip4_config_new (1);
 
 	/* Test that a higher priority source is not overwritten */
-	addr_init (&addr, "1.2.3.4", NULL, 24);
+	addr = *nmtst_platform_ip4_address ("1.2.3.4", NULL, 24);
 	addr.source = NM_IP_CONFIG_SOURCE_USER;
 	nm_ip4_config_add_address (a, &addr);
 
@@ -270,7 +232,7 @@ test_add_route_with_source (void)
 	a = nm_ip4_config_new (1);
 
 	/* Test that a higher priority source is not overwritten */
-	route_new (&route, "1.2.3.4", 24, "1.2.3.1");
+	route = *nmtst_platform_ip4_route ("1.2.3.4", 24, "1.2.3.1");
 	route.source = NM_IP_CONFIG_SOURCE_USER;
 	nm_ip4_config_add_route (a, &route);
 
diff --git a/src/tests/test-route-manager.c b/src/tests/test-route-manager.c
index b32775da..c753174d 100644
--- a/src/tests/test-route-manager.c
+++ b/src/tests/test-route-manager.c
@@ -906,13 +906,13 @@ fixture_teardown (test_fixture *fixture, gconstpointer user_data)
 /*****************************************************************************/
 
 void
-init_tests (int *argc, char ***argv)
+_nmtstp_init_tests (int *argc, char ***argv)
 {
 	nmtst_init_assert_logging (argc, argv, "WARN", "ALL");
 }
 
 void
-setup_tests (void)
+_nmtstp_setup_tests (void)
 {
 	g_test_add ("/route-manager/ip4", test_fixture, NULL, fixture_setup, test_ip4, fixture_teardown);
 	g_test_add ("/route-manager/ip6", test_fixture, NULL, fixture_setup, test_ip6, fixture_teardown);
diff --git a/src/vpn-manager/nm-vpn-connection.c b/src/vpn-manager/nm-vpn-connection.c
index cbc7c69d..2945ad34 100644
--- a/src/vpn-manager/nm-vpn-connection.c
+++ b/src/vpn-manager/nm-vpn-connection.c
@@ -1387,11 +1387,11 @@ nm_vpn_connection_ip4_config_get (NMVpnConnection *self, GVariant *dict)
 	if (g_variant_lookup (dict, NM_VPN_PLUGIN_IP4_CONFIG_PREFIX, "u", &u32))
 		address.plen = u32;
 
-	if (address.address && address.plen) {
+	if (address.address && address.plen && address.plen <= 32) {
 		address.source = NM_IP_CONFIG_SOURCE_VPN;
 		nm_ip4_config_add_address (config, &address);
 	} else {
-		_LOGE ("invalid IP4 config received!");
+		_LOGW ("invalid IP4 config received!");
 		g_object_unref (config);
 		nm_vpn_connection_config_maybe_complete (self, FALSE);
 		return;
@@ -1439,6 +1439,9 @@ nm_vpn_connection_ip4_config_get (NMVpnConnection *self, GVariant *dict)
 				route.metric = route_metric;
 				route.source = NM_IP_CONFIG_SOURCE_VPN;
 
+				if (route.plen > 32)
+					break;
+
 				/* Ignore host routes to the VPN gateway since NM adds one itself
 				 * below.  Since NM knows more about the routing situation than
 				 * the VPN server, we want to use the NM created route instead of
@@ -1448,7 +1451,7 @@ nm_vpn_connection_ip4_config_get (NMVpnConnection *self, GVariant *dict)
 					nm_ip4_config_add_route (config, &route);
 				break;
 			default:
-				_LOGW ("VPN connection: received invalid IPv4 route");
+				break;
 			}
 			g_variant_unref (v);
 		}
@@ -1521,11 +1524,11 @@ nm_vpn_connection_ip6_config_get (NMVpnConnection *self, GVariant *dict)
 	if (g_variant_lookup (dict, NM_VPN_PLUGIN_IP6_CONFIG_PREFIX, "u", &u32))
 		address.plen = u32;
 
-	if (!IN6_IS_ADDR_UNSPECIFIED (&address.address) && address.plen) {
+	if (!IN6_IS_ADDR_UNSPECIFIED (&address.address) && address.plen && address.plen <= 128) {
 		address.source = NM_IP_CONFIG_SOURCE_VPN;
 		nm_ip6_config_add_address (config, &address);
 	} else {
-		_LOGE ("invalid IP6 config received!");
+		_LOGW ("invalid IP6 config received!");
 		g_object_unref (config);
 		nm_vpn_connection_config_maybe_complete (self, FALSE);
 		return;
@@ -1565,10 +1568,11 @@ nm_vpn_connection_ip6_config_get (NMVpnConnection *self, GVariant *dict)
 
 			memset (&route, 0, sizeof (route));
 
-			if (!ip6_addr_from_variant (dest, &route.network)) {
-				_LOGW ("VPN connection: received invalid IPv6 dest address");
+			if (!ip6_addr_from_variant (dest, &route.network))
+				goto next;
+
+			if (prefix > 128)
 				goto next;
-			}
 
 			route.plen = prefix;
 			ip6_addr_from_variant (next_hop, &route.gateway);