summary refs log tree commit diff
path: root/libnm
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2018-09-08 17:44:06 +0200
committerMichael Biebl <biebl@debian.org>2018-09-08 17:44:06 +0200
commit8f7a3cbbdd0c0a48277c341dd3a8ec8743ae9735 (patch)
tree4353551fcb59cc822c3cadf2f4888f70601e8fbf /libnm
parentcaf1db9d6fbc056cc6c76a24574890f6c7895f3d (diff)
New upstream version 1.13.90 upstream/1.13.90
Diffstat (limited to 'libnm')
-rw-r--r--libnm/NetworkManager.h10
-rwxr-xr-xlibnm/generate-setting-docs.py10
-rw-r--r--libnm/libnm.ver63
-rw-r--r--libnm/meson.build12
-rw-r--r--libnm/nm-access-point.c6
-rw-r--r--libnm/nm-access-point.h2
-rw-r--r--libnm/nm-autoptr.h4
-rw-r--r--libnm/nm-client.c17
-rw-r--r--libnm/nm-dbus-helpers.c2
-rw-r--r--libnm/nm-device-6lowpan.c193
-rw-r--r--libnm/nm-device-6lowpan.h50
-rw-r--r--libnm/nm-device-ovs-bridge.c2
-rw-r--r--libnm/nm-device-ovs-bridge.h2
-rw-r--r--libnm/nm-device-ovs-port.c2
-rw-r--r--libnm/nm-device-ovs-port.h2
-rw-r--r--libnm/nm-device-wimax.c12
-rw-r--r--libnm/nm-device-wimax.h6
-rw-r--r--libnm/nm-device-wireguard.c220
-rw-r--r--libnm/nm-device-wireguard.h56
-rw-r--r--libnm/nm-device-wpan.c179
-rw-r--r--libnm/nm-device-wpan.h48
-rw-r--r--libnm/nm-device.c11
-rw-r--r--libnm/nm-dns-manager.c2
-rw-r--r--libnm/nm-ip-config.c2
-rw-r--r--libnm/nm-object.c22
-rw-r--r--libnm/nm-property-docs.xml71
-rw-r--r--libnm/nm-settings-docs-overrides.xml12
-rw-r--r--libnm/nm-settings-docs.xml71
-rw-r--r--libnm/nm-settings-ifcfg-rh-docs.xml28
-rw-r--r--libnm/nm-settings-keyfile-docs.xml14
-rw-r--r--libnm/nm-types.h5
-rw-r--r--libnm/nm-vpn-service-plugin.c17
-rw-r--r--libnm/tests/meson.build2
-rw-r--r--libnm/tests/test-secret-agent.c8
34 files changed, 1006 insertions, 157 deletions
diff --git a/libnm/NetworkManager.h b/libnm/NetworkManager.h
index 9226aa35..759a4131 100644
--- a/libnm/NetworkManager.h
+++ b/libnm/NetworkManager.h
@@ -15,7 +15,7 @@
  * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
  * Boston, MA 02110-1301 USA.
  *
- * Copyright 2014 - 2017 Red Hat, Inc.
+ * Copyright 2014 - 2018 Red Hat, Inc.
  */
 
 #ifndef __NETWORKMANAGER_H__
@@ -29,6 +29,7 @@
 #include "nm-connection.h"
 #include "nm-core-enum-types.h"
 #include "nm-dbus-interface.h"
+#include "nm-device-6lowpan.h"
 #include "nm-device-adsl.h"
 #include "nm-device-bond.h"
 #include "nm-device-bridge.h"
@@ -52,12 +53,15 @@
 #include "nm-device-vxlan.h"
 #include "nm-device-wifi.h"
 #include "nm-device-wimax.h"
+#include "nm-device-wireguard.h"
+#include "nm-device-wpan.h"
 #include "nm-device.h"
 #include "nm-dhcp-config.h"
 #include "nm-enum-types.h"
 #include "nm-ip-config.h"
 #include "nm-object.h"
 #include "nm-remote-connection.h"
+#include "nm-setting-6lowpan.h"
 #include "nm-setting-8021x.h"
 #include "nm-setting-adsl.h"
 #include "nm-setting-bluetooth.h"
@@ -68,6 +72,7 @@
 #include "nm-setting-connection.h"
 #include "nm-setting-dcb.h"
 #include "nm-setting-dummy.h"
+#include "nm-setting-ethtool.h"
 #include "nm-setting-generic.h"
 #include "nm-setting-gsm.h"
 #include "nm-setting-infiniband.h"
@@ -77,6 +82,7 @@
 #include "nm-setting-ip-tunnel.h"
 #include "nm-setting-macsec.h"
 #include "nm-setting-macvlan.h"
+#include "nm-setting-match.h"
 #include "nm-setting-olpc-mesh.h"
 #include "nm-setting-ovs-bridge.h"
 #include "nm-setting-ovs-interface.h"
@@ -86,6 +92,7 @@
 #include "nm-setting-pppoe.h"
 #include "nm-setting-proxy.h"
 #include "nm-setting-serial.h"
+#include "nm-setting-sriov.h"
 #include "nm-setting-tc-config.h"
 #include "nm-setting-team.h"
 #include "nm-setting-team-port.h"
@@ -98,6 +105,7 @@
 #include "nm-setting-wired.h"
 #include "nm-setting-wireless.h"
 #include "nm-setting-wireless-security.h"
+#include "nm-setting-wpan.h"
 #include "nm-setting.h"
 #include "nm-simple-connection.h"
 #include "nm-utils.h"
diff --git a/libnm/generate-setting-docs.py b/libnm/generate-setting-docs.py
index 22552615..bf069cbd 100755
--- a/libnm/generate-setting-docs.py
+++ b/libnm/generate-setting-docs.py
@@ -111,7 +111,7 @@ def init_constants(girxml, settings):
             setting_name = constants[setting_name_symbol]
             setting_names[setting_type_name] = setting_name
 
-def get_prop_type(setting, pspec, propxml):
+def get_prop_type(setting, pspec):
     dbus_type = setting.get_dbus_property_type(pspec.name).dup_string()
     prop_type = dbus_type_name_map[dbus_type]
 
@@ -156,11 +156,9 @@ def get_default_value(setting, pspec, propxml):
     if default_value is None:
         return default_value
 
-    value_type = get_prop_type(setting, pspec, propxml)
+    value_type = get_prop_type(setting, pspec)
     if value_type == 'string' and default_value != '' and pspec.name != 'name':
         default_value = '"%s"' % default_value
-    elif value_type == 'gchar' and default_value != '':
-        default_value = "'%s'" % default_value
     elif value_type == 'boolean':
         default_value = str(default_value).upper()
     elif value_type == 'byte array':
@@ -230,7 +228,7 @@ for settingxml in settings:
         raise Exception("%s needs a gtk-doc block with one-line description" % setting.props.name)
     outfile.write("  <setting name=\"%s\" description=\"%s\" name_upper=\"%s\" >\n" % (setting.props.name, class_desc, get_setting_name_define (settingxml)))
 
-    setting_properties = { prop.name: prop for prop in GObject.list_properties(setting) }
+    setting_properties = { prop.name: prop for prop in GObject.list_properties(setting) if prop.name != 'name' }
     if args.overrides is None:
         setting_overrides = {}
     else:
@@ -251,7 +249,7 @@ for settingxml in settings:
             if propxml is None:
                 propxml = ipxml.find('./gi:property[@name="%s"]' % pspec.name, ns_map)
 
-            value_type = get_prop_type(setting, pspec, propxml)
+            value_type = get_prop_type(setting, pspec)
             value_desc = get_docs(propxml)
             default_value = get_default_value(setting, pspec, propxml)
 
diff --git a/libnm/libnm.ver b/libnm/libnm.ver
index d937f531..00dd06e4 100644
--- a/libnm/libnm.ver
+++ b/libnm/libnm.ver
@@ -1379,3 +1379,66 @@ libnm_1_12_2 {
 	nm_device_ovs_bridge_get_slaves;
 	nm_device_ovs_port_get_slaves;
 } libnm_1_12_0;
+
+libnm_1_14_0 {
+global:
+	nm_connection_get_setting_6lowpan;
+	nm_connection_get_setting_sriov;
+	nm_connection_get_setting_wpan;
+	nm_connection_multi_connect_get_type;
+	nm_device_6lowpan_get_type;
+	nm_device_wireguard_get_fwmark;
+	nm_device_wireguard_get_listen_port;
+	nm_device_wireguard_get_public_key;
+	nm_device_wireguard_get_type;
+	nm_device_wpan_get_type;
+	nm_setting_6lowpan_get_type;
+	nm_setting_connection_get_llmnr;
+	nm_setting_connection_get_multi_connect;
+	nm_setting_connection_llmnr_get_type;
+	nm_setting_ethtool_clear_features;
+	nm_setting_ethtool_get_feature;
+	nm_setting_ethtool_get_type;
+	nm_setting_ethtool_new;
+	nm_setting_ethtool_set_feature;
+	nm_setting_match_add_interface_name;
+	nm_setting_match_clear_interface_names;
+	nm_setting_match_get_interface_name;
+	nm_setting_match_get_interface_names;
+	nm_setting_match_get_num_interface_names;
+	nm_setting_match_get_type;
+	nm_setting_match_remove_interface_name;
+	nm_setting_match_remove_interface_name_by_value;
+	nm_setting_sriov_add_vf;
+	nm_setting_sriov_clear_vfs;
+	nm_setting_sriov_get_autoprobe_drivers;
+	nm_setting_sriov_get_num_vfs;
+	nm_setting_sriov_get_total_vfs;
+	nm_setting_sriov_get_type;
+	nm_setting_sriov_get_vf;
+	nm_setting_sriov_new;
+	nm_setting_sriov_remove_vf;
+	nm_setting_sriov_remove_vf_by_index;
+	nm_setting_wpan_get_type;
+	nm_sriov_vf_add_vlan;
+	nm_sriov_vf_dup;
+	nm_sriov_vf_equal;
+	nm_sriov_vf_get_attribute;
+	nm_sriov_vf_get_attribute_names;
+	nm_sriov_vf_get_index;
+	nm_sriov_vf_get_type;
+	nm_sriov_vf_get_vlan_ids;
+	nm_sriov_vf_get_vlan_protocol;
+	nm_sriov_vf_get_vlan_qos;
+	nm_sriov_vf_new;
+	nm_sriov_vf_ref;
+	nm_sriov_vf_remove_vlan;
+	nm_sriov_vf_set_attribute;
+	nm_sriov_vf_set_vlan_protocol;
+	nm_sriov_vf_set_vlan_qos;
+	nm_sriov_vf_unref;
+	nm_sriov_vf_vlan_protocol_get_type;
+	nm_ternary_get_type;
+	nm_utils_sriov_vf_from_str;
+	nm_utils_sriov_vf_to_str;
+} libnm_1_12_0;
diff --git a/libnm/meson.build b/libnm/meson.build
index 76c77d0c..62e3e9d7 100644
--- a/libnm/meson.build
+++ b/libnm/meson.build
@@ -32,6 +32,7 @@ libnm_headers = files(
   'nm-autoptr.h',
   'nm-checkpoint.h',
   'nm-client.h',
+  'nm-device-6lowpan.h',
   'nm-device-adsl.h',
   'nm-device-bond.h',
   'nm-device-bridge.h',
@@ -56,6 +57,8 @@ libnm_headers = files(
   'nm-device-vxlan.h',
   'nm-device-wifi.h',
   'nm-device-wimax.h',
+  'nm-device-wireguard.h',
+  'nm-device-wpan.h',
   'nm-dhcp-config.h',
   'nm-ip-config.h',
   'nm-object.h',
@@ -93,6 +96,7 @@ libnm_sources = files(
   'nm-checkpoint.c',
   'nm-client.c',
   'nm-dbus-helpers.c',
+  'nm-device-6lowpan.c',
   'nm-device-adsl.c',
   'nm-device-bond.c',
   'nm-device-bridge.c',
@@ -117,6 +121,8 @@ libnm_sources = files(
   'nm-device-vxlan.c',
   'nm-device-wifi.c',
   'nm-device-wimax.c',
+  'nm-device-wireguard.c',
+  'nm-device-wpan.c',
   'nm-dhcp-config.c',
   'nm-dhcp4-config.c',
   'nm-dhcp6-config.c',
@@ -182,10 +188,10 @@ pkg.generate(
   ]
 )
 
-run_target(
+test(
   'check-local-exports-' + libnm_name,
-  command: [check_exports, libnm.full_path(), linker_script],
-  depends: libnm
+  check_exports,
+  args: [libnm.full_path(), linker_script],
 )
 
 if enable_introspection
diff --git a/libnm/nm-access-point.c b/libnm/nm-access-point.c
index 75ea5570..1cac12f9 100644
--- a/libnm/nm-access-point.c
+++ b/libnm/nm-access-point.c
@@ -48,7 +48,7 @@ typedef struct {
 	NM80211Mode mode;
 	guint32 max_bitrate;
 	guint8 strength;
-	gint last_seen;
+	int last_seen;
 } NMAccessPointPrivate;
 
 enum {
@@ -233,14 +233,14 @@ nm_access_point_get_strength (NMAccessPoint *ap)
  *
  * Since: 1.2
  **/
-gint
+int
 nm_access_point_get_last_seen (NMAccessPoint *ap)
 {
 	g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), -1);
 
 	return NM_ACCESS_POINT_GET_PRIVATE (ap)->last_seen;
 }
-NM_BACKPORT_SYMBOL (libnm_1_0_6, gint, nm_access_point_get_last_seen, (NMAccessPoint *ap), (ap));
+NM_BACKPORT_SYMBOL (libnm_1_0_6, int, nm_access_point_get_last_seen, (NMAccessPoint *ap), (ap));
 
 /**
  * nm_access_point_connection_valid:
diff --git a/libnm/nm-access-point.h b/libnm/nm-access-point.h
index 177b6a9a..dccf2fe5 100644
--- a/libnm/nm-access-point.h
+++ b/libnm/nm-access-point.h
@@ -77,7 +77,7 @@ NM80211Mode            nm_access_point_get_mode         (NMAccessPoint *ap);
 guint32                nm_access_point_get_max_bitrate  (NMAccessPoint *ap);
 guint8                 nm_access_point_get_strength     (NMAccessPoint *ap);
 NM_AVAILABLE_IN_1_2
-gint                   nm_access_point_get_last_seen    (NMAccessPoint *ap);
+int                    nm_access_point_get_last_seen    (NMAccessPoint *ap);
 
 GPtrArray *            nm_access_point_filter_connections (NMAccessPoint *ap,
                                                            const GPtrArray *connections);
diff --git a/libnm/nm-autoptr.h b/libnm/nm-autoptr.h
index 6b2fd015..665c28c0 100644
--- a/libnm/nm-autoptr.h
+++ b/libnm/nm-autoptr.h
@@ -47,6 +47,7 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC (NMSettingCdma, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (NMSettingConnection, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (NMSettingDcb, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (NMSettingDummy, g_object_unref)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (NMSettingEthtool, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (NMSettingGeneric, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (NMSettingGsm, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (NMSettingInfiniband, g_object_unref)
@@ -78,7 +79,10 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC (NMSettingWired, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (NMSettingWireless, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (NMSettingWirelessSecurity, g_object_unref)
 
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (NMVpnEditor, g_object_unref)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (NMVpnEditorPlugin, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (NMVpnPluginInfo, g_object_unref)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (NMVpnServicePlugin, g_object_unref)
 
 #endif
 
diff --git a/libnm/nm-client.c b/libnm/nm-client.c
index 18d3e318..96db30c7 100644
--- a/libnm/nm-client.c
+++ b/libnm/nm-client.c
@@ -16,7 +16,7 @@
  * Boston, MA 02110-1301 USA.
  *
  * Copyright 2007 - 2008 Novell, Inc.
- * Copyright 2007 - 2014 Red Hat, Inc.
+ * Copyright 2007 - 2018 Red Hat, Inc.
  */
 
 #include "nm-default.h"
@@ -51,6 +51,7 @@
 #include "nm-access-point.h"
 #include "nm-active-connection.h"
 #include "nm-checkpoint.h"
+#include "nm-device-6lowpan.h"
 #include "nm-device-adsl.h"
 #include "nm-device-bond.h"
 #include "nm-device-bridge.h"
@@ -74,6 +75,8 @@
 #include "nm-device-vxlan.h"
 #include "nm-device-wifi.h"
 #include "nm-device-wimax.h"
+#include "nm-device-wireguard.h"
+#include "nm-device-wpan.h"
 #include "nm-dhcp4-config.h"
 #include "nm-dhcp6-config.h"
 #include "nm-dhcp-config.h"
@@ -2463,8 +2466,8 @@ nm_client_checkpoint_adjust_rollback_timeout_finish (NMClient *client,
 
 static GType
 proxy_type (GDBusObjectManagerClient *manager,
-            const gchar *object_path,
-            const gchar *interface_name,
+            const char *object_path,
+            const char *interface_name,
             gpointer user_data)
 {
 	/* ObjectManager asks us for an object proxy. Unfortunatelly, we can't
@@ -2523,6 +2526,8 @@ obj_nm_for_gdbus_object (NMClient *self, GDBusObject *object, GDBusObjectManager
 			type = NM_TYPE_ACCESS_POINT;
 		else if (strcmp (ifname, NM_DBUS_INTERFACE_ACTIVE_CONNECTION) == 0 && type != NM_TYPE_VPN_CONNECTION)
 			type = NM_TYPE_ACTIVE_CONNECTION;
+		else if (strcmp (ifname, NM_DBUS_INTERFACE_DEVICE_6LOWPAN) == 0)
+			type = NM_TYPE_DEVICE_6LOWPAN;
 		else if (strcmp (ifname, NM_DBUS_INTERFACE_DEVICE_ADSL) == 0)
 			type = NM_TYPE_DEVICE_ADSL;
 		else if (strcmp (ifname, NM_DBUS_INTERFACE_DEVICE_BOND) == 0)
@@ -2563,12 +2568,16 @@ obj_nm_for_gdbus_object (NMClient *self, GDBusObject *object, GDBusObjectManager
 			type = NM_TYPE_DEVICE_TUN;
 		else if (strcmp (ifname, NM_DBUS_INTERFACE_DEVICE_VLAN) == 0)
 			type = NM_TYPE_DEVICE_VLAN;
+		else if (strcmp (ifname, NM_DBUS_INTERFACE_DEVICE_WPAN) == 0)
+			type = NM_TYPE_DEVICE_WPAN;
 		else if (strcmp (ifname, NM_DBUS_INTERFACE_DEVICE_VXLAN) == 0)
 			type = NM_TYPE_DEVICE_VXLAN;
 		else if (strcmp (ifname, NM_DBUS_INTERFACE_DEVICE_WIRELESS) == 0)
 			type = NM_TYPE_DEVICE_WIFI;
 		else if (strcmp (ifname, NM_DBUS_INTERFACE_DEVICE_WIMAX) == 0)
 			type = NM_TYPE_DEVICE_WIMAX;
+		else if (strcmp (ifname, NM_DBUS_INTERFACE_DEVICE_WIREGUARD) == 0)
+			type = NM_TYPE_DEVICE_WIREGUARD;
 		else if (strcmp (ifname, NM_DBUS_INTERFACE_DHCP4_CONFIG) == 0)
 			type = NM_TYPE_DHCP4_CONFIG;
 		else if (strcmp (ifname, NM_DBUS_INTERFACE_DHCP6_CONFIG) == 0)
@@ -3792,4 +3801,4 @@ NM_BACKPORT_SYMBOL (libnm_1_0_6, gboolean, nm_utils_enum_from_str,
                     (GType type, const char *str, int *out_value, char **err_token),
                     (type, str, out_value, err_token));
 
-NM_BACKPORT_SYMBOL (libnm_1_2_4, gint, nm_setting_ip_config_get_dns_priority, (NMSettingIPConfig *setting), (setting));
+NM_BACKPORT_SYMBOL (libnm_1_2_4, int, nm_setting_ip_config_get_dns_priority, (NMSettingIPConfig *setting), (setting));
diff --git a/libnm/nm-dbus-helpers.c b/libnm/nm-dbus-helpers.c
index 90818a14..33c68191 100644
--- a/libnm/nm-dbus-helpers.c
+++ b/libnm/nm-dbus-helpers.c
@@ -115,7 +115,7 @@ _nm_dbus_proxy_replace_match (GDBusProxy *proxy)
 {
 	GDBusConnection *connection = g_dbus_proxy_get_connection (proxy);
 	static unsigned match_counter = 1024;
-	gchar *match;
+	char *match;
 
 	if (match_counter == 1) {
 		/* If we hit the low matches watermark, install a
diff --git a/libnm/nm-device-6lowpan.c b/libnm/nm-device-6lowpan.c
new file mode 100644
index 00000000..9a305d26
--- /dev/null
+++ b/libnm/nm-device-6lowpan.c
@@ -0,0 +1,193 @@
+/*
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * Copyright 2018 Red Hat, Inc.
+ */
+
+#include "nm-default.h"
+
+#include "nm-device-6lowpan.h"
+#include "nm-object-private.h"
+
+typedef struct {
+	NMDevice *parent;
+	char *hw_address;
+} NMDevice6LowpanPrivate;
+
+/**
+ * NMDevice6Lowpan:
+ */
+struct _NMDevice6Lowpan {
+        NMDevice parent;
+};
+
+typedef struct {
+        NMDeviceClass parent;
+
+        /*< private >*/
+        gpointer padding[4];
+} NMDevice6LowpanClass;
+
+G_DEFINE_TYPE (NMDevice6Lowpan, nm_device_6lowpan, NM_TYPE_DEVICE)
+
+#define NM_DEVICE_6LOWPAN_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_6LOWPAN, NMDevice6LowpanPrivate))
+
+NM_GOBJECT_PROPERTIES_DEFINE_BASE (
+	PROP_PARENT,
+	PROP_HW_ADDRESS,
+);
+
+/**
+ * nm_device_6lowpan_get_parent:
+ * @device: a #NMDevice6Lowpan
+ *
+ * Returns: (transfer none): the device's parent device
+ *
+ * Since: 1.14
+ **/
+NMDevice *
+nm_device_6lowpan_get_parent (NMDevice6Lowpan *device)
+{
+	g_return_val_if_fail (NM_IS_DEVICE_6LOWPAN (device), NULL);
+
+	return NM_DEVICE_6LOWPAN_GET_PRIVATE (device)->parent;
+}
+
+/**
+ * nm_device_6lowpan_get_hw_address:
+ * @device: a #NMDevice6Lowpan
+ *
+ * Gets the hardware (MAC) address of the #NMDevice6Lowpan
+ *
+ * Returns: the hardware address. This is the internal string used by the
+ * device, and must not be modified.
+ *
+ * Since: 1.14
+ **/
+const char *
+nm_device_6lowpan_get_hw_address (NMDevice6Lowpan *device)
+{
+	g_return_val_if_fail (NM_IS_DEVICE_6LOWPAN (device), NULL);
+
+	return NM_DEVICE_6LOWPAN_GET_PRIVATE (device)->hw_address;
+}
+
+static const char *
+get_hw_address (NMDevice *device)
+{
+	return nm_device_6lowpan_get_hw_address (NM_DEVICE_6LOWPAN (device));
+}
+
+/***********************************************************/
+
+static void
+nm_device_6lowpan_init (NMDevice6Lowpan *device)
+{
+}
+
+static void
+init_dbus (NMObject *object)
+{
+	NMDevice6LowpanPrivate *priv = NM_DEVICE_6LOWPAN_GET_PRIVATE (object);
+	const NMPropertiesInfo property_info[] = {
+		{ NM_DEVICE_6LOWPAN_PARENT,         &priv->parent, NULL, NM_TYPE_DEVICE },
+		{ NM_DEVICE_6LOWPAN_HW_ADDRESS,     &priv->hw_address },
+		{ NULL },
+	};
+
+	NM_OBJECT_CLASS (nm_device_6lowpan_parent_class)->init_dbus (object);
+
+	_nm_object_register_properties (object,
+	                                NM_DBUS_INTERFACE_DEVICE_6LOWPAN,
+	                                property_info);
+}
+
+static void
+finalize (GObject *object)
+{
+	NMDevice6LowpanPrivate *priv = NM_DEVICE_6LOWPAN_GET_PRIVATE (object);
+
+	g_free (priv->hw_address);
+	g_clear_object (&priv->parent);
+
+	G_OBJECT_CLASS (nm_device_6lowpan_parent_class)->finalize (object);
+}
+
+static void
+get_property (GObject *object,
+              guint prop_id,
+              GValue *value,
+              GParamSpec *pspec)
+{
+	NMDevice6Lowpan *device = NM_DEVICE_6LOWPAN (object);
+
+	switch (prop_id) {
+	case PROP_PARENT:
+		g_value_set_object (value, nm_device_6lowpan_get_parent (device));
+		break;
+	case PROP_HW_ADDRESS:
+		g_value_set_string (value, nm_device_6lowpan_get_hw_address (device));
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+nm_device_6lowpan_class_init (NMDevice6LowpanClass *klass)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS (klass);
+	NMObjectClass *nm_object_class = NM_OBJECT_CLASS (klass);
+	NMDeviceClass *device_class = NM_DEVICE_CLASS (klass);
+
+	g_type_class_add_private (klass, sizeof (NMDevice6LowpanPrivate));
+
+	object_class->finalize = finalize;
+	object_class->get_property = get_property;
+
+	nm_object_class->init_dbus = init_dbus;
+
+	device_class->get_hw_address = get_hw_address;
+
+	/**
+	 * NMDevice6Lowpan:parent:
+	 *
+	 * The devices's parent device.
+	 *
+	 * Since: 1.14
+	 **/
+	obj_properties[PROP_PARENT] =
+		g_param_spec_object (NM_DEVICE_6LOWPAN_PARENT, "", "",
+		                     NM_TYPE_DEVICE,
+		                     G_PARAM_READABLE |
+		                     G_PARAM_STATIC_STRINGS);
+
+	/**
+	 * NMDevice6Lowpan:hw-address:
+	 *
+	 * The hardware (MAC) address of the device.
+	 *
+	 * Since: 1.14
+	 **/
+	obj_properties[PROP_HW_ADDRESS] =
+		g_param_spec_string (NM_DEVICE_6LOWPAN_HW_ADDRESS, "", "",
+		                     NULL,
+		                     G_PARAM_READABLE |
+		                     G_PARAM_STATIC_STRINGS);
+
+	g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties);
+}
diff --git a/libnm/nm-device-6lowpan.h b/libnm/nm-device-6lowpan.h
new file mode 100644
index 00000000..96f34dc3
--- /dev/null
+++ b/libnm/nm-device-6lowpan.h
@@ -0,0 +1,50 @@
+/*
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * Copyright 2018 Red Hat, Inc.
+ */
+
+#ifndef __NM_DEVICE_6LOWPAN_H__
+#define __NM_DEVICE_6LOWPAN_H__
+
+#if !defined (__NETWORKMANAGER_H_INSIDE__) && !defined(NETWORKMANAGER_COMPILATION)
+#error "Only <NetworkManager.h> can be included directly."
+#endif
+
+#include "nm-device.h"
+
+G_BEGIN_DECLS
+
+#define NM_TYPE_DEVICE_6LOWPAN            (nm_device_6lowpan_get_type ())
+#define NM_DEVICE_6LOWPAN(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_DEVICE_6LOWPAN, NMDevice6Lowpan))
+#define NM_DEVICE_6LOWPAN_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_DEVICE_6LOWPAN, NMDevice6LowpanClass))
+#define NM_IS_DEVICE_6LOWPAN(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_DEVICE_6LOWPAN))
+#define NM_IS_DEVICE_6LOWPAN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_DEVICE_6LOWPAN))
+#define NM_DEVICE_6LOWPAN_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DEVICE_6LOWPAN, NMDevice6LowpanClass))
+
+#define NM_DEVICE_6LOWPAN_PARENT          "parent"
+#define NM_DEVICE_6LOWPAN_HW_ADDRESS      "hw-address"
+
+NM_AVAILABLE_IN_1_14
+GType nm_device_6lowpan_get_type (void);
+
+NM_AVAILABLE_IN_1_14
+NMDevice *   nm_device_6lowpan_get_parent (NMDevice6Lowpan *device);
+NM_AVAILABLE_IN_1_14
+const char * nm_device_6lowpan_get_hw_address (NMDevice6Lowpan *device);
+G_END_DECLS
+
+#endif /* __NM_DEVICE_6LOWPAN_H__ */
diff --git a/libnm/nm-device-ovs-bridge.c b/libnm/nm-device-ovs-bridge.c
index 7b1c5f47..27ee97cf 100644
--- a/libnm/nm-device-ovs-bridge.c
+++ b/libnm/nm-device-ovs-bridge.c
@@ -61,7 +61,7 @@ G_DEFINE_TYPE (NMDeviceOvsBridge, nm_device_ovs_bridge, NM_TYPE_DEVICE)
  * #NMDevices that are slaves of @device. This is the internal
  * copy used by the device, and must not be modified.
  *
- * Since: 1.12.2
+ * Since: 1.14
  **/
 const GPtrArray *
 nm_device_ovs_bridge_get_slaves (NMDeviceOvsBridge *device)
diff --git a/libnm/nm-device-ovs-bridge.h b/libnm/nm-device-ovs-bridge.h
index 38f6fa87..13d542a3 100644
--- a/libnm/nm-device-ovs-bridge.h
+++ b/libnm/nm-device-ovs-bridge.h
@@ -42,7 +42,7 @@ typedef struct _NMDeviceOvsBridgeClass NMDeviceOvsBridgeClass;
 NM_AVAILABLE_IN_1_10
 GType nm_device_ovs_bridge_get_type (void);
 
-NM_AVAILABLE_IN_1_12_2
+NM_AVAILABLE_IN_1_14
 const GPtrArray *nm_device_ovs_bridge_get_slaves (NMDeviceOvsBridge *device);
 
 G_END_DECLS
diff --git a/libnm/nm-device-ovs-port.c b/libnm/nm-device-ovs-port.c
index ab33163a..8be5549a 100644
--- a/libnm/nm-device-ovs-port.c
+++ b/libnm/nm-device-ovs-port.c
@@ -61,7 +61,7 @@ G_DEFINE_TYPE (NMDeviceOvsPort, nm_device_ovs_port, NM_TYPE_DEVICE)
  * #NMDevices that are slaves of @device. This is the internal
  * copy used by the device, and must not be modified.
  *
- * Since: 1.12.2
+ * Since: 1.14
  **/
 const GPtrArray *
 nm_device_ovs_port_get_slaves (NMDeviceOvsPort *device)
diff --git a/libnm/nm-device-ovs-port.h b/libnm/nm-device-ovs-port.h
index 56a84cb9..088e3692 100644
--- a/libnm/nm-device-ovs-port.h
+++ b/libnm/nm-device-ovs-port.h
@@ -42,7 +42,7 @@ typedef struct _NMDeviceOvsPortClass NMDeviceOvsPortClass;
 NM_AVAILABLE_IN_1_10
 GType nm_device_ovs_port_get_type (void);
 
-NM_AVAILABLE_IN_1_12_2
+NM_AVAILABLE_IN_1_14
 const GPtrArray *nm_device_ovs_port_get_slaves (NMDeviceOvsPort *device);
 
 G_END_DECLS
diff --git a/libnm/nm-device-wimax.c b/libnm/nm-device-wimax.c
index 7134024f..08624594 100644
--- a/libnm/nm-device-wimax.c
+++ b/libnm/nm-device-wimax.c
@@ -45,9 +45,9 @@ typedef struct {
 	GPtrArray *nsps;
 
 	guint center_freq;
-	gint rssi;
-	gint cinr;
-	gint tx_power;
+	int rssi;
+	int cinr;
+	int tx_power;
 	char *bsid;
 } NMDeviceWimaxPrivate;
 
@@ -235,7 +235,7 @@ nm_device_wimax_get_center_frequency (NMDeviceWimax *self)
  *
  * Deprecated: 1.2: WiMAX is no longer supported.
  **/
-gint
+int
 nm_device_wimax_get_rssi (NMDeviceWimax *self)
 {
 	g_return_val_if_fail (NM_IS_DEVICE_WIMAX (self), 0);
@@ -255,7 +255,7 @@ nm_device_wimax_get_rssi (NMDeviceWimax *self)
  *
  * Deprecated: 1.2: WiMAX is no longer supported.
  **/
-gint
+int
 nm_device_wimax_get_cinr (NMDeviceWimax *self)
 {
 	g_return_val_if_fail (NM_IS_DEVICE_WIMAX (self), 0);
@@ -275,7 +275,7 @@ nm_device_wimax_get_cinr (NMDeviceWimax *self)
  *
  * Deprecated: 1.2: WiMAX is no longer supported.
  **/
-gint
+int
 nm_device_wimax_get_tx_power (NMDeviceWimax *self)
 {
 	g_return_val_if_fail (NM_IS_DEVICE_WIMAX (self), 0);
diff --git a/libnm/nm-device-wimax.h b/libnm/nm-device-wimax.h
index cc3fc6e1..3b50ac6b 100644
--- a/libnm/nm-device-wimax.h
+++ b/libnm/nm-device-wimax.h
@@ -81,11 +81,11 @@ const GPtrArray *nm_device_wimax_get_nsps        (NMDeviceWimax *wimax);
 NM_DEPRECATED_IN_1_2
 guint            nm_device_wimax_get_center_frequency (NMDeviceWimax *self);
 NM_DEPRECATED_IN_1_2
-gint             nm_device_wimax_get_rssi        (NMDeviceWimax *self);
+int              nm_device_wimax_get_rssi        (NMDeviceWimax *self);
 NM_DEPRECATED_IN_1_2
-gint             nm_device_wimax_get_cinr        (NMDeviceWimax *self);
+int              nm_device_wimax_get_cinr        (NMDeviceWimax *self);
 NM_DEPRECATED_IN_1_2
-gint             nm_device_wimax_get_tx_power    (NMDeviceWimax *self);
+int              nm_device_wimax_get_tx_power    (NMDeviceWimax *self);
 NM_DEPRECATED_IN_1_2
 const char *     nm_device_wimax_get_bsid        (NMDeviceWimax *self);
 
diff --git a/libnm/nm-device-wireguard.c b/libnm/nm-device-wireguard.c
new file mode 100644
index 00000000..8a76ff44
--- /dev/null
+++ b/libnm/nm-device-wireguard.c
@@ -0,0 +1,220 @@
+/*
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * Copyright 2018 Javier Arteaga <jarteaga@jbeta.is>
+ */
+
+#include "nm-default.h"
+
+#include "nm-device-wireguard.h"
+#include "nm-object-private.h"
+
+typedef struct {
+	GBytes *public_key;
+	guint listen_port;
+	guint fwmark;
+} NMDeviceWireGuardPrivate;
+
+/**
+ * NMDeviceWireGuard:
+ */
+struct _NMDeviceWireGuard {
+	NMDevice parent;
+};
+
+struct _NMDeviceWireGuardClass {
+	NMDeviceClass parent;
+};
+
+G_DEFINE_TYPE (NMDeviceWireGuard, nm_device_wireguard, NM_TYPE_DEVICE)
+
+#define NM_DEVICE_WIREGUARD_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_WIREGUARD, NMDeviceWireGuardPrivate))
+
+NM_GOBJECT_PROPERTIES_DEFINE_BASE (
+	PROP_PUBLIC_KEY,
+	PROP_LISTEN_PORT,
+	PROP_FWMARK,
+);
+
+/**
+ * nm_device_wireguard_get_public_key:
+ * @device: a #NMDeviceWireGuard
+ *
+ * Gets the public key for this interface
+ *
+ * Returns: (transfer none): the #GBytes containing the 32-byte public key
+ *
+ * Since: 1.14
+ **/
+GBytes *
+nm_device_wireguard_get_public_key (NMDeviceWireGuard *device)
+{
+	g_return_val_if_fail (NM_IS_DEVICE_WIREGUARD (device), NULL);
+
+	return NM_DEVICE_WIREGUARD_GET_PRIVATE (device)->public_key;
+}
+
+/**
+ * nm_device_wireguard_get_listen_port:
+ * @device: a #NMDeviceWireGuard
+ *
+ * Gets the local UDP port this interface listens on
+ *
+ * Returns: UDP listen port
+ *
+ * Since: 1.14
+ **/
+guint16
+nm_device_wireguard_get_listen_port (NMDeviceWireGuard *device)
+{
+	g_return_val_if_fail (NM_IS_DEVICE_WIREGUARD (device), 0);
+
+	return NM_DEVICE_WIREGUARD_GET_PRIVATE (device)->listen_port;
+}
+
+/**
+ * nm_device_wireguard_get_fwmark:
+ * @device: a #NMDeviceWireGuard
+ *
+ * Gets the fwmark (firewall mark) for this interface.
+ * It can be used to set routing policy for outgoing encrypted packets.
+ * See: ip-rule(8)
+ *
+ * Returns: 0 if fwmark not in use, 32-bit fwmark value otherwise
+ *
+ * Since: 1.14
+ **/
+guint32
+nm_device_wireguard_get_fwmark (NMDeviceWireGuard *device)
+{
+	g_return_val_if_fail (NM_IS_DEVICE_WIREGUARD (device), 0);
+
+	return NM_DEVICE_WIREGUARD_GET_PRIVATE (device)->fwmark;
+}
+
+/***********************************************************/
+
+static void
+get_property (GObject *object,
+              guint prop_id,
+              GValue *value,
+              GParamSpec *pspec)
+{
+	NMDeviceWireGuard *device = NM_DEVICE_WIREGUARD (object);
+
+	switch (prop_id) {
+	case PROP_PUBLIC_KEY:
+		g_value_set_boxed (value, nm_device_wireguard_get_public_key (device));
+		break;
+	case PROP_LISTEN_PORT:
+		g_value_set_uint (value, nm_device_wireguard_get_listen_port (device));
+		break;
+	case PROP_FWMARK:
+		g_value_set_uint (value, nm_device_wireguard_get_fwmark (device));
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+nm_device_wireguard_init (NMDeviceWireGuard *device)
+{
+}
+
+static void
+init_dbus (NMObject *object)
+{
+	NMDeviceWireGuardPrivate *priv = NM_DEVICE_WIREGUARD_GET_PRIVATE (object);
+	const NMPropertiesInfo property_info[] = {
+		{ NM_DEVICE_WIREGUARD_PUBLIC_KEY,  &priv->public_key },
+		{ NM_DEVICE_WIREGUARD_LISTEN_PORT, &priv->listen_port },
+		{ NM_DEVICE_WIREGUARD_FWMARK,      &priv->fwmark },
+		{ NULL }
+	};
+
+	NM_OBJECT_CLASS (nm_device_wireguard_parent_class)->init_dbus (object);
+
+	_nm_object_register_properties (object,
+	                                NM_DBUS_INTERFACE_DEVICE_WIREGUARD,
+	                                property_info);
+}
+
+static void
+finalize (GObject *object)
+{
+	NMDeviceWireGuardPrivate *priv = NM_DEVICE_WIREGUARD_GET_PRIVATE (object);
+
+	g_bytes_unref (priv->public_key);
+
+	G_OBJECT_CLASS (nm_device_wireguard_parent_class)->finalize (object);
+}
+
+static void
+nm_device_wireguard_class_init (NMDeviceWireGuardClass *wireguard_class)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS (wireguard_class);
+	NMObjectClass *nm_object_class = NM_OBJECT_CLASS (wireguard_class);
+
+	g_type_class_add_private (wireguard_class, sizeof (NMDeviceWireGuardPrivate));
+
+	object_class->get_property = get_property;
+	object_class->finalize = finalize;
+
+	nm_object_class->init_dbus = init_dbus;
+
+	/**
+	 * NMDeviceWireGuard:public-key:
+	 *
+	 * 32-byte public key, derived from the current private key.
+	 *
+	 * Since: 1.14
+	 **/
+	obj_properties[PROP_PUBLIC_KEY] =
+	    g_param_spec_boxed (NM_DEVICE_WIREGUARD_PUBLIC_KEY, "", "",
+	                        G_TYPE_BYTES,
+	                        G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
+	/**
+	 * NMDeviceWireGuard:listen-port:
+	 *
+	 * Local UDP listen port.
+	 * Set to 0 to allow a random port to be chosen (default).
+	 *
+	 * Since: 1.14
+	 **/
+	obj_properties[PROP_LISTEN_PORT] =
+	    g_param_spec_uint (NM_DEVICE_WIREGUARD_LISTEN_PORT, "", "",
+	                       0, G_MAXUINT16, 0,
+	                       G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
+	/**
+	 * NMDeviceWireGuard:fwmark:
+	 *
+	 * Optional firewall mark - see ip-rule(8).
+	 * Used when setting routing policy for outgoing encrypted packets.
+	 * Set to 0 to disable the mark (default).
+	 *
+	 * Since: 1.14
+	 **/
+	obj_properties[PROP_FWMARK] =
+	    g_param_spec_uint (NM_DEVICE_WIREGUARD_FWMARK, "", "",
+	                       0, G_MAXUINT32, 0,
+	                       G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
+	g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties);
+}
diff --git a/libnm/nm-device-wireguard.h b/libnm/nm-device-wireguard.h
new file mode 100644
index 00000000..37e97a0a
--- /dev/null
+++ b/libnm/nm-device-wireguard.h
@@ -0,0 +1,56 @@
+/*
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * Copyright 2018 Javier Arteaga <jarteaga@jbeta.is>
+ */
+
+#ifndef __NM_DEVICE_WIREGUARD_H__
+#define __NM_DEVICE_WIREGUARD_H__
+
+#if !defined (__NETWORKMANAGER_H_INSIDE__) && !defined(NETWORKMANAGER_COMPILATION)
+#error "Only <NetworkManager.h> can be included directly."
+#endif
+
+#include "nm-device.h"
+
+G_BEGIN_DECLS
+
+#define NM_TYPE_DEVICE_WIREGUARD            (nm_device_wireguard_get_type ())
+#define NM_DEVICE_WIREGUARD(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_DEVICE_WIREGUARD, NMDeviceWireGuard))
+#define NM_DEVICE_WIREGUARD_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_DEVICE_WIREGUARD, NMDeviceWireGuardClass))
+#define NM_IS_DEVICE_WIREGUARD(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_DEVICE_WIREGUARD))
+#define NM_IS_DEVICE_WIREGUARD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_DEVICE_WIREGUARD))
+#define NM_DEVICE_WIREGUARD_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DEVICE_WIREGUARD, NMDeviceWireGuardClass))
+
+typedef struct _NMDeviceWireGuardClass NMDeviceWireGuardClass;
+
+#define NM_DEVICE_WIREGUARD_PUBLIC_KEY   "public-key"
+#define NM_DEVICE_WIREGUARD_LISTEN_PORT  "listen-port"
+#define NM_DEVICE_WIREGUARD_FWMARK       "fwmark"
+
+NM_AVAILABLE_IN_1_14
+GType nm_device_wireguard_get_type (void);
+
+NM_AVAILABLE_IN_1_14
+GBytes* nm_device_wireguard_get_public_key (NMDeviceWireGuard *device);
+NM_AVAILABLE_IN_1_14
+guint16 nm_device_wireguard_get_listen_port (NMDeviceWireGuard *device);
+NM_AVAILABLE_IN_1_14
+guint32 nm_device_wireguard_get_fwmark (NMDeviceWireGuard *device);
+
+G_END_DECLS
+
+#endif /* __NM_DEVICE_WIREGUARD_H__ */
diff --git a/libnm/nm-device-wpan.c b/libnm/nm-device-wpan.c
new file mode 100644
index 00000000..61183623
--- /dev/null
+++ b/libnm/nm-device-wpan.c
@@ -0,0 +1,179 @@
+/*
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * Copyright 2018 Lubomir Rintel <lkundrak@v3.sk>
+ */
+
+#include "nm-default.h"
+
+#include <string.h>
+
+#include "nm-device-wpan.h"
+#include "nm-object-private.h"
+#include "nm-setting-wpan.h"
+#include "nm-setting-connection.h"
+
+enum {
+        PROP_0,
+        PROP_HW_ADDRESS,
+
+        LAST_PROP
+};
+
+typedef struct {
+        char *hw_address;
+} NMDeviceWpanPrivate;
+
+/**
+ * NMDeviceWpan:
+ */
+struct _NMDeviceWpan {
+        NMDevice parent;
+};
+
+typedef struct {
+        NMDeviceClass parent;
+} NMDeviceWpanClass;
+
+G_DEFINE_TYPE (NMDeviceWpan, nm_device_wpan, NM_TYPE_DEVICE)
+
+#define NM_DEVICE_WPAN_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_WPAN, NMDeviceWpanPrivate))
+
+/*****************************************************************************/
+
+/**
+ * nm_device_wpan_get_hw_address:
+ * @device: a #NMDeviceWpan
+ *
+ * Gets the active hardware (MAC) address of the #NMDeviceWpan
+ *
+ * Returns: the active hardware address. This is the internal string used by the
+ * device, and must not be modified.
+ **/
+const char *
+nm_device_wpan_get_hw_address (NMDeviceWpan *device)
+{
+        g_return_val_if_fail (NM_IS_DEVICE_WPAN (device), NULL);
+
+        return nm_str_not_empty (NM_DEVICE_WPAN_GET_PRIVATE (device)->hw_address);
+}
+
+static gboolean
+connection_compatible (NMDevice *device, NMConnection *connection, GError **error)
+{
+	if (!NM_DEVICE_CLASS (nm_device_wpan_parent_class)->connection_compatible (device, connection, error))
+		return FALSE;
+
+	if (!nm_connection_is_type (connection, NM_SETTING_WPAN_SETTING_NAME)) {
+		g_set_error_literal (error, NM_DEVICE_ERROR, NM_DEVICE_ERROR_INCOMPATIBLE_CONNECTION,
+		                     _("The connection was not a wpan connection."));
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+static GType
+get_setting_type (NMDevice *device)
+{
+	return NM_TYPE_SETTING_WPAN;
+}
+
+static const char *
+get_hw_address (NMDevice *device)
+{
+	return nm_device_wpan_get_hw_address (NM_DEVICE_WPAN (device));
+}
+
+/*****************************************************************************/
+
+static void
+get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+{
+	switch (prop_id) {
+	case PROP_HW_ADDRESS:
+		g_value_set_string (value, nm_device_wpan_get_hw_address (NM_DEVICE_WPAN (object)));
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
+nm_device_wpan_init (NMDeviceWpan *device)
+{
+}
+
+static void
+init_dbus (NMObject *object)
+{
+        NMDeviceWpanPrivate *priv = NM_DEVICE_WPAN_GET_PRIVATE (object);
+	const NMPropertiesInfo property_info[] = {
+		{ NM_DEVICE_WPAN_HW_ADDRESS, &priv->hw_address },
+		{ NULL },
+	};
+
+	NM_OBJECT_CLASS (nm_device_wpan_parent_class)->init_dbus (object);
+
+	_nm_object_register_properties (object,
+	                                NM_DBUS_INTERFACE_DEVICE_WPAN,
+	                                property_info);
+}
+
+static void
+finalize (GObject *object)
+{
+        NMDeviceWpanPrivate *priv = NM_DEVICE_WPAN_GET_PRIVATE (object);
+
+        g_free (priv->hw_address);
+
+        G_OBJECT_CLASS (nm_device_wpan_parent_class)->finalize (object);
+}
+
+static void
+nm_device_wpan_class_init (NMDeviceWpanClass *wpan_class)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS (wpan_class);
+	NMObjectClass *nm_object_class = NM_OBJECT_CLASS (wpan_class);
+	NMDeviceClass *device_class = NM_DEVICE_CLASS (wpan_class);
+
+	g_type_class_add_private (wpan_class, sizeof (NMDeviceWpanPrivate));
+
+	/* virtual methods */
+	object_class->finalize = finalize;
+	object_class->get_property = get_property;
+
+	nm_object_class->init_dbus = init_dbus;
+
+	device_class->connection_compatible = connection_compatible;
+	device_class->get_setting_type = get_setting_type;
+	device_class->get_hw_address = get_hw_address;
+
+	/* properties */
+
+	/**
+	 * NMDeviceWpan:hw-address:
+	 *
+	 * The active hardware (MAC) address of the device.
+	 **/
+	g_object_class_install_property
+		(object_class, PROP_HW_ADDRESS,
+		 g_param_spec_string (NM_DEVICE_WPAN_HW_ADDRESS, "", "",
+		                      NULL,
+		                      G_PARAM_READABLE |
+		                      G_PARAM_STATIC_STRINGS));
+}
diff --git a/libnm/nm-device-wpan.h b/libnm/nm-device-wpan.h
new file mode 100644
index 00000000..d20113dd
--- /dev/null
+++ b/libnm/nm-device-wpan.h
@@ -0,0 +1,48 @@
+/*
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * Copyright 2018 Lubomir Rintel <lkundrak@v3.sk>
+ */
+
+#ifndef __NM_DEVICE_WPAN_H__
+#define __NM_DEVICE_WPAN_H__
+
+#if !defined (__NETWORKMANAGER_H_INSIDE__) && !defined (NETWORKMANAGER_COMPILATION)
+#error "Only <NetworkManager.h> can be included directly."
+#endif
+
+#include "nm-device.h"
+
+G_BEGIN_DECLS
+
+#define NM_TYPE_DEVICE_WPAN            (nm_device_wpan_get_type ())
+#define NM_DEVICE_WPAN(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_DEVICE_WPAN, NMDeviceWpan))
+#define NM_DEVICE_WPAN_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_DEVICE_WPAN, NMDeviceWpanClass))
+#define NM_IS_DEVICE_WPAN(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_DEVICE_WPAN))
+#define NM_IS_DEVICE_WPAN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_DEVICE_WPAN))
+#define NM_DEVICE_WPAN_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DEVICE_WPAN, NMDeviceWpanClass))
+
+#define NM_DEVICE_WPAN_HW_ADDRESS "hw-address"
+
+NM_AVAILABLE_IN_1_14
+GType nm_device_wpan_get_type (void);
+
+NM_AVAILABLE_IN_1_14
+const char *nm_device_wpan_get_hw_address (NMDeviceWpan *device);
+
+G_END_DECLS
+
+#endif /* __NM_DEVICE_WPAN_H__ */
diff --git a/libnm/nm-device.c b/libnm/nm-device.c
index d841ca37..aa45c4ad 100644
--- a/libnm/nm-device.c
+++ b/libnm/nm-device.c
@@ -16,7 +16,7 @@
  * Boston, MA 02110-1301 USA.
  *
  * Copyright 2007 - 2008 Novell, Inc.
- * Copyright 2007 - 2012 Red Hat, Inc.
+ * Copyright 2007 - 2018 Red Hat, Inc.
  */
 
 #include "nm-default.h"
@@ -284,6 +284,9 @@ coerce_type (NMDeviceType type)
 	case NM_DEVICE_TYPE_UNKNOWN:
 	case NM_DEVICE_TYPE_DUMMY:
 	case NM_DEVICE_TYPE_PPP:
+	case NM_DEVICE_TYPE_WPAN:
+	case NM_DEVICE_TYPE_6LOWPAN:
+	case NM_DEVICE_TYPE_WIREGUARD:
 		return type;
 	}
 	return NM_DEVICE_TYPE_UNKNOWN;
@@ -1345,6 +1348,12 @@ get_type_name (NMDevice *device)
 		return _("Dummy");
 	case NM_DEVICE_TYPE_PPP:
 		return _("PPP");
+	case NM_DEVICE_TYPE_WPAN:
+		return _("IEEE 802.15.4");
+	case NM_DEVICE_TYPE_6LOWPAN:
+		return _("6LoWPAN");
+	case NM_DEVICE_TYPE_WIREGUARD:
+		return _("WireGuard");
 	case NM_DEVICE_TYPE_GENERIC:
 	case NM_DEVICE_TYPE_UNUSED1:
 	case NM_DEVICE_TYPE_UNUSED2:
diff --git a/libnm/nm-dns-manager.c b/libnm/nm-dns-manager.c
index b833d0c6..37117b72 100644
--- a/libnm/nm-dns-manager.c
+++ b/libnm/nm-dns-manager.c
@@ -277,7 +277,7 @@ demarshal_dns_configuration (NMObject *object, GParamSpec *pspec, GVariant *valu
 		char **nameservers = NULL, **domains = NULL;
 		gboolean vpn = FALSE;
 		char *interface = NULL, *str;
-		gint priority;
+		int priority;
 
 		if (   !g_variant_lookup (entry_var, "nameservers", "as", &iterp)
 		    || !g_variant_lookup (entry_var, "priority", "i", &priority)) {
diff --git a/libnm/nm-ip-config.c b/libnm/nm-ip-config.c
index d1a69f38..c1e888be 100644
--- a/libnm/nm-ip-config.c
+++ b/libnm/nm-ip-config.c
@@ -173,9 +173,11 @@ init_dbus (NMObject *object)
 		{ "address-data",            &priv->addresses, demarshal_ip_address_data },
 		{ NM_IP_CONFIG_ROUTES,       &priv->routes, demarshal_ip_routes },
 		{ "route-data",              &priv->routes, demarshal_ip_route_data },
+		/* Still use deprecated "Nameservers" property instead of "NameserverData" */
 		{ NM_IP_CONFIG_NAMESERVERS,  &priv->nameservers, demarshal_ip_array },
 		{ NM_IP_CONFIG_DOMAINS,      &priv->domains, },
 		{ NM_IP_CONFIG_SEARCHES,     &priv->searches, },
+		/* Still use deprecated "WinsServers" property instead of "WinsServerData" */
 		{ NM_IP_CONFIG_WINS_SERVERS, &priv->wins, demarshal_ip_array },
 		{ NULL },
 	};
diff --git a/libnm/nm-object.c b/libnm/nm-object.c
index da2fbb79..43bbba7f 100644
--- a/libnm/nm-object.c
+++ b/libnm/nm-object.c
@@ -197,7 +197,7 @@ deferred_notify_cb (gpointer data)
 	c_list_for_each (iter, &props) {
 		NotifyItem *item = c_list_entry (iter, NotifyItem, lst);
 		char buf[50];
-		gint ret = 0;
+		int ret = 0;
 
 		switch (item->pending) {
 		case NOTIFY_SIGNAL_PENDING_ADDED:
@@ -844,16 +844,12 @@ demarshal_generic (NMObject *object,
 			g_free (newval);
 	} else if (pspec->value_type == G_TYPE_BYTES) {
 		GBytes **param = (GBytes **)field;
-		gconstpointer val, old_val = NULL;
-		gsize length, old_length = 0;
+		gconstpointer val;
+		gsize length = 0;
 
 		val = g_variant_get_fixed_array (value, &length, 1);
 
-		if (*param)
-			old_val = g_bytes_get_data (*param, &old_length);
-		different =    old_length != length
-		            || (   length > 0
-		                && memcmp (old_val, val, length) != 0);
+		different = !nm_utils_gbytes_equal_mem (*param, val, length);
 		if (different) {
 			if (*param)
 				g_bytes_unref (*param);
@@ -893,10 +889,10 @@ demarshal_generic (NMObject *object,
 		HANDLE_TYPE (G_VARIANT_TYPE_BYTE, guchar, g_variant_get_byte);
 	else if (pspec->value_type == G_TYPE_DOUBLE) {
 		NM_PRAGMA_WARNING_DISABLE("-Wfloat-equal")
-		HANDLE_TYPE (G_VARIANT_TYPE_DOUBLE, gdouble, g_variant_get_double);
+		HANDLE_TYPE (G_VARIANT_TYPE_DOUBLE, double, g_variant_get_double);
 		NM_PRAGMA_WARNING_REENABLE
 	} else if (pspec->value_type == G_TYPE_INT)
-		HANDLE_TYPE (G_VARIANT_TYPE_INT32, gint, g_variant_get_int32);
+		HANDLE_TYPE (G_VARIANT_TYPE_INT32, int, g_variant_get_int32);
 	else if (pspec->value_type == G_TYPE_UINT)
 		HANDLE_TYPE (G_VARIANT_TYPE_UINT32, guint, g_variant_get_uint32);
 	else if (pspec->value_type == G_TYPE_INT64)
@@ -904,7 +900,7 @@ demarshal_generic (NMObject *object,
 	else if (pspec->value_type == G_TYPE_UINT64)
 		HANDLE_TYPE (G_VARIANT_TYPE_UINT64, guint64, g_variant_get_uint64);
 	else if (pspec->value_type == G_TYPE_LONG)
-		HANDLE_TYPE (G_VARIANT_TYPE_INT64, glong, g_variant_get_int64);
+		HANDLE_TYPE (G_VARIANT_TYPE_INT64, long, g_variant_get_int64);
 	else if (pspec->value_type == G_TYPE_ULONG)
 		HANDLE_TYPE (G_VARIANT_TYPE_UINT64, gulong, g_variant_get_uint64);
 	else {
@@ -1037,10 +1033,10 @@ init_dbus (NMObject *object)
 static void
 init_if (GDBusProxy *proxy, NMObject *self)
 {
-	gchar **props;
+	char **props;
 	char **prop;
 	GVariant *val;
-	gchar *str;
+	char *str;
 
 	nm_assert (G_IS_DBUS_PROXY (proxy));
 	nm_assert (NM_IS_OBJECT (self));
diff --git a/libnm/nm-property-docs.xml b/libnm/nm-property-docs.xml
index 98afd542..9f625efa 100644
--- a/libnm/nm-property-docs.xml
+++ b/libnm/nm-property-docs.xml
@@ -13,10 +13,11 @@
     <property name="id" name_upper="ID" type="string" description="A human readable unique identifier for the connection, like &quot;Work Wi-Fi&quot; or &quot;T-Mobile 3G&quot;." />
     <property name="interface-name" name_upper="INTERFACE_NAME" type="string" description="The name of the network interface this connection is bound to. If not set, then the connection can be attached to any interface of the appropriate type (subject to restrictions imposed by other settings). For software devices this specifies the name of the created device. For connection types where interface names cannot easily be made persistent (e.g. mobile broadband or USB Ethernet), this property should not be used. Setting this property restricts the interfaces a connection can be used with, and if interface names change or are reordered the connection may be applied to the wrong interface." />
     <property name="lldp" name_upper="LLDP" type="int32" default="-1" description="Whether LLDP is enabled for the connection." />
+    <property name="llmnr" name_upper="LLMNR" type="int32" default="-1" description="Whether Link-Local Multicast Name Resolution (LLMNR) is enabled for the connection. LLMNR is a protocol based on the Domain Name System (DNS) packet format that allows both IPv4 and IPv6 hosts to perform name resolution for hosts on the same local link. The permitted values are: yes: register hostname and resolving for the connection, no: disable LLMNR for the interface, resolve: do not register hostname but allow resolving of LLMNR host names. This feature requires a plugin which supports LLMNR. One such plugin is dns-systemd-resolved." />
     <property name="master" name_upper="MASTER" type="string" description="Interface name of the master device or UUID of the master connection." />
-    <property name="mdns" name_upper="MDNS" type="int32" default="-1" description="Whether mDNS is enabled for the connection. The permitted values are: yes: register hostname and resolving for the connection, no: disable mDNS for the interface, resolve: do not register hostname but allow resolving of mDNS host names. When updating this property on a currently activated connection, the change takes effect immediately. This feature requires a plugin which supports mDNS. One such plugin is dns-systemd-resolved." />
+    <property name="mdns" name_upper="MDNS" type="int32" default="-1" description="Whether mDNS is enabled for the connection. The permitted values are: yes: register hostname and resolving for the connection, no: disable mDNS for the interface, resolve: do not register hostname but allow resolving of mDNS host names. This feature requires a plugin which supports mDNS. One such plugin is dns-systemd-resolved." />
     <property name="metered" name_upper="METERED" type="NMMetered (int32)" description="Whether the connection is metered. When updating this property on a currently activated connection, the change takes effect immediately." />
-    <property name="name" name_upper="NAME" type="string" default="connection" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
+    <property name="multi-connect" name_upper="MULTI_CONNECT" type="int32" default="0" description="Specifies whether the profile can be active multiple times at a particular moment. The value is of type NMConnectionMultiConnect." />
     <property name="permissions" name_upper="PERMISSIONS" type="array of string" default="[]" description="An array of strings defining what access a given user has to this connection.  If this is NULL or empty, all users are allowed to access this connection; otherwise users are allowed if and only if they are in this list.  When this is not empty, the connection can be active only when one of the specified users is logged into an active session.  Each entry is of the form &quot;[type]:[id]:[reserved]&quot;; for example, &quot;user:dcbw:blah&quot;. At this time only the &quot;user&quot; [type] is allowed.  Any other values are ignored and reserved for future use.  [id] is the username that this permission refers to, which may not contain the &quot;:&quot; character. Any [reserved] information present must be ignored and is reserved for future use.  All of [type], [id], and [reserved] must be valid UTF-8." />
     <property name="read-only" name_upper="READ_ONLY" type="boolean" default="FALSE" description="FALSE if the connection can be modified using the provided settings service's D-Bus interface with the right privileges, or TRUE if the connection is read-only and cannot be modified." />
     <property name="secondaries" name_upper="SECONDARIES" type="array of string" default="[]" description="List of connection UUIDs that should be activated when the base connection itself is activated. Currently only VPN connections are supported." />
@@ -27,6 +28,9 @@
     <property name="uuid" name_upper="UUID" type="string" description="A universally unique identifier for the connection, for example generated with libuuid.  It should be assigned when the connection is created, and never changed as long as the connection still applies to the same network.  For example, it should not be changed when the &quot;id&quot; property or NMSettingIP4Config changes, but might need to be re-created when the Wi-Fi SSID, mobile broadband network provider, or &quot;type&quot; property changes. The UUID must be in the format &quot;2815492f-7e56-435e-b2e9-246bd7cdc664&quot; (ie, contains only hexadecimal characters and &quot;-&quot;)." />
     <property name="zone" name_upper="ZONE" type="string" description="The trust level of a the connection.  Free form case-insensitive string (for example &quot;Home&quot;, &quot;Work&quot;, &quot;Public&quot;).  NULL or unspecified zone means the connection will be placed in the default zone as defined by the firewall. When updating this property on a currently activated connection, the change takes effect immediately." />
   </setting>
+  <setting name="6lowpan" description="6LoWPAN Settings" name_upper="6LOWPAN" >
+    <property name="parent" name_upper="PARENT" type="string" description="If given, specifies the parent interface name or parent connection UUID from which this 6LowPAN interface should be created." />
+  </setting>
   <setting name="802-1x" description="IEEE 802.1x Authentication Settings" name_upper="802_1X" >
     <property name="altsubject-matches" name_upper="ALTSUBJECT_MATCHES" type="array of string" default="[]" description="List of strings to be matched against the altSubjectName of the certificate presented by the authentication server. If the list is empty, no verification of the server certificate's altSubjectName is performed." />
     <property name="anonymous-identity" name_upper="ANONYMOUS_IDENTITY" type="string" description="Anonymous identity string for EAP authentication methods.  Used as the unencrypted identity with EAP types that support different tunneled identity like EAP-TTLS." />
@@ -41,7 +45,6 @@
     <property name="domain-suffix-match" name_upper="DOMAIN_SUFFIX_MATCH" type="string" description="Constraint for server domain name. If set, this FQDN is used as a suffix match requirement for dNSName element(s) of the certificate presented by the authentication server.  If a matching dNSName is found, this constraint is met.  If no dNSName values are present, this constraint is matched against SubjectName CN using same suffix match comparison." />
     <property name="eap" name_upper="EAP" type="array of string" default="[]" description="The allowed EAP method to be used when authenticating to the network with 802.1x.  Valid methods are: &quot;leap&quot;, &quot;md5&quot;, &quot;tls&quot;, &quot;peap&quot;, &quot;ttls&quot;, &quot;pwd&quot;, and &quot;fast&quot;.  Each method requires different configuration using the properties of this setting; refer to wpa_supplicant documentation for the allowed combinations." />
     <property name="identity" name_upper="IDENTITY" type="string" description="Identity string for EAP authentication methods.  Often the user's user or login name." />
-    <property name="name" name_upper="NAME" type="string" default="802-1x" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="pac-file" name_upper="PAC_FILE" type="string" description="UTF-8 encoded file path containing PAC for EAP-FAST." />
     <property name="password" name_upper="PASSWORD" type="string" description="UTF-8 encoded password used for EAP authentication methods. If both the &quot;password&quot; property and the &quot;password-raw&quot; property are specified, &quot;password&quot; is preferred." />
     <property name="password-flags" name_upper="PASSWORD_FLAGS" type="NMSettingSecretFlags (uint32)" description="Flags indicating how to handle the &quot;password&quot; property." />
@@ -76,7 +79,6 @@
   </setting>
   <setting name="adsl" description="ADSL Settings" name_upper="ADSL" >
     <property name="encapsulation" name_upper="ENCAPSULATION" type="string" description="Encapsulation of ADSL connection.  Can be &quot;vcmux&quot; or &quot;llc&quot;." />
-    <property name="name" name_upper="NAME" type="string" default="adsl" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="password" name_upper="PASSWORD" type="string" description="Password used to authenticate with the ADSL service." />
     <property name="password-flags" name_upper="PASSWORD_FLAGS" type="NMSettingSecretFlags (uint32)" description="Flags indicating how to handle the &quot;password&quot; property." />
     <property name="protocol" name_upper="PROTOCOL" type="string" description="ADSL connection protocol.  Can be &quot;pppoa&quot;, &quot;pppoe&quot; or &quot;ipoatm&quot;." />
@@ -86,11 +88,9 @@
   </setting>
   <setting name="bluetooth" description="Bluetooth Settings" name_upper="BLUETOOTH" >
     <property name="bdaddr" name_upper="BDADDR" type="byte array" description="The Bluetooth address of the device." />
-    <property name="name" name_upper="NAME" type="string" default="bluetooth" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="type" name_upper="TYPE" type="string" description="Either &quot;dun&quot; for Dial-Up Networking connections or &quot;panu&quot; for Personal Area Networking connections to devices supporting the NAP profile." />
   </setting>
   <setting name="bond" description="Bonding Settings" name_upper="BOND" >
-    <property name="name" name_upper="NAME" type="string" default="bond" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="options" name_upper="OPTIONS" type="dict of string to string" default="{'mode': 'balance-rr'}" description="Dictionary of key/value pairs of bonding options.  Both keys and values must be strings. Option names must contain only alphanumeric characters (ie, [a-zA-Z0-9])." />
   </setting>
   <setting name="bridge" description="Bridging Settings" name_upper="BRIDGE" >
@@ -101,19 +101,16 @@
     <property name="mac-address" name_upper="MAC_ADDRESS" type="byte array" description="If specified, the MAC address of bridge. When creating a new bridge, this MAC address will be set. If this field is left unspecified, the &quot;ethernet.cloned-mac-address&quot; is referred instead to generate the initial MAC address. Note that setting &quot;ethernet.cloned-mac-address&quot; anyway overwrites the MAC address of the bridge later while activating the bridge. Hence, this property is deprecated. Deprecated: 1" />
     <property name="max-age" name_upper="MAX_AGE" type="uint32" default="20" description="The Spanning Tree Protocol (STP) maximum message age, in seconds." />
     <property name="multicast-snooping" name_upper="MULTICAST_SNOOPING" type="boolean" default="TRUE" description="Controls whether IGMP snooping is enabled for this bridge. Note that if snooping was automatically disabled due to hash collisions, the system may refuse to enable the feature until the collisions are resolved." />
-    <property name="name" name_upper="NAME" type="string" default="bridge" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="priority" name_upper="PRIORITY" type="uint32" default="32768" description="Sets the Spanning Tree Protocol (STP) priority for this bridge.  Lower values are &quot;better&quot;; the lowest priority bridge will be elected the root bridge." />
     <property name="stp" name_upper="STP" type="boolean" default="TRUE" description="Controls whether Spanning Tree Protocol (STP) is enabled for this bridge." />
   </setting>
   <setting name="bridge-port" description="Bridge Port Settings" name_upper="BRIDGE_PORT" >
     <property name="hairpin-mode" name_upper="HAIRPIN_MODE" type="boolean" default="FALSE" description="Enables or disables &quot;hairpin mode&quot; for the port, which allows frames to be sent back out through the port the frame was received on." />
-    <property name="name" name_upper="NAME" type="string" default="bridge-port" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="path-cost" name_upper="PATH_COST" type="uint32" default="100" description="The Spanning Tree Protocol (STP) port cost for destinations via this port." />
     <property name="priority" name_upper="PRIORITY" type="uint32" default="32" description="The Spanning Tree Protocol (STP) priority of this bridge port." />
   </setting>
   <setting name="cdma" description="CDMA-based Mobile Broadband Settings" name_upper="CDMA" >
     <property name="mtu" name_upper="MTU" type="uint32" default="0" description="If non-zero, only transmit packets of the specified size or smaller, breaking larger packets up into multiple frames." />
-    <property name="name" name_upper="NAME" type="string" default="cdma" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="number" name_upper="NUMBER" type="string" description="The number to dial to establish the connection to the CDMA-based mobile broadband network, if any.  If not specified, the default number (#777) is used when required." />
     <property name="password" name_upper="PASSWORD" type="string" description="The password used to authenticate with the network, if required.  Many providers do not require a password, or accept any password.  But if a password is required, it is specified here." />
     <property name="password-flags" name_upper="PASSWORD_FLAGS" type="NMSettingSecretFlags (uint32)" description="Flags indicating how to handle the &quot;password&quot; property." />
@@ -127,7 +124,6 @@
     <property name="app-fip-priority" name_upper="APP_FIP_PRIORITY" type="int32" default="-1" description="The highest User Priority (0 - 7) which FIP frames should use, or -1 for default priority.  Only used when the &quot;app-fip-flags&quot; property includes the NM_SETTING_DCB_FLAG_ENABLE (0x1) flag." />
     <property name="app-iscsi-flags" name_upper="APP_ISCSI_FLAGS" type="NMSettingDcbFlags (uint32)" description="Specifies the NMSettingDcbFlags for the DCB iSCSI application.  Flags may be any combination of NM_SETTING_DCB_FLAG_ENABLE (0x1), NM_SETTING_DCB_FLAG_ADVERTISE (0x2), and NM_SETTING_DCB_FLAG_WILLING (0x4)." />
     <property name="app-iscsi-priority" name_upper="APP_ISCSI_PRIORITY" type="int32" default="-1" description="The highest User Priority (0 - 7) which iSCSI frames should use, or -1 for default priority. Only used when the &quot;app-iscsi-flags&quot; property includes the NM_SETTING_DCB_FLAG_ENABLE (0x1) flag." />
-    <property name="name" name_upper="NAME" type="string" default="dcb" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="priority-bandwidth" name_upper="PRIORITY_BANDWIDTH" type="array of uint32" default="[0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L]" description="An array of 8 uint values, where the array index corresponds to the User Priority (0 - 7) and the value indicates the percentage of bandwidth of the priority's assigned group that the priority may use.  The sum of all percentages for priorities which belong to the same group must total 100 percents." />
     <property name="priority-flow-control" name_upper="PRIORITY_FLOW_CONTROL" type="array of uint32" default="[False, False, False, False, False, False, False, False]" description="An array of 8 boolean values, where the array index corresponds to the User Priority (0 - 7) and the value indicates whether or not the corresponding priority should transmit priority pause." />
     <property name="priority-flow-control-flags" name_upper="PRIORITY_FLOW_CONTROL_FLAGS" type="NMSettingDcbFlags (uint32)" description="Specifies the NMSettingDcbFlags for DCB Priority Flow Control (PFC). Flags may be any combination of NM_SETTING_DCB_FLAG_ENABLE (0x1), NM_SETTING_DCB_FLAG_ADVERTISE (0x2), and NM_SETTING_DCB_FLAG_WILLING (0x4)." />
@@ -138,17 +134,16 @@
     <property name="priority-traffic-class" name_upper="PRIORITY_TRAFFIC_CLASS" type="array of uint32" default="[0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L]" description="An array of 8 uint values, where the array index corresponds to the User Priority (0 - 7) and the value indicates the traffic class (0 - 7) to which the priority is mapped." />
   </setting>
   <setting name="dummy" description="Dummy Link Settings" name_upper="DUMMY" >
-    <property name="name" name_upper="NAME" type="string" default="dummy" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
+  </setting>
+  <setting name="ethtool" description="Ethtool Ethernet Settings" name_upper="ETHTOOL" >
   </setting>
   <setting name="generic" description="Generic Link Settings" name_upper="GENERIC" >
-    <property name="name" name_upper="NAME" type="string" default="generic" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
   </setting>
   <setting name="gsm" description="GSM-based Mobile Broadband Settings" name_upper="GSM" >
     <property name="apn" name_upper="APN" type="string" description="The GPRS Access Point Name specifying the APN used when establishing a data session with the GSM-based network.  The APN often determines how the user will be billed for their network usage and whether the user has access to the Internet or just a provider-specific walled-garden, so it is important to use the correct APN for the user's mobile broadband plan. The APN may only be composed of the characters a-z, 0-9, ., and - per GSM 03.60 Section 14.9." />
     <property name="device-id" name_upper="DEVICE_ID" type="string" description="The device unique identifier (as given by the WWAN management service) which this connection applies to.  If given, the connection will only apply to the specified device." />
     <property name="home-only" name_upper="HOME_ONLY" type="boolean" default="FALSE" description="When TRUE, only connections to the home network will be allowed. Connections to roaming networks will not be made." />
     <property name="mtu" name_upper="MTU" type="uint32" default="0" description="If non-zero, only transmit packets of the specified size or smaller, breaking larger packets up into multiple frames." />
-    <property name="name" name_upper="NAME" type="string" default="gsm" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="network-id" name_upper="NETWORK_ID" type="string" description="The Network ID (GSM LAI format, ie MCC-MNC) to force specific network registration.  If the Network ID is specified, NetworkManager will attempt to force the device to register only on the specified network. This can be used to ensure that the device does not roam when direct roaming control of the device is not otherwise possible." />
     <property name="number" name_upper="NUMBER" type="string" description="Number to dial when establishing a PPP data session with the GSM-based mobile broadband network.  Many modems do not require PPP for connections to the mobile network and thus this property should be left blank, which allows NetworkManager to select the appropriate settings automatically." />
     <property name="password" name_upper="PASSWORD" type="string" description="The password used to authenticate with the network, if required.  Many providers do not require a password, or accept any password.  But if a password is required, it is specified here." />
@@ -162,7 +157,6 @@
   <setting name="infiniband" description="Infiniband Settings" name_upper="INFINIBAND" >
     <property name="mac-address" name_upper="MAC_ADDRESS" type="byte array" description="If specified, this connection will only apply to the IPoIB device whose permanent MAC address matches. This property does not change the MAC address of the device (i.e. MAC spoofing)." />
     <property name="mtu" name_upper="MTU" type="uint32" default="0" description="If non-zero, only transmit packets of the specified size or smaller, breaking larger packets up into multiple frames." />
-    <property name="name" name_upper="NAME" type="string" default="infiniband" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="p-key" name_upper="P_KEY" type="int32" default="-1" description="The InfiniBand P_Key to use for this device. A value of -1 means to use the default P_Key (aka &quot;the P_Key at index 0&quot;).  Otherwise it is a 16-bit unsigned integer, whose high bit is set if it is a &quot;full membership&quot; P_Key." />
     <property name="parent" name_upper="PARENT" type="string" description="The interface name of the parent device of this device. Normally NULL, but if the &quot;p_key&quot; property is set, then you must specify the base device by setting either this property or &quot;mac-address&quot;." />
     <property name="transport-mode" name_upper="TRANSPORT_MODE" type="string" description="The IP-over-InfiniBand transport mode. Either &quot;datagram&quot; or &quot;connected&quot;." />
@@ -170,7 +164,7 @@
   <setting name="ipv4" description="IPv4 Settings" name_upper="IP4_CONFIG" >
     <property name="addresses" name_upper="ADDRESSES" type="array of array of uint32" default="[]" description="Array of IP addresses." />
     <property name="dad-timeout" name_upper="DAD_TIMEOUT" type="int32" default="-1" description="Timeout in milliseconds used to check for the presence of duplicate IP addresses on the network.  If an address conflict is detected, the activation will fail.  A zero value means that no duplicate address detection is performed, -1 means the default value (either configuration ipvx.dad-timeout override or zero).  A value greater than zero is a timeout in milliseconds. The property is currently implemented only for IPv4." />
-    <property name="dhcp-client-id" name_upper="DHCP_CLIENT_ID" type="string" description="A string sent to the DHCP server to identify the local machine which the DHCP server may use to customize the DHCP lease and options. When the property is a hex string ('aa:bb:cc') it is interpreted as a binary client ID, in which case the first byte is assumed to be the 'type' field as per RFC 2132 section 9.14 and the remaining bytes may be an hardware address (e.g. '01:xx:xx:xx:xx:xx:xx' where 1 is the Ethernet ARP type and the rest is a MAC address). If the property is not a hex string it is considered as a non-hardware-address client ID and the 'type' field is set to 0. The special values &quot;mac&quot; and &quot;perm-mac&quot; are supported, which use the current or permanent MAC address of the device to generate a client identifier with type ethernet type (01). Currently, these options only work for ethernet type of links. The special value &quot;stable&quot; is supported to generate a type 0 client identifier based on the stable-id (see connection.stable-id) and a per-host key. If unset, a globally configured default is used. If still unset, the client-id from the last lease is reused." />
+    <property name="dhcp-client-id" name_upper="DHCP_CLIENT_ID" type="string" description="A string sent to the DHCP server to identify the local machine which the DHCP server may use to customize the DHCP lease and options. When the property is a hex string ('aa:bb:cc') it is interpreted as a binary client ID, in which case the first byte is assumed to be the 'type' field as per RFC 2132 section 9.14 and the remaining bytes may be an hardware address (e.g. '01:xx:xx:xx:xx:xx:xx' where 1 is the Ethernet ARP type and the rest is a MAC address). If the property is not a hex string it is considered as a non-hardware-address client ID and the 'type' field is set to 0. The special values &quot;mac&quot; and &quot;perm-mac&quot; are supported, which use the current or permanent MAC address of the device to generate a client identifier with type ethernet (01). Currently, these options only work for ethernet type of links. The special value &quot;stable&quot; is supported to generate a type 0 client identifier based on the stable-id (see connection.stable-id) and a per-host key. If unset, a globally configured default is used. If still unset, the client-id from the last lease is reused." />
     <property name="dhcp-fqdn" name_upper="DHCP_FQDN" type="string" description="If the &quot;dhcp-send-hostname&quot; property is TRUE, then the specified FQDN will be sent to the DHCP server when acquiring a lease. This property and &quot;dhcp-hostname&quot; are mutually exclusive and cannot be set at the same time." />
     <property name="dhcp-hostname" name_upper="DHCP_HOSTNAME" type="string" description="If the &quot;dhcp-send-hostname&quot; property is TRUE, then the specified name will be sent to the DHCP server when acquiring a lease. This property and &quot;dhcp-fqdn&quot; are mutually exclusive and cannot be set at the same time." />
     <property name="dhcp-send-hostname" name_upper="DHCP_SEND_HOSTNAME" type="boolean" default="TRUE" description="If TRUE, a hostname is sent to the DHCP server when acquiring a lease. Some DHCP servers use this hostname to update DNS databases, essentially providing a static hostname for the computer.  If the &quot;dhcp-hostname&quot; property is NULL and this property is TRUE, the current persistent hostname of the computer is sent." />
@@ -183,8 +177,7 @@
     <property name="ignore-auto-dns" name_upper="IGNORE_AUTO_DNS" type="boolean" default="FALSE" description="When &quot;method&quot; is set to &quot;auto&quot; and this property to TRUE, automatically configured nameservers and search domains are ignored and only nameservers and search domains specified in the &quot;dns&quot; and &quot;dns-search&quot; properties, if any, are used." />
     <property name="ignore-auto-routes" name_upper="IGNORE_AUTO_ROUTES" type="boolean" default="FALSE" description="When &quot;method&quot; is set to &quot;auto&quot; and this property to TRUE, automatically configured routes are ignored and only routes specified in the &quot;routes&quot; property, if any, are used." />
     <property name="may-fail" name_upper="MAY_FAIL" type="boolean" default="TRUE" description="If TRUE, allow overall network configuration to proceed even if the configuration specified by this property times out.  Note that at least one IP configuration must succeed or overall network configuration will still fail.  For example, in IPv6-only networks, setting this property to TRUE on the NMSettingIP4Config allows the overall network configuration to succeed if IPv4 configuration fails but IPv6 configuration completes successfully." />
-    <property name="method" name_upper="METHOD" type="string" description="IP configuration method. NMSettingIP4Config and NMSettingIP6Config both support &quot;auto&quot;, &quot;manual&quot;, and &quot;link-local&quot;. See the subclass-specific documentation for other values. In general, for the &quot;auto&quot; method, properties such as &quot;dns&quot; and &quot;routes&quot; specify information that is added on to the information returned from automatic configuration.  The &quot;ignore-auto-routes&quot; and &quot;ignore-auto-dns&quot; properties modify this behavior. For methods that imply no upstream network, such as &quot;shared&quot; or &quot;link-local&quot;, these properties must be empty. For IPv4 method &quot;shared&quot;, the IP subnet can be configured by adding one manual IPv4 address or otherwise 10.42.x.0/24 is chosen." />
-    <property name="name" name_upper="NAME" type="string" default="ipv4" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
+    <property name="method" name_upper="METHOD" type="string" description="IP configuration method. NMSettingIP4Config and NMSettingIP6Config both support &quot;auto&quot;, &quot;manual&quot;, and &quot;link-local&quot;. See the subclass-specific documentation for other values. In general, for the &quot;auto&quot; method, properties such as &quot;dns&quot; and &quot;routes&quot; specify information that is added on to the information returned from automatic configuration.  The &quot;ignore-auto-routes&quot; and &quot;ignore-auto-dns&quot; properties modify this behavior. For methods that imply no upstream network, such as &quot;shared&quot; or &quot;link-local&quot;, these properties must be empty. For IPv4 method &quot;shared&quot;, the IP subnet can be configured by adding one manual IPv4 address or otherwise 10.42.x.0/24 is chosen. Note that the shared method must be configured on the interface which shares the internet to a subnet, not on the uplink which is shared." />
     <property name="never-default" name_upper="NEVER_DEFAULT" type="boolean" default="FALSE" description="If TRUE, this connection will never be the default connection for this IP type, meaning it will never be assigned the default route by NetworkManager." />
     <property name="route-metric" name_upper="ROUTE_METRIC" type="int64" default="-1" description="The default metric for routes that don't explicitly specify a metric. The default value -1 means that the metric is chosen automatically based on the device type. The metric applies to dynamic routes, manual (static) routes that don't have an explicit metric setting, address prefix routes, and the default route. Note that for IPv6, the kernel accepts zero (0) but coerces it to 1024 (user default). Hence, setting this property to zero effectively mean setting it to 1024. For IPv4, zero is a regular value for the metric." />
     <property name="route-table" name_upper="ROUTE_TABLE" type="uint32" default="0" description="Enable policy routing (source routing) and set the routing table used when adding routes. This affects all routes, including device-routes, IPv4LL, DHCP, SLAAC, default-routes and static routes. But note that static routes can individually overwrite the setting by explicitly specifying a non-zero routing table. If the table setting is left at zero, it is eligible to be overwritten via global configuration. If the property is zero even after applying the global configuration value, policy routing is disabled for the address family of this connection. Policy routing disabled means that NetworkManager will add all routes to the main table (except static routes that explicitly configure a different table). Additionally, NetworkManager will not delete any extraneous routes from tables except the main table. This is to preserve backward compatibility for users who manage routing tables outside of NetworkManager." />
@@ -207,8 +200,7 @@
     <property name="ignore-auto-routes" name_upper="IGNORE_AUTO_ROUTES" type="boolean" default="FALSE" description="When &quot;method&quot; is set to &quot;auto&quot; and this property to TRUE, automatically configured routes are ignored and only routes specified in the &quot;routes&quot; property, if any, are used." />
     <property name="ip6-privacy" name_upper="IP6_PRIVACY" type="NMSettingIP6ConfigPrivacy (int32)" description="Configure IPv6 Privacy Extensions for SLAAC, described in RFC4941.  If enabled, it makes the kernel generate a temporary IPv6 address in addition to the public one generated from MAC address via modified EUI-64.  This enhances privacy, but could cause problems in some applications, on the other hand.  The permitted values are: -1: unknown, 0: disabled, 1: enabled (prefer public address), 2: enabled (prefer temporary addresses). Having a per-connection setting set to &quot;-1&quot; (unknown) means fallback to global configuration &quot;ipv6.ip6-privacy&quot;. If also global configuration is unspecified or set to &quot;-1&quot;, fallback to read &quot;/proc/sys/net/ipv6/conf/default/use_tempaddr&quot;. Note that this setting is distinct from the Stable Privacy addresses that can be enabled with the &quot;addr-gen-mode&quot; property's &quot;stable-privacy&quot; setting as another way of avoiding host tracking with IPv6 addresses." />
     <property name="may-fail" name_upper="MAY_FAIL" type="boolean" default="TRUE" description="If TRUE, allow overall network configuration to proceed even if the configuration specified by this property times out.  Note that at least one IP configuration must succeed or overall network configuration will still fail.  For example, in IPv6-only networks, setting this property to TRUE on the NMSettingIP4Config allows the overall network configuration to succeed if IPv4 configuration fails but IPv6 configuration completes successfully." />
-    <property name="method" name_upper="METHOD" type="string" description="IP configuration method. NMSettingIP4Config and NMSettingIP6Config both support &quot;auto&quot;, &quot;manual&quot;, and &quot;link-local&quot;. See the subclass-specific documentation for other values. In general, for the &quot;auto&quot; method, properties such as &quot;dns&quot; and &quot;routes&quot; specify information that is added on to the information returned from automatic configuration.  The &quot;ignore-auto-routes&quot; and &quot;ignore-auto-dns&quot; properties modify this behavior. For methods that imply no upstream network, such as &quot;shared&quot; or &quot;link-local&quot;, these properties must be empty. For IPv4 method &quot;shared&quot;, the IP subnet can be configured by adding one manual IPv4 address or otherwise 10.42.x.0/24 is chosen." />
-    <property name="name" name_upper="NAME" type="string" default="ipv6" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
+    <property name="method" name_upper="METHOD" type="string" description="IP configuration method. NMSettingIP4Config and NMSettingIP6Config both support &quot;auto&quot;, &quot;manual&quot;, and &quot;link-local&quot;. See the subclass-specific documentation for other values. In general, for the &quot;auto&quot; method, properties such as &quot;dns&quot; and &quot;routes&quot; specify information that is added on to the information returned from automatic configuration.  The &quot;ignore-auto-routes&quot; and &quot;ignore-auto-dns&quot; properties modify this behavior. For methods that imply no upstream network, such as &quot;shared&quot; or &quot;link-local&quot;, these properties must be empty. For IPv4 method &quot;shared&quot;, the IP subnet can be configured by adding one manual IPv4 address or otherwise 10.42.x.0/24 is chosen. Note that the shared method must be configured on the interface which shares the internet to a subnet, not on the uplink which is shared." />
     <property name="never-default" name_upper="NEVER_DEFAULT" type="boolean" default="FALSE" description="If TRUE, this connection will never be the default connection for this IP type, meaning it will never be assigned the default route by NetworkManager." />
     <property name="route-metric" name_upper="ROUTE_METRIC" type="int64" default="-1" description="The default metric for routes that don't explicitly specify a metric. The default value -1 means that the metric is chosen automatically based on the device type. The metric applies to dynamic routes, manual (static) routes that don't have an explicit metric setting, address prefix routes, and the default route. Note that for IPv6, the kernel accepts zero (0) but coerces it to 1024 (user default). Hence, setting this property to zero effectively mean setting it to 1024. For IPv4, zero is a regular value for the metric." />
     <property name="route-table" name_upper="ROUTE_TABLE" type="uint32" default="0" description="Enable policy routing (source routing) and set the routing table used when adding routes. This affects all routes, including device-routes, IPv4LL, DHCP, SLAAC, default-routes and static routes. But note that static routes can individually overwrite the setting by explicitly specifying a non-zero routing table. If the table setting is left at zero, it is eligible to be overwritten via global configuration. If the property is zero even after applying the global configuration value, policy routing is disabled for the address family of this connection. Policy routing disabled means that NetworkManager will add all routes to the main table (except static routes that explicitly configure a different table). Additionally, NetworkManager will not delete any extraneous routes from tables except the main table. This is to preserve backward compatibility for users who manage routing tables outside of NetworkManager." />
@@ -223,7 +215,6 @@
     <property name="local" name_upper="LOCAL" type="string" description="The local endpoint of the tunnel; the value can be empty, otherwise it must contain an IPv4 or IPv6 address." />
     <property name="mode" name_upper="MODE" type="uint32" default="0" description="The tunneling mode, for example NM_IP_TUNNEL_MODE_IPIP (1) or NM_IP_TUNNEL_MODE_GRE (2)." />
     <property name="mtu" name_upper="MTU" type="uint32" default="0" description="If non-zero, only transmit packets of the specified size or smaller, breaking larger packets up into multiple fragments." />
-    <property name="name" name_upper="NAME" type="string" default="ip-tunnel" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="output-key" name_upper="OUTPUT_KEY" type="string" description="The key used for tunnel output packets; the property is valid only for certain tunnel modes (GRE, IP6GRE). If empty, no key is used." />
     <property name="parent" name_upper="PARENT" type="string" description="If given, specifies the parent interface name or parent connection UUID the new device will be bound to so that tunneled packets will only be routed via that interface." />
     <property name="path-mtu-discovery" name_upper="PATH_MTU_DISCOVERY" type="boolean" default="TRUE" description="Whether to enable Path MTU Discovery on this tunnel." />
@@ -237,7 +228,6 @@
     <property name="mka-cak-flags" name_upper="MKA_CAK_FLAGS" type="NMSettingSecretFlags (uint32)" description="Flags indicating how to handle the &quot;mka-cak&quot; property." />
     <property name="mka-ckn" name_upper="MKA_CKN" type="string" description="The pre-shared CKN (Connectivity-association Key Name) for MACsec Key Agreement." />
     <property name="mode" name_upper="MODE" type="int32" default="0" description="Specifies how the CAK (Connectivity Association Key) for MKA (MACsec Key Agreement) is obtained." />
-    <property name="name" name_upper="NAME" type="string" default="macsec" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="parent" name_upper="PARENT" type="string" description="If given, specifies the parent interface name or parent connection UUID from which this MACSEC interface should be created.  If this property is not specified, the connection must contain an &quot;802-3-ethernet&quot; setting with a &quot;mac-address&quot; property." />
     <property name="port" name_upper="PORT" type="int32" default="1" description="The port component of the SCI (Secure Channel Identifier), between 1 and 65534." />
     <property name="send-sci" name_upper="SEND_SCI" type="boolean" default="TRUE" description="Specifies whether the SCI (Secure Channel Identifier) is included in every packet." />
@@ -245,30 +235,28 @@
   </setting>
   <setting name="macvlan" description="MAC VLAN Settings" name_upper="MACVLAN" >
     <property name="mode" name_upper="MODE" type="uint32" default="0" description="The macvlan mode, which specifies the communication mechanism between multiple macvlans on the same lower device." />
-    <property name="name" name_upper="NAME" type="string" default="macvlan" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="parent" name_upper="PARENT" type="string" description="If given, specifies the parent interface name or parent connection UUID from which this MAC-VLAN interface should be created.  If this property is not specified, the connection must contain an &quot;802-3-ethernet&quot; setting with a &quot;mac-address&quot; property." />
     <property name="promiscuous" name_upper="PROMISCUOUS" type="boolean" default="TRUE" description="Whether the interface should be put in promiscuous mode." />
     <property name="tap" name_upper="TAP" type="boolean" default="FALSE" description="Whether the interface should be a MACVTAP." />
   </setting>
+  <setting name="match" description="Match settings." name_upper="MATCH" >
+    <property name="interface-name" name_upper="INTERFACE_NAME" type="array of string" default="[]" description="A list of interface names to match. Each element is a shell wildcard pattern.  When an element is prefixed with exclamation mark (!) the condition is inverted. A candidate interface name is considered matching when both these conditions are satisfied: (a) any of the elements not prefixed with '!' matches or there aren't such elements; (b) none of the elements prefixed with '!' match." />
+  </setting>
   <setting name="802-11-olpc-mesh" description="OLPC Wireless Mesh Settings" name_upper="OLPC_MESH" >
     <property name="channel" name_upper="CHANNEL" type="uint32" default="0" description="Channel on which the mesh network to join is located." />
     <property name="dhcp-anycast-address" name_upper="DHCP_ANYCAST_ADDRESS" type="byte array" description="Anycast DHCP MAC address used when requesting an IP address via DHCP. The specific anycast address used determines which DHCP server class answers the request." />
-    <property name="name" name_upper="NAME" type="string" default="802-11-olpc-mesh" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="ssid" name_upper="SSID" type="byte array" description="SSID of the mesh network to join." />
   </setting>
   <setting name="ovs-bridge" description="OvsBridge Link Settings" name_upper="OVS_BRIDGE" >
     <property name="fail-mode" name_upper="FAIL_MODE" type="string" description="The bridge failure mode. One of &quot;secure&quot;, &quot;standalone&quot; or empty." />
     <property name="mcast-snooping-enable" name_upper="MCAST_SNOOPING_ENABLE" type="boolean" default="FALSE" description="Enable or disable multicast snooping." />
-    <property name="name" name_upper="NAME" type="string" default="ovs-bridge" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="rstp-enable" name_upper="RSTP_ENABLE" type="boolean" default="FALSE" description="Enable or disable RSTP." />
     <property name="stp-enable" name_upper="STP_ENABLE" type="boolean" default="FALSE" description="Enable or disable STP." />
   </setting>
   <setting name="ovs-interface" description="Open vSwitch Interface Settings" name_upper="OVS_INTERFACE" >
-    <property name="name" name_upper="NAME" type="string" default="ovs-interface" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="type" name_upper="TYPE" type="string" description="The interface type. Either &quot;internal&quot;, or empty." />
   </setting>
   <setting name="ovs-patch" description="OvsPatch Link Settings" name_upper="OVS_PATCH" >
-    <property name="name" name_upper="NAME" type="string" default="ovs-patch" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="peer" name_upper="PEER" type="string" description="Specifies the unicast destination IP address of a remote Open vSwitch bridge port to connect to." />
   </setting>
   <setting name="ovs-port" description="OvsPort Link Settings" name_upper="OVS_PORT" >
@@ -276,7 +264,6 @@
     <property name="bond-mode" name_upper="BOND_MODE" type="string" description="Bonding mode. One of &quot;active-backup&quot;, &quot;balance-slb&quot;, or &quot;balance-tcp&quot;." />
     <property name="bond-updelay" name_upper="BOND_UPDELAY" type="uint32" default="0" description="The time port must be active before it starts forwarding traffic." />
     <property name="lacp" name_upper="LACP" type="string" description="LACP mode. One of &quot;active&quot;, &quot;off&quot;, or &quot;passive&quot;." />
-    <property name="name" name_upper="NAME" type="string" default="ovs-port" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="tag" name_upper="TAG" type="uint32" default="0" description="The VLAN tag in the range 0-4095." />
     <property name="vlan-mode" name_upper="VLAN_MODE" type="string" description="The VLAN mode. One of &quot;access&quot;, &quot;native-tagged&quot;, &quot;native-untagged&quot;, &quot;trunk&quot; or unset." />
   </setting>
@@ -288,7 +275,6 @@
     <property name="mppe-stateful" name_upper="MPPE_STATEFUL" type="boolean" default="FALSE" description="If TRUE, stateful MPPE is used.  See pppd documentation for more information on stateful MPPE." />
     <property name="mru" name_upper="MRU" type="uint32" default="0" description="If non-zero, instruct pppd to request that the peer send packets no larger than the specified size.  If non-zero, the MRU should be between 128 and 16384." />
     <property name="mtu" name_upper="MTU" type="uint32" default="0" description="If non-zero, instruct pppd to send packets no larger than the specified size." />
-    <property name="name" name_upper="NAME" type="string" default="ppp" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="no-vj-comp" name_upper="NO_VJ_COMP" type="boolean" default="FALSE" description="If TRUE, Van Jacobsen TCP header compression will not be requested." />
     <property name="noauth" name_upper="NOAUTH" type="boolean" default="TRUE" description="If TRUE, do not require the other side (usually the PPP server) to authenticate itself to the client.  If FALSE, require authentication from the remote side.  In almost all cases, this should be TRUE." />
     <property name="nobsdcomp" name_upper="NOBSDCOMP" type="boolean" default="FALSE" description="If TRUE, BSD compression will not be requested." />
@@ -302,7 +288,6 @@
     <property name="require-mppe-128" name_upper="REQUIRE_MPPE_128" type="boolean" default="FALSE" description="If TRUE, 128-bit MPPE (Microsoft Point-to-Point Encryption) will be required for the PPP session, and the &quot;require-mppe&quot; property must also be set to TRUE.  If 128-bit MPPE is not available the session will fail." />
   </setting>
   <setting name="pppoe" description="PPP-over-Ethernet Settings" name_upper="PPPOE" >
-    <property name="name" name_upper="NAME" type="string" default="pppoe" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="parent" name_upper="PARENT" type="string" description="If given, specifies the parent interface name on which this PPPoE connection should be created.  If this property is not specified, the connection is activated on the interface specified in &quot;interface-name&quot; of NMSettingConnection." />
     <property name="password" name_upper="PASSWORD" type="string" description="Password used to authenticate with the PPPoE service." />
     <property name="password-flags" name_upper="PASSWORD_FLAGS" type="NMSettingSecretFlags (uint32)" description="Flags indicating how to handle the &quot;password&quot; property." />
@@ -312,21 +297,23 @@
   <setting name="proxy" description="WWW Proxy Settings" name_upper="PROXY" >
     <property name="browser-only" name_upper="BROWSER_ONLY" type="boolean" default="FALSE" description="Whether the proxy configuration is for browser only." />
     <property name="method" name_upper="METHOD" type="int32" default="0" description="Method for proxy configuration, Default is NM_SETTING_PROXY_METHOD_NONE (0)" />
-    <property name="name" name_upper="NAME" type="string" default="proxy" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="pac-script" name_upper="PAC_SCRIPT" type="string" description="PAC script for the connection." />
     <property name="pac-url" name_upper="PAC_URL" type="string" description="PAC URL for obtaining PAC file." />
   </setting>
   <setting name="serial" description="Serial Link Settings" name_upper="SERIAL" >
     <property name="baud" name_upper="BAUD" type="uint32" default="57600" description="Speed to use for communication over the serial port.  Note that this value usually has no effect for mobile broadband modems as they generally ignore speed settings and use the highest available speed." />
     <property name="bits" name_upper="BITS" type="uint32" default="8" description="Byte-width of the serial communication. The 8 in &quot;8n1&quot; for example." />
-    <property name="name" name_upper="NAME" type="string" default="serial" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="parity" name_upper="PARITY" type="NMSettingSerialParity (byte)" description="Parity setting of the serial port." />
     <property name="send-delay" name_upper="SEND_DELAY" type="uint64" default="0" description="Time to delay between each byte sent to the modem, in microseconds." />
     <property name="stopbits" name_upper="STOPBITS" type="uint32" default="1" description="Number of stop bits for communication on the serial port.  Either 1 or 2. The 1 in &quot;8n1&quot; for example." />
   </setting>
-  <setting name="tc" description="Linux Traffic Contril Settings." name_upper="TC_CONFIG" >
-    <property name="name" name_upper="NAME" type="string" default="tc" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
-    <property name="qdiscs" name_upper="QDISCS" type="array of vardict" default="[]" description="Array of TC queuening disciplines." />
+  <setting name="sriov" description="SR-IOV settings." name_upper="SRIOV" >
+    <property name="autoprobe-drivers" name_upper="AUTOPROBE_DRIVERS" type="NMTernary (int32)" description="Whether to autoprobe virtual functions by a compatible driver. If set to NM_TERNARY_TRUE (1), the kernel will try to bind VFs to a compatible driver and if this succeeds a new network interface will be instantiated for each VF. If set to NM_TERNARY_FALSE (0), VFs will not be claimed and no network interfaces will be created for them. When set to NM_TERNARY_DEFAULT (-1), the global default is used; in case the global default is unspecified it is assumed to be NM_TERNARY_TRUE (1)." />
+    <property name="total-vfs" name_upper="TOTAL_VFS" type="uint32" default="0" description="The total number of virtual functions to create." />
+    <property name="vfs" name_upper="VFS" type="array of vardict" default="[]" description="Array of virtual function descriptors. Each VF descriptor is a dictionary mapping attribute names to GVariant values. The 'index' entry is mandatory for each VF. When represented as string a VF is in the form: &quot;INDEX [ATTR=VALUE[ ATTR=VALUE]...]&quot;. for example: &quot;2 mac=00:11:22:33:44:55 spoof-check=true&quot;. The &quot;vlans&quot; attribute is represented as a semicolor-separated list of VLAN descriptors, where each descriptor has the form &quot;ID[.PRIORITY[.PROTO]]&quot;. PROTO can be either 'q' for 802.1Q (the default) or 'ad' for 802.1ad." />
+  </setting>
+  <setting name="tc" description="Linux Traffic Control Settings." name_upper="TC_CONFIG" >
+    <property name="qdiscs" name_upper="QDISCS" type="array of vardict" default="[]" description="Array of TC queueing disciplines." />
     <property name="tfilters" name_upper="TFILTERS" type="array of vardict" default="[]" description="Array of TC traffic filters." />
   </setting>
   <setting name="team" description="Teaming Settings" name_upper="TEAM" >
@@ -334,7 +321,6 @@
     <property name="link-watchers" name_upper="LINK_WATCHERS" type="array of vardict" default="[]" description="Link watchers configuration for the connection: each link watcher is defined by a dictionary, whose keys depend upon the selected link watcher. Available link watchers are 'ethtool', 'nsna_ping' and 'arp_ping' and it is specified in the dictionary with the key 'name'. Available keys are:   ethtool: 'delay-up', 'delay-down', 'init-wait'; nsna_ping: 'init-wait', 'interval', 'missed-max', 'target-host'; arp_ping: all the ones in nsna_ping and 'source-host', 'validate-active', 'validate-incative', 'send-always'. See teamd.conf man for more details." />
     <property name="mcast-rejoin-count" name_upper="MCAST_REJOIN_COUNT" type="int32" default="0" description="Corresponds to the teamd mcast_rejoin.count." />
     <property name="mcast-rejoin-interval" name_upper="MCAST_REJOIN_INTERVAL" type="int32" default="0" description="Corresponds to the teamd mcast_rejoin.interval." />
-    <property name="name" name_upper="NAME" type="string" default="team" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="notify-peers-count" name_upper="NOTIFY_PEERS_COUNT" type="int32" default="0" description="Corresponds to the teamd notify_peers.count." />
     <property name="notify-peers-interval" name_upper="NOTIFY_PEERS_INTERVAL" type="int32" default="0" description="Corresponds to the teamd notify_peers.interval." />
     <property name="runner" name_upper="RUNNER" type="string" default="&quot;roundrobin&quot;" description="Corresponds to the teamd runner.name. Permitted values are: &quot;roundrobin&quot;, &quot;broadcast&quot;, &quot;activebackup&quot;, &quot;loadbalance&quot;, &quot;lacp&quot;, &quot;random&quot;. When setting the runner, all the properties specific to the runner will be reset to the default value; all the properties specific to other runners will be set to an empty value (or if not possible to a default value)." />
@@ -353,7 +339,6 @@
     <property name="lacp-key" name_upper="LACP_KEY" type="int32" default="0" description="Corresponds to the teamd ports.PORTIFNAME.lacp_key." />
     <property name="lacp-prio" name_upper="LACP_PRIO" type="int32" default="255" description="Corresponds to the teamd ports.PORTIFNAME.lacp_prio." />
     <property name="link-watchers" name_upper="LINK_WATCHERS" type="array of vardict" default="[]" description="Link watchers configuration for the connection: each link watcher is defined by a dictionary, whose keys depend upon the selected link watcher. Available link watchers are 'ethtool', 'nsna_ping' and 'arp_ping' and it is specified in the dictionary with the key 'name'. Available keys are:   ethtool: 'delay-up', 'delay-down', 'init-wait'; nsna_ping: 'init-wait', 'interval', 'missed-max', 'target-host'; arp_ping: all the ones in nsna_ping and 'source-host', 'validate-active', 'validate-incative', 'send-always'. See teamd.conf man for more details." />
-    <property name="name" name_upper="NAME" type="string" default="team-port" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="prio" name_upper="PRIO" type="int32" default="0" description="Corresponds to the teamd ports.PORTIFNAME.prio." />
     <property name="queue-id" name_upper="QUEUE_ID" type="int32" default="-1" description="Corresponds to the teamd ports.PORTIFNAME.queue_id. When set to -1 means the parameter is skipped from the json config." />
     <property name="sticky" name_upper="STICKY" type="boolean" default="FALSE" description="Corresponds to the teamd ports.PORTIFNAME.sticky." />
@@ -362,26 +347,22 @@
     <property name="group" name_upper="GROUP" type="string" description="The group ID which will own the device. If set to NULL everyone will be able to use the device." />
     <property name="mode" name_upper="MODE" type="uint32" default="1" description="The operating mode of the virtual device. Allowed values are NM_SETTING_TUN_MODE_TUN (1) to create a layer 3 device and NM_SETTING_TUN_MODE_TAP (2) to create an Ethernet-like layer 2 one." />
     <property name="multi-queue" name_upper="MULTI_QUEUE" type="boolean" default="FALSE" description="If the property is set to TRUE, the interface will support multiple file descriptors (queues) to parallelize packet sending or receiving. Otherwise, the interface will only support a single queue." />
-    <property name="name" name_upper="NAME" type="string" default="tun" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="owner" name_upper="OWNER" type="string" description="The user ID which will own the device. If set to NULL everyone will be able to use the device." />
     <property name="pi" name_upper="PI" type="boolean" default="FALSE" description="If TRUE the interface will prepend a 4 byte header describing the physical interface to the packets." />
     <property name="vnet-hdr" name_upper="VNET_HDR" type="boolean" default="FALSE" description="If TRUE the IFF_VNET_HDR the tunnel packets will include a virtio network header." />
   </setting>
   <setting name="user" description="General User Profile Settings" name_upper="USER" >
     <property name="data" name_upper="DATA" type="dict of string to string" default="{}" description="A dictionary of key/value pairs with user data. This data is ignored by NetworkManager and can be used at the users discretion. The keys only support a strict ascii format, but the values can be arbitrary UTF8 strings up to a certain length." />
-    <property name="name" name_upper="NAME" type="string" default="user" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
   </setting>
   <setting name="vlan" description="VLAN Settings" name_upper="VLAN" >
     <property name="egress-priority-map" name_upper="EGRESS_PRIORITY_MAP" type="array of string" default="[]" description="For outgoing packets, a list of mappings from Linux SKB priorities to 802.1p priorities.  The mapping is given in the format &quot;from:to&quot; where both &quot;from&quot; and &quot;to&quot; are unsigned integers, ie &quot;7:3&quot;." />
     <property name="flags" name_upper="FLAGS" type="NMVlanFlags (uint32)" description="One or more flags which control the behavior and features of the VLAN interface.  Flags include NM_VLAN_FLAG_REORDER_HEADERS (0x1) (reordering of output packet headers), NM_VLAN_FLAG_GVRP (0x2) (use of the GVRP protocol), and NM_VLAN_FLAG_LOOSE_BINDING (0x4) (loose binding of the interface to its master device's operating state). NM_VLAN_FLAG_MVRP (0x8) (use of the MVRP protocol). The default value of this property is NM_VLAN_FLAG_REORDER_HEADERS, but it used to be 0. To preserve backward compatibility, the default-value in the D-Bus API continues to be 0 and a missing property on D-Bus is still considered as 0." />
     <property name="id" name_upper="ID" type="uint32" default="0" description="The VLAN identifier that the interface created by this connection should be assigned. The valid range is from 0 to 4094, without the reserved id 4095." />
     <property name="ingress-priority-map" name_upper="INGRESS_PRIORITY_MAP" type="array of string" default="[]" description="For incoming packets, a list of mappings from 802.1p priorities to Linux SKB priorities.  The mapping is given in the format &quot;from:to&quot; where both &quot;from&quot; and &quot;to&quot; are unsigned integers, ie &quot;7:3&quot;." />
-    <property name="name" name_upper="NAME" type="string" default="vlan" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="parent" name_upper="PARENT" type="string" description="If given, specifies the parent interface name or parent connection UUID from which this VLAN interface should be created.  If this property is not specified, the connection must contain an &quot;802-3-ethernet&quot; setting with a &quot;mac-address&quot; property." />
   </setting>
   <setting name="vpn" description="VPN Settings" name_upper="VPN" >
     <property name="data" name_upper="DATA" type="dict of string to string" default="{}" description="Dictionary of key/value pairs of VPN plugin specific data.  Both keys and values must be strings." />
-    <property name="name" name_upper="NAME" type="string" default="vpn" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="persistent" name_upper="PERSISTENT" type="boolean" default="FALSE" description="If the VPN service supports persistence, and this property is TRUE, the VPN will attempt to stay connected across link changes and outages, until explicitly disconnected." />
     <property name="secrets" name_upper="SECRETS" type="dict of string to string" default="{}" description="Dictionary of key/value pairs of VPN plugin specific secrets like passwords or private keys.  Both keys and values must be strings." />
     <property name="service-type" name_upper="SERVICE_TYPE" type="string" description="D-Bus service name of the VPN plugin that this setting uses to connect to its network.  i.e. org.freedesktop.NetworkManager.vpnc for the vpnc plugin." />
@@ -397,7 +378,6 @@
     <property name="learning" name_upper="LEARNING" type="boolean" default="TRUE" description="Specifies whether unknown source link layer addresses and IP addresses are entered into the VXLAN device forwarding database." />
     <property name="limit" name_upper="LIMIT" type="uint32" default="0" description="Specifies the maximum number of FDB entries. A value of zero means that the kernel will store unlimited entries." />
     <property name="local" name_upper="LOCAL" type="string" description="If given, specifies the source IP address to use in outgoing packets." />
-    <property name="name" name_upper="NAME" type="string" default="vxlan" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="parent" name_upper="PARENT" type="string" description="If given, specifies the parent interface name or parent connection UUID." />
     <property name="proxy" name_upper="PROXY" type="boolean" default="FALSE" description="Specifies whether ARP proxy is turned on." />
     <property name="remote" name_upper="REMOTE" type="string" description="Specifies the unicast destination IP address to use in outgoing packets when the destination link layer address is not known in the VXLAN device forwarding database, or the multicast IP address to join." />
@@ -409,7 +389,6 @@
   </setting>
   <setting name="wimax" description="WiMax Settings" name_upper="WIMAX" >
     <property name="mac-address" name_upper="MAC_ADDRESS" type="byte array" description="If specified, this connection will only apply to the WiMAX device whose MAC address matches. This property does not change the MAC address of the device (known as MAC spoofing). Deprecated: 1" />
-    <property name="name" name_upper="NAME" type="string" default="wimax" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="network-name" name_upper="NETWORK_NAME" type="string" description="Network Service Provider (NSP) name of the WiMAX network this connection should use. Deprecated: 1" />
   </setting>
   <setting name="802-3-ethernet" description="Wired Ethernet Settings" name_upper="WIRED" >
@@ -420,7 +399,6 @@
     <property name="mac-address" name_upper="MAC_ADDRESS" type="byte array" description="If specified, this connection will only apply to the Ethernet device whose permanent MAC address matches. This property does not change the MAC address of the device (i.e. MAC spoofing)." />
     <property name="mac-address-blacklist" name_upper="MAC_ADDRESS_BLACKLIST" type="array of string" default="[]" description="If specified, this connection will never apply to the Ethernet device whose permanent MAC address matches an address in the list.  Each MAC address is in the standard hex-digits-and-colons notation (00:11:22:33:44:55)." />
     <property name="mtu" name_upper="MTU" type="uint32" default="0" description="If non-zero, only transmit packets of the specified size or smaller, breaking larger packets up into multiple Ethernet frames." />
-    <property name="name" name_upper="NAME" type="string" default="802-3-ethernet" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="port" name_upper="PORT" type="string" description="Specific port type to use if the device supports multiple attachment methods.  One of &quot;tp&quot; (Twisted Pair), &quot;aui&quot; (Attachment Unit Interface), &quot;bnc&quot; (Thin Ethernet) or &quot;mii&quot; (Media Independent Interface). If the device supports only one port type, this setting is ignored." />
     <property name="s390-nettype" name_upper="S390_NETTYPE" type="string" description="s390 network device type; one of &quot;qeth&quot;, &quot;lcs&quot;, or &quot;ctc&quot;, representing the different types of virtual network devices available on s390 systems." />
     <property name="s390-options" name_upper="S390_OPTIONS" type="dict of string to string" default="{}" description="Dictionary of key/value pairs of s390-specific device options.  Both keys and values must be strings.  Allowed keys include &quot;portno&quot;, &quot;layer2&quot;, &quot;portname&quot;, &quot;protocol&quot;, among others.  Key names must contain only alphanumeric characters (ie, [a-zA-Z0-9])." />
@@ -441,7 +419,6 @@
     <property name="mac-address-randomization" name_upper="MAC_ADDRESS_RANDOMIZATION" type="uint32" default="0" description="One of NM_SETTING_MAC_RANDOMIZATION_DEFAULT (0) (never randomize unless the user has set a global default to randomize and the supplicant supports randomization),  NM_SETTING_MAC_RANDOMIZATION_NEVER (1) (never randomize the MAC address), or NM_SETTING_MAC_RANDOMIZATION_ALWAYS (2) (always randomize the MAC address). This property is deprecated for 'cloned-mac-address'. Deprecated: 1" />
     <property name="mode" name_upper="MODE" type="string" description="Wi-Fi network mode; one of &quot;infrastructure&quot;, &quot;adhoc&quot; or &quot;ap&quot;.  If blank, infrastructure is assumed." />
     <property name="mtu" name_upper="MTU" type="uint32" default="0" description="If non-zero, only transmit packets of the specified size or smaller, breaking larger packets up into multiple Ethernet frames." />
-    <property name="name" name_upper="NAME" type="string" default="802-11-wireless" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="powersave" name_upper="POWERSAVE" type="uint32" default="0" description="One of NM_SETTING_WIRELESS_POWERSAVE_DISABLE (2) (disable Wi-Fi power saving), NM_SETTING_WIRELESS_POWERSAVE_ENABLE (3) (enable Wi-Fi power saving), NM_SETTING_WIRELESS_POWERSAVE_IGNORE (1) (don't touch currently configure setting) or NM_SETTING_WIRELESS_POWERSAVE_DEFAULT (0) (use the globally configured value). All other values are reserved." />
     <property name="rate" name_upper="RATE" type="uint32" default="0" description="If non-zero, directs the device to only use the specified bitrate for communication with the access point.  Units are in Kb/s, ie 5500 = 5.5 Mbit/s.  This property is highly driver dependent and not all devices support setting a static bitrate." />
     <property name="seen-bssids" name_upper="SEEN_BSSIDS" type="array of string" default="[]" description="A list of BSSIDs (each BSSID formatted as a MAC address like &quot;00:11:22:33:44:55&quot;) that have been detected as part of the Wi-Fi network.  NetworkManager internally tracks previously seen BSSIDs. The property is only meant for reading and reflects the BSSID list of NetworkManager. The changes you make to this property will not be preserved." />
@@ -457,7 +434,6 @@
     <property name="leap-password" name_upper="LEAP_PASSWORD" type="string" description="The login password for legacy LEAP connections (ie, key-mgmt = &quot;ieee8021x&quot; and auth-alg = &quot;leap&quot;)." />
     <property name="leap-password-flags" name_upper="LEAP_PASSWORD_FLAGS" type="NMSettingSecretFlags (uint32)" description="Flags indicating how to handle the &quot;leap-password&quot; property." />
     <property name="leap-username" name_upper="LEAP_USERNAME" type="string" description="The login username for legacy LEAP connections (ie, key-mgmt = &quot;ieee8021x&quot; and auth-alg = &quot;leap&quot;)." />
-    <property name="name" name_upper="NAME" type="string" default="802-11-wireless-security" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="pairwise" name_upper="PAIRWISE" type="array of string" default="[]" description="A list of pairwise encryption algorithms which prevents connections to Wi-Fi networks that do not utilize one of the algorithms in the list. For maximum compatibility leave this property empty.  Each list element may be one of &quot;tkip&quot; or &quot;ccmp&quot;." />
     <property name="pmf" name_upper="PMF" type="int32" default="0" description="Indicates whether Protected Management Frames (802.11w) must be enabled for the connection.  One of NM_SETTING_WIRELESS_SECURITY_PMF_DEFAULT (0) (use global default value), NM_SETTING_WIRELESS_SECURITY_PMF_DISABLE (1) (disable PMF), NM_SETTING_WIRELESS_SECURITY_PMF_OPTIONAL (2) (enable PMF if the supplicant and the access point support it) or NM_SETTING_WIRELESS_SECURITY_PMF_REQUIRED (3) (enable PMF and fail if not supported).  When set to NM_SETTING_WIRELESS_SECURITY_PMF_DEFAULT (0) and no global default is set, PMF will be optionally enabled." />
     <property name="proto" name_upper="PROTO" type="array of string" default="[]" description="List of strings specifying the allowed WPA protocol versions to use. Each element may be one &quot;wpa&quot; (allow WPA) or &quot;rsn&quot; (allow WPA2/RSN).  If not specified, both WPA and RSN connections are allowed." />
@@ -472,4 +448,9 @@
     <property name="wep-tx-keyidx" name_upper="WEP_TX_KEYIDX" type="uint32" default="0" description="When static WEP is used (ie, key-mgmt = &quot;none&quot;) and a non-default WEP key index is used by the AP, put that WEP key index here.  Valid values are 0 (default key) through 3.  Note that some consumer access points (like the Linksys WRT54G) number the keys 1 - 4." />
     <property name="wps-method" name_upper="WPS_METHOD" type="uint32" default="0" description="Flags indicating which mode of WPS is to be used if any. There's little point in changing the default setting as NetworkManager will automatically determine whether it's feasible to start WPS enrollment from the Access Point capabilities. WPS can be disabled by setting this property to a value of 1." />
   </setting>
+  <setting name="wpan" description="IEEE 802.15.4 (WPAN) MAC Settings" name_upper="WPAN" >
+    <property name="mac-address" name_upper="MAC_ADDRESS" type="string" description="If specified, this connection will only apply to the IEEE 802.15.4 (WPAN) MAC layer device whose permanent MAC address matches." />
+    <property name="pan-id" name_upper="PAN_ID" type="uint32" default="65535" description="IEEE 802.15.4 Personal Area Network (PAN) identifier." />
+    <property name="short-address" name_upper="SHORT_ADDRESS" type="uint32" default="65535" description="Short IEEE 802.15.4 address to be used within a restricted environment." />
+  </setting>
 </nm-setting-docs>
diff --git a/libnm/nm-settings-docs-overrides.xml b/libnm/nm-settings-docs-overrides.xml
index f85b834c..276253c6 100644
--- a/libnm/nm-settings-docs-overrides.xml
+++ b/libnm/nm-settings-docs-overrides.xml
@@ -3,7 +3,9 @@
 ]>
 
 <nm-dbus-docs>
-  <setting name="802-1x">
+  <setting name="6lowpan">
+</setting>
+<setting name="802-1x">
 </setting>
 <setting name="adsl">
 </setting>
@@ -29,6 +31,8 @@ bridge&apos;s interface name."/>
 </setting>
 <setting name="dummy">
 </setting>
+<setting name="ethtool">
+</setting>
 <setting name="generic">
 </setting>
 <setting name="gsm">
@@ -112,6 +116,8 @@ also exist on some routes."/>
 </setting>
 <setting name="macvlan">
 </setting>
+<setting name="match">
+</setting>
 <setting name="802-11-olpc-mesh">
 </setting>
 <setting name="ovs-bridge">
@@ -132,6 +138,8 @@ also exist on some routes."/>
 <property name="parity" variable="parity" format="byte" values="" default="" example="" description="The connection parity: 69 (ASCII &apos;E&apos;) for even parity,
 111 (ASCII &apos;o&apos;) for odd, 110 (ASCII &apos;n&apos;) for none."/>
 </setting>
+<setting name="sriov">
+</setting>
 <setting name="tc">
 </setting>
 <setting name="team-port">
@@ -186,4 +194,6 @@ only exists in D-Bus API. libnm and nmcli continue to call this property
 present in the connection dictionary, for compatibility with very old
 NetworkManager daemons."/>
 </setting>
+<setting name="wpan">
+</setting>
 </nm-dbus-docs>
\ No newline at end of file
diff --git a/libnm/nm-settings-docs.xml b/libnm/nm-settings-docs.xml
index 8deac083..68e687c1 100644
--- a/libnm/nm-settings-docs.xml
+++ b/libnm/nm-settings-docs.xml
@@ -13,10 +13,11 @@
     <property name="id" name_upper="ID" type="string" description="A human readable unique identifier for the connection, like &quot;Work Wi-Fi&quot; or &quot;T-Mobile 3G&quot;." />
     <property name="interface-name" name_upper="INTERFACE_NAME" type="string" description="The name of the network interface this connection is bound to. If not set, then the connection can be attached to any interface of the appropriate type (subject to restrictions imposed by other settings). For software devices this specifies the name of the created device. For connection types where interface names cannot easily be made persistent (e.g. mobile broadband or USB Ethernet), this property should not be used. Setting this property restricts the interfaces a connection can be used with, and if interface names change or are reordered the connection may be applied to the wrong interface." />
     <property name="lldp" name_upper="LLDP" type="int32" default="-1" description="Whether LLDP is enabled for the connection." />
+    <property name="llmnr" name_upper="LLMNR" type="int32" default="-1" description="Whether Link-Local Multicast Name Resolution (LLMNR) is enabled for the connection. LLMNR is a protocol based on the Domain Name System (DNS) packet format that allows both IPv4 and IPv6 hosts to perform name resolution for hosts on the same local link. The permitted values are: yes: register hostname and resolving for the connection, no: disable LLMNR for the interface, resolve: do not register hostname but allow resolving of LLMNR host names. This feature requires a plugin which supports LLMNR. One such plugin is dns-systemd-resolved." />
     <property name="master" name_upper="MASTER" type="string" description="Interface name of the master device or UUID of the master connection." />
-    <property name="mdns" name_upper="MDNS" type="int32" default="-1" description="Whether mDNS is enabled for the connection. The permitted values are: yes: register hostname and resolving for the connection, no: disable mDNS for the interface, resolve: do not register hostname but allow resolving of mDNS host names. When updating this property on a currently activated connection, the change takes effect immediately. This feature requires a plugin which supports mDNS. One such plugin is dns-systemd-resolved." />
+    <property name="mdns" name_upper="MDNS" type="int32" default="-1" description="Whether mDNS is enabled for the connection. The permitted values are: yes: register hostname and resolving for the connection, no: disable mDNS for the interface, resolve: do not register hostname but allow resolving of mDNS host names. This feature requires a plugin which supports mDNS. One such plugin is dns-systemd-resolved." />
     <property name="metered" name_upper="METERED" type="NMMetered (int32)" description="Whether the connection is metered. When updating this property on a currently activated connection, the change takes effect immediately." />
-    <property name="name" name_upper="NAME" type="string" default="connection" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
+    <property name="multi-connect" name_upper="MULTI_CONNECT" type="int32" default="0" description="Specifies whether the profile can be active multiple times at a particular moment. The value is of type NMConnectionMultiConnect." />
     <property name="permissions" name_upper="PERMISSIONS" type="array of string" default="[]" description="An array of strings defining what access a given user has to this connection.  If this is NULL or empty, all users are allowed to access this connection; otherwise users are allowed if and only if they are in this list.  When this is not empty, the connection can be active only when one of the specified users is logged into an active session.  Each entry is of the form &quot;[type]:[id]:[reserved]&quot;; for example, &quot;user:dcbw:blah&quot;. At this time only the &quot;user&quot; [type] is allowed.  Any other values are ignored and reserved for future use.  [id] is the username that this permission refers to, which may not contain the &quot;:&quot; character. Any [reserved] information present must be ignored and is reserved for future use.  All of [type], [id], and [reserved] must be valid UTF-8." />
     <property name="read-only" name_upper="READ_ONLY" type="boolean" default="FALSE" description="FALSE if the connection can be modified using the provided settings service's D-Bus interface with the right privileges, or TRUE if the connection is read-only and cannot be modified." />
     <property name="secondaries" name_upper="SECONDARIES" type="array of string" default="[]" description="List of connection UUIDs that should be activated when the base connection itself is activated. Currently only VPN connections are supported." />
@@ -27,6 +28,9 @@
     <property name="uuid" name_upper="UUID" type="string" description="A universally unique identifier for the connection, for example generated with libuuid.  It should be assigned when the connection is created, and never changed as long as the connection still applies to the same network.  For example, it should not be changed when the &quot;id&quot; property or NMSettingIP4Config changes, but might need to be re-created when the Wi-Fi SSID, mobile broadband network provider, or &quot;type&quot; property changes. The UUID must be in the format &quot;2815492f-7e56-435e-b2e9-246bd7cdc664&quot; (ie, contains only hexadecimal characters and &quot;-&quot;)." />
     <property name="zone" name_upper="ZONE" type="string" description="The trust level of a the connection.  Free form case-insensitive string (for example &quot;Home&quot;, &quot;Work&quot;, &quot;Public&quot;).  NULL or unspecified zone means the connection will be placed in the default zone as defined by the firewall. When updating this property on a currently activated connection, the change takes effect immediately." />
   </setting>
+  <setting name="6lowpan" description="6LoWPAN Settings" name_upper="6LOWPAN" >
+    <property name="parent" name_upper="PARENT" type="string" description="If given, specifies the parent interface name or parent connection UUID from which this 6LowPAN interface should be created." />
+  </setting>
   <setting name="802-1x" description="IEEE 802.1x Authentication Settings" name_upper="802_1X" >
     <property name="altsubject-matches" name_upper="ALTSUBJECT_MATCHES" type="array of string" default="[]" description="List of strings to be matched against the altSubjectName of the certificate presented by the authentication server. If the list is empty, no verification of the server certificate's altSubjectName is performed." />
     <property name="anonymous-identity" name_upper="ANONYMOUS_IDENTITY" type="string" description="Anonymous identity string for EAP authentication methods.  Used as the unencrypted identity with EAP types that support different tunneled identity like EAP-TTLS." />
@@ -41,7 +45,6 @@
     <property name="domain-suffix-match" name_upper="DOMAIN_SUFFIX_MATCH" type="string" description="Constraint for server domain name. If set, this FQDN is used as a suffix match requirement for dNSName element(s) of the certificate presented by the authentication server.  If a matching dNSName is found, this constraint is met.  If no dNSName values are present, this constraint is matched against SubjectName CN using same suffix match comparison." />
     <property name="eap" name_upper="EAP" type="array of string" default="[]" description="The allowed EAP method to be used when authenticating to the network with 802.1x.  Valid methods are: &quot;leap&quot;, &quot;md5&quot;, &quot;tls&quot;, &quot;peap&quot;, &quot;ttls&quot;, &quot;pwd&quot;, and &quot;fast&quot;.  Each method requires different configuration using the properties of this setting; refer to wpa_supplicant documentation for the allowed combinations." />
     <property name="identity" name_upper="IDENTITY" type="string" description="Identity string for EAP authentication methods.  Often the user's user or login name." />
-    <property name="name" name_upper="NAME" type="string" default="802-1x" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="pac-file" name_upper="PAC_FILE" type="string" description="UTF-8 encoded file path containing PAC for EAP-FAST." />
     <property name="password" name_upper="PASSWORD" type="string" description="UTF-8 encoded password used for EAP authentication methods. If both the &quot;password&quot; property and the &quot;password-raw&quot; property are specified, &quot;password&quot; is preferred." />
     <property name="password-flags" name_upper="PASSWORD_FLAGS" type="NMSettingSecretFlags (uint32)" description="Flags indicating how to handle the &quot;password&quot; property." />
@@ -76,7 +79,6 @@
   </setting>
   <setting name="adsl" description="ADSL Settings" name_upper="ADSL" >
     <property name="encapsulation" name_upper="ENCAPSULATION" type="string" description="Encapsulation of ADSL connection.  Can be &quot;vcmux&quot; or &quot;llc&quot;." />
-    <property name="name" name_upper="NAME" type="string" default="adsl" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="password" name_upper="PASSWORD" type="string" description="Password used to authenticate with the ADSL service." />
     <property name="password-flags" name_upper="PASSWORD_FLAGS" type="NMSettingSecretFlags (uint32)" description="Flags indicating how to handle the &quot;password&quot; property." />
     <property name="protocol" name_upper="PROTOCOL" type="string" description="ADSL connection protocol.  Can be &quot;pppoa&quot;, &quot;pppoe&quot; or &quot;ipoatm&quot;." />
@@ -86,12 +88,10 @@
   </setting>
   <setting name="bluetooth" description="Bluetooth Settings" name_upper="BLUETOOTH" >
     <property name="bdaddr" name_upper="BDADDR" type="byte array" description="The Bluetooth address of the device." />
-    <property name="name" name_upper="NAME" type="string" default="bluetooth" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="type" name_upper="TYPE" type="string" description="Either &quot;dun&quot; for Dial-Up Networking connections or &quot;panu&quot; for Personal Area Networking connections to devices supporting the NAP profile." />
   </setting>
   <setting name="bond" description="Bonding Settings" name_upper="BOND" >
     <property name="interface-name" name_upper="INTERFACE_NAME" type="string" description="Deprecated in favor of connection.interface-name, but can be used for backward-compatibility with older daemons, to set the bond's interface name." />
-    <property name="name" name_upper="NAME" type="string" default="bond" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="options" name_upper="OPTIONS" type="dict of string to string" default="{'mode': 'balance-rr'}" description="Dictionary of key/value pairs of bonding options.  Both keys and values must be strings. Option names must contain only alphanumeric characters (ie, [a-zA-Z0-9])." />
   </setting>
   <setting name="bridge" description="Bridging Settings" name_upper="BRIDGE" >
@@ -103,19 +103,16 @@
     <property name="mac-address" name_upper="MAC_ADDRESS" type="byte array" description="If specified, the MAC address of bridge. When creating a new bridge, this MAC address will be set. If this field is left unspecified, the &quot;ethernet.cloned-mac-address&quot; is referred instead to generate the initial MAC address. Note that setting &quot;ethernet.cloned-mac-address&quot; anyway overwrites the MAC address of the bridge later while activating the bridge. Hence, this property is deprecated. Deprecated: 1" />
     <property name="max-age" name_upper="MAX_AGE" type="uint32" default="20" description="The Spanning Tree Protocol (STP) maximum message age, in seconds." />
     <property name="multicast-snooping" name_upper="MULTICAST_SNOOPING" type="boolean" default="TRUE" description="Controls whether IGMP snooping is enabled for this bridge. Note that if snooping was automatically disabled due to hash collisions, the system may refuse to enable the feature until the collisions are resolved." />
-    <property name="name" name_upper="NAME" type="string" default="bridge" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="priority" name_upper="PRIORITY" type="uint32" default="32768" description="Sets the Spanning Tree Protocol (STP) priority for this bridge.  Lower values are &quot;better&quot;; the lowest priority bridge will be elected the root bridge." />
     <property name="stp" name_upper="STP" type="boolean" default="TRUE" description="Controls whether Spanning Tree Protocol (STP) is enabled for this bridge." />
   </setting>
   <setting name="bridge-port" description="Bridge Port Settings" name_upper="BRIDGE_PORT" >
     <property name="hairpin-mode" name_upper="HAIRPIN_MODE" type="boolean" default="FALSE" description="Enables or disables &quot;hairpin mode&quot; for the port, which allows frames to be sent back out through the port the frame was received on." />
-    <property name="name" name_upper="NAME" type="string" default="bridge-port" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="path-cost" name_upper="PATH_COST" type="uint32" default="100" description="The Spanning Tree Protocol (STP) port cost for destinations via this port." />
     <property name="priority" name_upper="PRIORITY" type="uint32" default="32" description="The Spanning Tree Protocol (STP) priority of this bridge port." />
   </setting>
   <setting name="cdma" description="CDMA-based Mobile Broadband Settings" name_upper="CDMA" >
     <property name="mtu" name_upper="MTU" type="uint32" default="0" description="If non-zero, only transmit packets of the specified size or smaller, breaking larger packets up into multiple frames." />
-    <property name="name" name_upper="NAME" type="string" default="cdma" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="number" name_upper="NUMBER" type="string" description="The number to dial to establish the connection to the CDMA-based mobile broadband network, if any.  If not specified, the default number (#777) is used when required." />
     <property name="password" name_upper="PASSWORD" type="string" description="The password used to authenticate with the network, if required.  Many providers do not require a password, or accept any password.  But if a password is required, it is specified here." />
     <property name="password-flags" name_upper="PASSWORD_FLAGS" type="NMSettingSecretFlags (uint32)" description="Flags indicating how to handle the &quot;password&quot; property." />
@@ -129,7 +126,6 @@
     <property name="app-fip-priority" name_upper="APP_FIP_PRIORITY" type="int32" default="-1" description="The highest User Priority (0 - 7) which FIP frames should use, or -1 for default priority.  Only used when the &quot;app-fip-flags&quot; property includes the NM_SETTING_DCB_FLAG_ENABLE (0x1) flag." />
     <property name="app-iscsi-flags" name_upper="APP_ISCSI_FLAGS" type="NMSettingDcbFlags (uint32)" description="Specifies the NMSettingDcbFlags for the DCB iSCSI application.  Flags may be any combination of NM_SETTING_DCB_FLAG_ENABLE (0x1), NM_SETTING_DCB_FLAG_ADVERTISE (0x2), and NM_SETTING_DCB_FLAG_WILLING (0x4)." />
     <property name="app-iscsi-priority" name_upper="APP_ISCSI_PRIORITY" type="int32" default="-1" description="The highest User Priority (0 - 7) which iSCSI frames should use, or -1 for default priority. Only used when the &quot;app-iscsi-flags&quot; property includes the NM_SETTING_DCB_FLAG_ENABLE (0x1) flag." />
-    <property name="name" name_upper="NAME" type="string" default="dcb" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="priority-bandwidth" name_upper="PRIORITY_BANDWIDTH" type="array of uint32" default="[0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L]" description="An array of 8 uint values, where the array index corresponds to the User Priority (0 - 7) and the value indicates the percentage of bandwidth of the priority's assigned group that the priority may use.  The sum of all percentages for priorities which belong to the same group must total 100 percents." />
     <property name="priority-flow-control" name_upper="PRIORITY_FLOW_CONTROL" type="array of uint32" default="[False, False, False, False, False, False, False, False]" description="An array of 8 boolean values, where the array index corresponds to the User Priority (0 - 7) and the value indicates whether or not the corresponding priority should transmit priority pause." />
     <property name="priority-flow-control-flags" name_upper="PRIORITY_FLOW_CONTROL_FLAGS" type="NMSettingDcbFlags (uint32)" description="Specifies the NMSettingDcbFlags for DCB Priority Flow Control (PFC). Flags may be any combination of NM_SETTING_DCB_FLAG_ENABLE (0x1), NM_SETTING_DCB_FLAG_ADVERTISE (0x2), and NM_SETTING_DCB_FLAG_WILLING (0x4)." />
@@ -140,17 +136,16 @@
     <property name="priority-traffic-class" name_upper="PRIORITY_TRAFFIC_CLASS" type="array of uint32" default="[0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L]" description="An array of 8 uint values, where the array index corresponds to the User Priority (0 - 7) and the value indicates the traffic class (0 - 7) to which the priority is mapped." />
   </setting>
   <setting name="dummy" description="Dummy Link Settings" name_upper="DUMMY" >
-    <property name="name" name_upper="NAME" type="string" default="dummy" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
+  </setting>
+  <setting name="ethtool" description="Ethtool Ethernet Settings" name_upper="ETHTOOL" >
   </setting>
   <setting name="generic" description="Generic Link Settings" name_upper="GENERIC" >
-    <property name="name" name_upper="NAME" type="string" default="generic" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
   </setting>
   <setting name="gsm" description="GSM-based Mobile Broadband Settings" name_upper="GSM" >
     <property name="apn" name_upper="APN" type="string" description="The GPRS Access Point Name specifying the APN used when establishing a data session with the GSM-based network.  The APN often determines how the user will be billed for their network usage and whether the user has access to the Internet or just a provider-specific walled-garden, so it is important to use the correct APN for the user's mobile broadband plan. The APN may only be composed of the characters a-z, 0-9, ., and - per GSM 03.60 Section 14.9." />
     <property name="device-id" name_upper="DEVICE_ID" type="string" description="The device unique identifier (as given by the WWAN management service) which this connection applies to.  If given, the connection will only apply to the specified device." />
     <property name="home-only" name_upper="HOME_ONLY" type="boolean" default="FALSE" description="When TRUE, only connections to the home network will be allowed. Connections to roaming networks will not be made." />
     <property name="mtu" name_upper="MTU" type="uint32" default="0" description="If non-zero, only transmit packets of the specified size or smaller, breaking larger packets up into multiple frames." />
-    <property name="name" name_upper="NAME" type="string" default="gsm" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="network-id" name_upper="NETWORK_ID" type="string" description="The Network ID (GSM LAI format, ie MCC-MNC) to force specific network registration.  If the Network ID is specified, NetworkManager will attempt to force the device to register only on the specified network. This can be used to ensure that the device does not roam when direct roaming control of the device is not otherwise possible." />
     <property name="number" name_upper="NUMBER" type="string" description="Number to dial when establishing a PPP data session with the GSM-based mobile broadband network.  Many modems do not require PPP for connections to the mobile network and thus this property should be left blank, which allows NetworkManager to select the appropriate settings automatically." />
     <property name="password" name_upper="PASSWORD" type="string" description="The password used to authenticate with the network, if required.  Many providers do not require a password, or accept any password.  But if a password is required, it is specified here." />
@@ -164,7 +159,6 @@
   <setting name="infiniband" description="Infiniband Settings" name_upper="INFINIBAND" >
     <property name="mac-address" name_upper="MAC_ADDRESS" type="byte array" description="If specified, this connection will only apply to the IPoIB device whose permanent MAC address matches. This property does not change the MAC address of the device (i.e. MAC spoofing)." />
     <property name="mtu" name_upper="MTU" type="uint32" default="0" description="If non-zero, only transmit packets of the specified size or smaller, breaking larger packets up into multiple frames." />
-    <property name="name" name_upper="NAME" type="string" default="infiniband" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="p-key" name_upper="P_KEY" type="int32" default="-1" description="The InfiniBand P_Key to use for this device. A value of -1 means to use the default P_Key (aka &quot;the P_Key at index 0&quot;).  Otherwise it is a 16-bit unsigned integer, whose high bit is set if it is a &quot;full membership&quot; P_Key." />
     <property name="parent" name_upper="PARENT" type="string" description="The interface name of the parent device of this device. Normally NULL, but if the &quot;p_key&quot; property is set, then you must specify the base device by setting either this property or &quot;mac-address&quot;." />
     <property name="transport-mode" name_upper="TRANSPORT_MODE" type="string" description="The IP-over-InfiniBand transport mode. Either &quot;datagram&quot; or &quot;connected&quot;." />
@@ -173,7 +167,7 @@
     <property name="address-data" name_upper="ADDRESS_DATA" type="array of vardict" description="Array of IPv4 addresses. Each address dictionary contains at least 'address' and 'prefix' entries, containing the IP address as a string, and the prefix length as a uint32. Additional attributes may also exist on some addresses." />
     <property name="addresses" name_upper="ADDRESSES" type="array of array of uint32" default="[]" description="Deprecated in favor of the 'address-data' and 'gateway' properties, but this can be used for backward-compatibility with older daemons. Note that if you send this property the daemon will ignore 'address-data' and 'gateway'.  Array of IPv4 address structures.  Each IPv4 address structure is composed of 3 32-bit values; the first being the IPv4 address (network byte order), the second the prefix (1 - 32), and last the IPv4 gateway (network byte order). The gateway may be left as 0 if no gateway exists for that subnet." />
     <property name="dad-timeout" name_upper="DAD_TIMEOUT" type="int32" default="-1" description="Timeout in milliseconds used to check for the presence of duplicate IP addresses on the network.  If an address conflict is detected, the activation will fail.  A zero value means that no duplicate address detection is performed, -1 means the default value (either configuration ipvx.dad-timeout override or zero).  A value greater than zero is a timeout in milliseconds. The property is currently implemented only for IPv4." />
-    <property name="dhcp-client-id" name_upper="DHCP_CLIENT_ID" type="string" description="A string sent to the DHCP server to identify the local machine which the DHCP server may use to customize the DHCP lease and options. When the property is a hex string ('aa:bb:cc') it is interpreted as a binary client ID, in which case the first byte is assumed to be the 'type' field as per RFC 2132 section 9.14 and the remaining bytes may be an hardware address (e.g. '01:xx:xx:xx:xx:xx:xx' where 1 is the Ethernet ARP type and the rest is a MAC address). If the property is not a hex string it is considered as a non-hardware-address client ID and the 'type' field is set to 0. The special values &quot;mac&quot; and &quot;perm-mac&quot; are supported, which use the current or permanent MAC address of the device to generate a client identifier with type ethernet type (01). Currently, these options only work for ethernet type of links. The special value &quot;stable&quot; is supported to generate a type 0 client identifier based on the stable-id (see connection.stable-id) and a per-host key. If unset, a globally configured default is used. If still unset, the client-id from the last lease is reused." />
+    <property name="dhcp-client-id" name_upper="DHCP_CLIENT_ID" type="string" description="A string sent to the DHCP server to identify the local machine which the DHCP server may use to customize the DHCP lease and options. When the property is a hex string ('aa:bb:cc') it is interpreted as a binary client ID, in which case the first byte is assumed to be the 'type' field as per RFC 2132 section 9.14 and the remaining bytes may be an hardware address (e.g. '01:xx:xx:xx:xx:xx:xx' where 1 is the Ethernet ARP type and the rest is a MAC address). If the property is not a hex string it is considered as a non-hardware-address client ID and the 'type' field is set to 0. The special values &quot;mac&quot; and &quot;perm-mac&quot; are supported, which use the current or permanent MAC address of the device to generate a client identifier with type ethernet (01). Currently, these options only work for ethernet type of links. The special value &quot;stable&quot; is supported to generate a type 0 client identifier based on the stable-id (see connection.stable-id) and a per-host key. If unset, a globally configured default is used. If still unset, the client-id from the last lease is reused." />
     <property name="dhcp-fqdn" name_upper="DHCP_FQDN" type="string" description="If the &quot;dhcp-send-hostname&quot; property is TRUE, then the specified FQDN will be sent to the DHCP server when acquiring a lease. This property and &quot;dhcp-hostname&quot; are mutually exclusive and cannot be set at the same time." />
     <property name="dhcp-hostname" name_upper="DHCP_HOSTNAME" type="string" description="If the &quot;dhcp-send-hostname&quot; property is TRUE, then the specified name will be sent to the DHCP server when acquiring a lease. This property and &quot;dhcp-fqdn&quot; are mutually exclusive and cannot be set at the same time." />
     <property name="dhcp-send-hostname" name_upper="DHCP_SEND_HOSTNAME" type="boolean" default="TRUE" description="If TRUE, a hostname is sent to the DHCP server when acquiring a lease. Some DHCP servers use this hostname to update DNS databases, essentially providing a static hostname for the computer.  If the &quot;dhcp-hostname&quot; property is NULL and this property is TRUE, the current persistent hostname of the computer is sent." />
@@ -186,8 +180,7 @@
     <property name="ignore-auto-dns" name_upper="IGNORE_AUTO_DNS" type="boolean" default="FALSE" description="When &quot;method&quot; is set to &quot;auto&quot; and this property to TRUE, automatically configured nameservers and search domains are ignored and only nameservers and search domains specified in the &quot;dns&quot; and &quot;dns-search&quot; properties, if any, are used." />
     <property name="ignore-auto-routes" name_upper="IGNORE_AUTO_ROUTES" type="boolean" default="FALSE" description="When &quot;method&quot; is set to &quot;auto&quot; and this property to TRUE, automatically configured routes are ignored and only routes specified in the &quot;routes&quot; property, if any, are used." />
     <property name="may-fail" name_upper="MAY_FAIL" type="boolean" default="TRUE" description="If TRUE, allow overall network configuration to proceed even if the configuration specified by this property times out.  Note that at least one IP configuration must succeed or overall network configuration will still fail.  For example, in IPv6-only networks, setting this property to TRUE on the NMSettingIP4Config allows the overall network configuration to succeed if IPv4 configuration fails but IPv6 configuration completes successfully." />
-    <property name="method" name_upper="METHOD" type="string" description="IP configuration method. NMSettingIP4Config and NMSettingIP6Config both support &quot;auto&quot;, &quot;manual&quot;, and &quot;link-local&quot;. See the subclass-specific documentation for other values. In general, for the &quot;auto&quot; method, properties such as &quot;dns&quot; and &quot;routes&quot; specify information that is added on to the information returned from automatic configuration.  The &quot;ignore-auto-routes&quot; and &quot;ignore-auto-dns&quot; properties modify this behavior. For methods that imply no upstream network, such as &quot;shared&quot; or &quot;link-local&quot;, these properties must be empty. For IPv4 method &quot;shared&quot;, the IP subnet can be configured by adding one manual IPv4 address or otherwise 10.42.x.0/24 is chosen." />
-    <property name="name" name_upper="NAME" type="string" default="ipv4" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
+    <property name="method" name_upper="METHOD" type="string" description="IP configuration method. NMSettingIP4Config and NMSettingIP6Config both support &quot;auto&quot;, &quot;manual&quot;, and &quot;link-local&quot;. See the subclass-specific documentation for other values. In general, for the &quot;auto&quot; method, properties such as &quot;dns&quot; and &quot;routes&quot; specify information that is added on to the information returned from automatic configuration.  The &quot;ignore-auto-routes&quot; and &quot;ignore-auto-dns&quot; properties modify this behavior. For methods that imply no upstream network, such as &quot;shared&quot; or &quot;link-local&quot;, these properties must be empty. For IPv4 method &quot;shared&quot;, the IP subnet can be configured by adding one manual IPv4 address or otherwise 10.42.x.0/24 is chosen. Note that the shared method must be configured on the interface which shares the internet to a subnet, not on the uplink which is shared." />
     <property name="never-default" name_upper="NEVER_DEFAULT" type="boolean" default="FALSE" description="If TRUE, this connection will never be the default connection for this IP type, meaning it will never be assigned the default route by NetworkManager." />
     <property name="route-data" name_upper="ROUTE_DATA" type="array of vardict" description="Array of IPv4 routes. Each route dictionary contains at least 'dest' and 'prefix' entries, containing the destination IP address as a string, and the prefix length as a uint32. Most routes will also have a 'gateway' entry, containing the gateway IP address as a string. If the route has a 'metric' entry (containing a uint32), that will be used as the metric for the route (otherwise NM will pick a default value appropriate to the device). Additional attributes may also exist on some routes." />
     <property name="route-metric" name_upper="ROUTE_METRIC" type="int64" default="-1" description="The default metric for routes that don't explicitly specify a metric. The default value -1 means that the metric is chosen automatically based on the device type. The metric applies to dynamic routes, manual (static) routes that don't have an explicit metric setting, address prefix routes, and the default route. Note that for IPv6, the kernel accepts zero (0) but coerces it to 1024 (user default). Hence, setting this property to zero effectively mean setting it to 1024. For IPv4, zero is a regular value for the metric." />
@@ -212,8 +205,7 @@
     <property name="ignore-auto-routes" name_upper="IGNORE_AUTO_ROUTES" type="boolean" default="FALSE" description="When &quot;method&quot; is set to &quot;auto&quot; and this property to TRUE, automatically configured routes are ignored and only routes specified in the &quot;routes&quot; property, if any, are used." />
     <property name="ip6-privacy" name_upper="IP6_PRIVACY" type="NMSettingIP6ConfigPrivacy (int32)" description="Configure IPv6 Privacy Extensions for SLAAC, described in RFC4941.  If enabled, it makes the kernel generate a temporary IPv6 address in addition to the public one generated from MAC address via modified EUI-64.  This enhances privacy, but could cause problems in some applications, on the other hand.  The permitted values are: -1: unknown, 0: disabled, 1: enabled (prefer public address), 2: enabled (prefer temporary addresses). Having a per-connection setting set to &quot;-1&quot; (unknown) means fallback to global configuration &quot;ipv6.ip6-privacy&quot;. If also global configuration is unspecified or set to &quot;-1&quot;, fallback to read &quot;/proc/sys/net/ipv6/conf/default/use_tempaddr&quot;. Note that this setting is distinct from the Stable Privacy addresses that can be enabled with the &quot;addr-gen-mode&quot; property's &quot;stable-privacy&quot; setting as another way of avoiding host tracking with IPv6 addresses." />
     <property name="may-fail" name_upper="MAY_FAIL" type="boolean" default="TRUE" description="If TRUE, allow overall network configuration to proceed even if the configuration specified by this property times out.  Note that at least one IP configuration must succeed or overall network configuration will still fail.  For example, in IPv6-only networks, setting this property to TRUE on the NMSettingIP4Config allows the overall network configuration to succeed if IPv4 configuration fails but IPv6 configuration completes successfully." />
-    <property name="method" name_upper="METHOD" type="string" description="IP configuration method. NMSettingIP4Config and NMSettingIP6Config both support &quot;auto&quot;, &quot;manual&quot;, and &quot;link-local&quot;. See the subclass-specific documentation for other values. In general, for the &quot;auto&quot; method, properties such as &quot;dns&quot; and &quot;routes&quot; specify information that is added on to the information returned from automatic configuration.  The &quot;ignore-auto-routes&quot; and &quot;ignore-auto-dns&quot; properties modify this behavior. For methods that imply no upstream network, such as &quot;shared&quot; or &quot;link-local&quot;, these properties must be empty. For IPv4 method &quot;shared&quot;, the IP subnet can be configured by adding one manual IPv4 address or otherwise 10.42.x.0/24 is chosen." />
-    <property name="name" name_upper="NAME" type="string" default="ipv6" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
+    <property name="method" name_upper="METHOD" type="string" description="IP configuration method. NMSettingIP4Config and NMSettingIP6Config both support &quot;auto&quot;, &quot;manual&quot;, and &quot;link-local&quot;. See the subclass-specific documentation for other values. In general, for the &quot;auto&quot; method, properties such as &quot;dns&quot; and &quot;routes&quot; specify information that is added on to the information returned from automatic configuration.  The &quot;ignore-auto-routes&quot; and &quot;ignore-auto-dns&quot; properties modify this behavior. For methods that imply no upstream network, such as &quot;shared&quot; or &quot;link-local&quot;, these properties must be empty. For IPv4 method &quot;shared&quot;, the IP subnet can be configured by adding one manual IPv4 address or otherwise 10.42.x.0/24 is chosen. Note that the shared method must be configured on the interface which shares the internet to a subnet, not on the uplink which is shared." />
     <property name="never-default" name_upper="NEVER_DEFAULT" type="boolean" default="FALSE" description="If TRUE, this connection will never be the default connection for this IP type, meaning it will never be assigned the default route by NetworkManager." />
     <property name="route-data" name_upper="ROUTE_DATA" type="array of vardict" description="Array of IPv6 routes. Each route dictionary contains at least 'dest' and 'prefix' entries, containing the destination IP address as a string, and the prefix length as a uint32. Most routes will also have a 'next-hop' entry, containing the next hop IP address as a string. If the route has a 'metric' entry (containing a uint32), that will be used as the metric for the route (otherwise NM will pick a default value appropriate to the device). Additional attributes may also exist on some routes." />
     <property name="route-metric" name_upper="ROUTE_METRIC" type="int64" default="-1" description="The default metric for routes that don't explicitly specify a metric. The default value -1 means that the metric is chosen automatically based on the device type. The metric applies to dynamic routes, manual (static) routes that don't have an explicit metric setting, address prefix routes, and the default route. Note that for IPv6, the kernel accepts zero (0) but coerces it to 1024 (user default). Hence, setting this property to zero effectively mean setting it to 1024. For IPv4, zero is a regular value for the metric." />
@@ -229,7 +221,6 @@
     <property name="local" name_upper="LOCAL" type="string" description="The local endpoint of the tunnel; the value can be empty, otherwise it must contain an IPv4 or IPv6 address." />
     <property name="mode" name_upper="MODE" type="uint32" default="0" description="The tunneling mode, for example NM_IP_TUNNEL_MODE_IPIP (1) or NM_IP_TUNNEL_MODE_GRE (2)." />
     <property name="mtu" name_upper="MTU" type="uint32" default="0" description="If non-zero, only transmit packets of the specified size or smaller, breaking larger packets up into multiple fragments." />
-    <property name="name" name_upper="NAME" type="string" default="ip-tunnel" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="output-key" name_upper="OUTPUT_KEY" type="string" description="The key used for tunnel output packets; the property is valid only for certain tunnel modes (GRE, IP6GRE). If empty, no key is used." />
     <property name="parent" name_upper="PARENT" type="string" description="If given, specifies the parent interface name or parent connection UUID the new device will be bound to so that tunneled packets will only be routed via that interface." />
     <property name="path-mtu-discovery" name_upper="PATH_MTU_DISCOVERY" type="boolean" default="TRUE" description="Whether to enable Path MTU Discovery on this tunnel." />
@@ -243,7 +234,6 @@
     <property name="mka-cak-flags" name_upper="MKA_CAK_FLAGS" type="NMSettingSecretFlags (uint32)" description="Flags indicating how to handle the &quot;mka-cak&quot; property." />
     <property name="mka-ckn" name_upper="MKA_CKN" type="string" description="The pre-shared CKN (Connectivity-association Key Name) for MACsec Key Agreement." />
     <property name="mode" name_upper="MODE" type="int32" default="0" description="Specifies how the CAK (Connectivity Association Key) for MKA (MACsec Key Agreement) is obtained." />
-    <property name="name" name_upper="NAME" type="string" default="macsec" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="parent" name_upper="PARENT" type="string" description="If given, specifies the parent interface name or parent connection UUID from which this MACSEC interface should be created.  If this property is not specified, the connection must contain an &quot;802-3-ethernet&quot; setting with a &quot;mac-address&quot; property." />
     <property name="port" name_upper="PORT" type="int32" default="1" description="The port component of the SCI (Secure Channel Identifier), between 1 and 65534." />
     <property name="send-sci" name_upper="SEND_SCI" type="boolean" default="TRUE" description="Specifies whether the SCI (Secure Channel Identifier) is included in every packet." />
@@ -251,30 +241,28 @@
   </setting>
   <setting name="macvlan" description="MAC VLAN Settings" name_upper="MACVLAN" >
     <property name="mode" name_upper="MODE" type="uint32" default="0" description="The macvlan mode, which specifies the communication mechanism between multiple macvlans on the same lower device." />
-    <property name="name" name_upper="NAME" type="string" default="macvlan" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="parent" name_upper="PARENT" type="string" description="If given, specifies the parent interface name or parent connection UUID from which this MAC-VLAN interface should be created.  If this property is not specified, the connection must contain an &quot;802-3-ethernet&quot; setting with a &quot;mac-address&quot; property." />
     <property name="promiscuous" name_upper="PROMISCUOUS" type="boolean" default="TRUE" description="Whether the interface should be put in promiscuous mode." />
     <property name="tap" name_upper="TAP" type="boolean" default="FALSE" description="Whether the interface should be a MACVTAP." />
   </setting>
+  <setting name="match" description="Match settings." name_upper="MATCH" >
+    <property name="interface-name" name_upper="INTERFACE_NAME" type="array of string" default="[]" description="A list of interface names to match. Each element is a shell wildcard pattern.  When an element is prefixed with exclamation mark (!) the condition is inverted. A candidate interface name is considered matching when both these conditions are satisfied: (a) any of the elements not prefixed with '!' matches or there aren't such elements; (b) none of the elements prefixed with '!' match." />
+  </setting>
   <setting name="802-11-olpc-mesh" description="OLPC Wireless Mesh Settings" name_upper="OLPC_MESH" >
     <property name="channel" name_upper="CHANNEL" type="uint32" default="0" description="Channel on which the mesh network to join is located." />
     <property name="dhcp-anycast-address" name_upper="DHCP_ANYCAST_ADDRESS" type="byte array" description="Anycast DHCP MAC address used when requesting an IP address via DHCP. The specific anycast address used determines which DHCP server class answers the request." />
-    <property name="name" name_upper="NAME" type="string" default="802-11-olpc-mesh" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="ssid" name_upper="SSID" type="byte array" description="SSID of the mesh network to join." />
   </setting>
   <setting name="ovs-bridge" description="OvsBridge Link Settings" name_upper="OVS_BRIDGE" >
     <property name="fail-mode" name_upper="FAIL_MODE" type="string" description="The bridge failure mode. One of &quot;secure&quot;, &quot;standalone&quot; or empty." />
     <property name="mcast-snooping-enable" name_upper="MCAST_SNOOPING_ENABLE" type="boolean" default="FALSE" description="Enable or disable multicast snooping." />
-    <property name="name" name_upper="NAME" type="string" default="ovs-bridge" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="rstp-enable" name_upper="RSTP_ENABLE" type="boolean" default="FALSE" description="Enable or disable RSTP." />
     <property name="stp-enable" name_upper="STP_ENABLE" type="boolean" default="FALSE" description="Enable or disable STP." />
   </setting>
   <setting name="ovs-interface" description="Open vSwitch Interface Settings" name_upper="OVS_INTERFACE" >
-    <property name="name" name_upper="NAME" type="string" default="ovs-interface" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="type" name_upper="TYPE" type="string" description="The interface type. Either &quot;internal&quot;, or empty." />
   </setting>
   <setting name="ovs-patch" description="OvsPatch Link Settings" name_upper="OVS_PATCH" >
-    <property name="name" name_upper="NAME" type="string" default="ovs-patch" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="peer" name_upper="PEER" type="string" description="Specifies the unicast destination IP address of a remote Open vSwitch bridge port to connect to." />
   </setting>
   <setting name="ovs-port" description="OvsPort Link Settings" name_upper="OVS_PORT" >
@@ -282,7 +270,6 @@
     <property name="bond-mode" name_upper="BOND_MODE" type="string" description="Bonding mode. One of &quot;active-backup&quot;, &quot;balance-slb&quot;, or &quot;balance-tcp&quot;." />
     <property name="bond-updelay" name_upper="BOND_UPDELAY" type="uint32" default="0" description="The time port must be active before it starts forwarding traffic." />
     <property name="lacp" name_upper="LACP" type="string" description="LACP mode. One of &quot;active&quot;, &quot;off&quot;, or &quot;passive&quot;." />
-    <property name="name" name_upper="NAME" type="string" default="ovs-port" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="tag" name_upper="TAG" type="uint32" default="0" description="The VLAN tag in the range 0-4095." />
     <property name="vlan-mode" name_upper="VLAN_MODE" type="string" description="The VLAN mode. One of &quot;access&quot;, &quot;native-tagged&quot;, &quot;native-untagged&quot;, &quot;trunk&quot; or unset." />
   </setting>
@@ -294,7 +281,6 @@
     <property name="mppe-stateful" name_upper="MPPE_STATEFUL" type="boolean" default="FALSE" description="If TRUE, stateful MPPE is used.  See pppd documentation for more information on stateful MPPE." />
     <property name="mru" name_upper="MRU" type="uint32" default="0" description="If non-zero, instruct pppd to request that the peer send packets no larger than the specified size.  If non-zero, the MRU should be between 128 and 16384." />
     <property name="mtu" name_upper="MTU" type="uint32" default="0" description="If non-zero, instruct pppd to send packets no larger than the specified size." />
-    <property name="name" name_upper="NAME" type="string" default="ppp" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="no-vj-comp" name_upper="NO_VJ_COMP" type="boolean" default="FALSE" description="If TRUE, Van Jacobsen TCP header compression will not be requested." />
     <property name="noauth" name_upper="NOAUTH" type="boolean" default="TRUE" description="If TRUE, do not require the other side (usually the PPP server) to authenticate itself to the client.  If FALSE, require authentication from the remote side.  In almost all cases, this should be TRUE." />
     <property name="nobsdcomp" name_upper="NOBSDCOMP" type="boolean" default="FALSE" description="If TRUE, BSD compression will not be requested." />
@@ -308,7 +294,6 @@
     <property name="require-mppe-128" name_upper="REQUIRE_MPPE_128" type="boolean" default="FALSE" description="If TRUE, 128-bit MPPE (Microsoft Point-to-Point Encryption) will be required for the PPP session, and the &quot;require-mppe&quot; property must also be set to TRUE.  If 128-bit MPPE is not available the session will fail." />
   </setting>
   <setting name="pppoe" description="PPP-over-Ethernet Settings" name_upper="PPPOE" >
-    <property name="name" name_upper="NAME" type="string" default="pppoe" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="parent" name_upper="PARENT" type="string" description="If given, specifies the parent interface name on which this PPPoE connection should be created.  If this property is not specified, the connection is activated on the interface specified in &quot;interface-name&quot; of NMSettingConnection." />
     <property name="password" name_upper="PASSWORD" type="string" description="Password used to authenticate with the PPPoE service." />
     <property name="password-flags" name_upper="PASSWORD_FLAGS" type="NMSettingSecretFlags (uint32)" description="Flags indicating how to handle the &quot;password&quot; property." />
@@ -318,21 +303,23 @@
   <setting name="proxy" description="WWW Proxy Settings" name_upper="PROXY" >
     <property name="browser-only" name_upper="BROWSER_ONLY" type="boolean" default="FALSE" description="Whether the proxy configuration is for browser only." />
     <property name="method" name_upper="METHOD" type="int32" default="0" description="Method for proxy configuration, Default is NM_SETTING_PROXY_METHOD_NONE (0)" />
-    <property name="name" name_upper="NAME" type="string" default="proxy" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="pac-script" name_upper="PAC_SCRIPT" type="string" description="PAC script for the connection." />
     <property name="pac-url" name_upper="PAC_URL" type="string" description="PAC URL for obtaining PAC file." />
   </setting>
   <setting name="serial" description="Serial Link Settings" name_upper="SERIAL" >
     <property name="baud" name_upper="BAUD" type="uint32" default="57600" description="Speed to use for communication over the serial port.  Note that this value usually has no effect for mobile broadband modems as they generally ignore speed settings and use the highest available speed." />
     <property name="bits" name_upper="BITS" type="uint32" default="8" description="Byte-width of the serial communication. The 8 in &quot;8n1&quot; for example." />
-    <property name="name" name_upper="NAME" type="string" default="serial" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="parity" name_upper="PARITY" type="byte" description="The connection parity: 69 (ASCII 'E') for even parity, 111 (ASCII 'o') for odd, 110 (ASCII 'n') for none." />
     <property name="send-delay" name_upper="SEND_DELAY" type="uint64" default="0" description="Time to delay between each byte sent to the modem, in microseconds." />
     <property name="stopbits" name_upper="STOPBITS" type="uint32" default="1" description="Number of stop bits for communication on the serial port.  Either 1 or 2. The 1 in &quot;8n1&quot; for example." />
   </setting>
-  <setting name="tc" description="Linux Traffic Contril Settings." name_upper="TC_CONFIG" >
-    <property name="name" name_upper="NAME" type="string" default="tc" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
-    <property name="qdiscs" name_upper="QDISCS" type="array of vardict" default="[]" description="Array of TC queuening disciplines." />
+  <setting name="sriov" description="SR-IOV settings." name_upper="SRIOV" >
+    <property name="autoprobe-drivers" name_upper="AUTOPROBE_DRIVERS" type="NMTernary (int32)" description="Whether to autoprobe virtual functions by a compatible driver. If set to NM_TERNARY_TRUE (1), the kernel will try to bind VFs to a compatible driver and if this succeeds a new network interface will be instantiated for each VF. If set to NM_TERNARY_FALSE (0), VFs will not be claimed and no network interfaces will be created for them. When set to NM_TERNARY_DEFAULT (-1), the global default is used; in case the global default is unspecified it is assumed to be NM_TERNARY_TRUE (1)." />
+    <property name="total-vfs" name_upper="TOTAL_VFS" type="uint32" default="0" description="The total number of virtual functions to create." />
+    <property name="vfs" name_upper="VFS" type="array of vardict" default="[]" description="Array of virtual function descriptors. Each VF descriptor is a dictionary mapping attribute names to GVariant values. The 'index' entry is mandatory for each VF. When represented as string a VF is in the form: &quot;INDEX [ATTR=VALUE[ ATTR=VALUE]...]&quot;. for example: &quot;2 mac=00:11:22:33:44:55 spoof-check=true&quot;. The &quot;vlans&quot; attribute is represented as a semicolor-separated list of VLAN descriptors, where each descriptor has the form &quot;ID[.PRIORITY[.PROTO]]&quot;. PROTO can be either 'q' for 802.1Q (the default) or 'ad' for 802.1ad." />
+  </setting>
+  <setting name="tc" description="Linux Traffic Control Settings." name_upper="TC_CONFIG" >
+    <property name="qdiscs" name_upper="QDISCS" type="array of vardict" default="[]" description="Array of TC queueing disciplines." />
     <property name="tfilters" name_upper="TFILTERS" type="array of vardict" default="[]" description="Array of TC traffic filters." />
   </setting>
   <setting name="team" description="Teaming Settings" name_upper="TEAM" >
@@ -341,7 +328,6 @@
     <property name="link-watchers" name_upper="LINK_WATCHERS" type="array of vardict" default="[]" description="Link watchers configuration for the connection: each link watcher is defined by a dictionary, whose keys depend upon the selected link watcher. Available link watchers are 'ethtool', 'nsna_ping' and 'arp_ping' and it is specified in the dictionary with the key 'name'. Available keys are:   ethtool: 'delay-up', 'delay-down', 'init-wait'; nsna_ping: 'init-wait', 'interval', 'missed-max', 'target-host'; arp_ping: all the ones in nsna_ping and 'source-host', 'validate-active', 'validate-incative', 'send-always'. See teamd.conf man for more details." />
     <property name="mcast-rejoin-count" name_upper="MCAST_REJOIN_COUNT" type="int32" default="0" description="Corresponds to the teamd mcast_rejoin.count." />
     <property name="mcast-rejoin-interval" name_upper="MCAST_REJOIN_INTERVAL" type="int32" default="0" description="Corresponds to the teamd mcast_rejoin.interval." />
-    <property name="name" name_upper="NAME" type="string" default="team" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="notify-peers-count" name_upper="NOTIFY_PEERS_COUNT" type="int32" default="0" description="Corresponds to the teamd notify_peers.count." />
     <property name="notify-peers-interval" name_upper="NOTIFY_PEERS_INTERVAL" type="int32" default="0" description="Corresponds to the teamd notify_peers.interval." />
     <property name="runner" name_upper="RUNNER" type="string" default="&quot;roundrobin&quot;" description="Corresponds to the teamd runner.name. Permitted values are: &quot;roundrobin&quot;, &quot;broadcast&quot;, &quot;activebackup&quot;, &quot;loadbalance&quot;, &quot;lacp&quot;, &quot;random&quot;. When setting the runner, all the properties specific to the runner will be reset to the default value; all the properties specific to other runners will be set to an empty value (or if not possible to a default value)." />
@@ -360,7 +346,6 @@
     <property name="lacp-key" name_upper="LACP_KEY" type="int32" default="0" description="Corresponds to the teamd ports.PORTIFNAME.lacp_key." />
     <property name="lacp-prio" name_upper="LACP_PRIO" type="int32" default="255" description="Corresponds to the teamd ports.PORTIFNAME.lacp_prio." />
     <property name="link-watchers" name_upper="LINK_WATCHERS" type="array of vardict" default="[]" description="Link watchers configuration for the connection: each link watcher is defined by a dictionary, whose keys depend upon the selected link watcher. Available link watchers are 'ethtool', 'nsna_ping' and 'arp_ping' and it is specified in the dictionary with the key 'name'. Available keys are:   ethtool: 'delay-up', 'delay-down', 'init-wait'; nsna_ping: 'init-wait', 'interval', 'missed-max', 'target-host'; arp_ping: all the ones in nsna_ping and 'source-host', 'validate-active', 'validate-incative', 'send-always'. See teamd.conf man for more details." />
-    <property name="name" name_upper="NAME" type="string" default="team-port" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="prio" name_upper="PRIO" type="int32" default="0" description="Corresponds to the teamd ports.PORTIFNAME.prio." />
     <property name="queue-id" name_upper="QUEUE_ID" type="int32" default="-1" description="Corresponds to the teamd ports.PORTIFNAME.queue_id. When set to -1 means the parameter is skipped from the json config." />
     <property name="sticky" name_upper="STICKY" type="boolean" default="FALSE" description="Corresponds to the teamd ports.PORTIFNAME.sticky." />
@@ -369,14 +354,12 @@
     <property name="group" name_upper="GROUP" type="string" description="The group ID which will own the device. If set to NULL everyone will be able to use the device." />
     <property name="mode" name_upper="MODE" type="uint32" default="1" description="The operating mode of the virtual device. Allowed values are NM_SETTING_TUN_MODE_TUN (1) to create a layer 3 device and NM_SETTING_TUN_MODE_TAP (2) to create an Ethernet-like layer 2 one." />
     <property name="multi-queue" name_upper="MULTI_QUEUE" type="boolean" default="FALSE" description="If the property is set to TRUE, the interface will support multiple file descriptors (queues) to parallelize packet sending or receiving. Otherwise, the interface will only support a single queue." />
-    <property name="name" name_upper="NAME" type="string" default="tun" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="owner" name_upper="OWNER" type="string" description="The user ID which will own the device. If set to NULL everyone will be able to use the device." />
     <property name="pi" name_upper="PI" type="boolean" default="FALSE" description="If TRUE the interface will prepend a 4 byte header describing the physical interface to the packets." />
     <property name="vnet-hdr" name_upper="VNET_HDR" type="boolean" default="FALSE" description="If TRUE the IFF_VNET_HDR the tunnel packets will include a virtio network header." />
   </setting>
   <setting name="user" description="General User Profile Settings" name_upper="USER" >
     <property name="data" name_upper="DATA" type="dict of string to string" default="{}" description="A dictionary of key/value pairs with user data. This data is ignored by NetworkManager and can be used at the users discretion. The keys only support a strict ascii format, but the values can be arbitrary UTF8 strings up to a certain length." />
-    <property name="name" name_upper="NAME" type="string" default="user" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
   </setting>
   <setting name="vlan" description="VLAN Settings" name_upper="VLAN" >
     <property name="egress-priority-map" name_upper="EGRESS_PRIORITY_MAP" type="array of string" default="[]" description="For outgoing packets, a list of mappings from Linux SKB priorities to 802.1p priorities.  The mapping is given in the format &quot;from:to&quot; where both &quot;from&quot; and &quot;to&quot; are unsigned integers, ie &quot;7:3&quot;." />
@@ -384,12 +367,10 @@
     <property name="id" name_upper="ID" type="uint32" default="0" description="The VLAN identifier that the interface created by this connection should be assigned. The valid range is from 0 to 4094, without the reserved id 4095." />
     <property name="ingress-priority-map" name_upper="INGRESS_PRIORITY_MAP" type="array of string" default="[]" description="For incoming packets, a list of mappings from 802.1p priorities to Linux SKB priorities.  The mapping is given in the format &quot;from:to&quot; where both &quot;from&quot; and &quot;to&quot; are unsigned integers, ie &quot;7:3&quot;." />
     <property name="interface-name" name_upper="INTERFACE_NAME" type="string" description="Deprecated in favor of connection.interface-name, but can be used for backward-compatibility with older daemons, to set the vlan's interface name." />
-    <property name="name" name_upper="NAME" type="string" default="vlan" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="parent" name_upper="PARENT" type="string" description="If given, specifies the parent interface name or parent connection UUID from which this VLAN interface should be created.  If this property is not specified, the connection must contain an &quot;802-3-ethernet&quot; setting with a &quot;mac-address&quot; property." />
   </setting>
   <setting name="vpn" description="VPN Settings" name_upper="VPN" >
     <property name="data" name_upper="DATA" type="dict of string to string" default="{}" description="Dictionary of key/value pairs of VPN plugin specific data.  Both keys and values must be strings." />
-    <property name="name" name_upper="NAME" type="string" default="vpn" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="persistent" name_upper="PERSISTENT" type="boolean" default="FALSE" description="If the VPN service supports persistence, and this property is TRUE, the VPN will attempt to stay connected across link changes and outages, until explicitly disconnected." />
     <property name="secrets" name_upper="SECRETS" type="dict of string to string" default="{}" description="Dictionary of key/value pairs of VPN plugin specific secrets like passwords or private keys.  Both keys and values must be strings." />
     <property name="service-type" name_upper="SERVICE_TYPE" type="string" description="D-Bus service name of the VPN plugin that this setting uses to connect to its network.  i.e. org.freedesktop.NetworkManager.vpnc for the vpnc plugin." />
@@ -405,7 +386,6 @@
     <property name="learning" name_upper="LEARNING" type="boolean" default="TRUE" description="Specifies whether unknown source link layer addresses and IP addresses are entered into the VXLAN device forwarding database." />
     <property name="limit" name_upper="LIMIT" type="uint32" default="0" description="Specifies the maximum number of FDB entries. A value of zero means that the kernel will store unlimited entries." />
     <property name="local" name_upper="LOCAL" type="string" description="If given, specifies the source IP address to use in outgoing packets." />
-    <property name="name" name_upper="NAME" type="string" default="vxlan" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="parent" name_upper="PARENT" type="string" description="If given, specifies the parent interface name or parent connection UUID." />
     <property name="proxy" name_upper="PROXY" type="boolean" default="FALSE" description="Specifies whether ARP proxy is turned on." />
     <property name="remote" name_upper="REMOTE" type="string" description="Specifies the unicast destination IP address to use in outgoing packets when the destination link layer address is not known in the VXLAN device forwarding database, or the multicast IP address to join." />
@@ -417,7 +397,6 @@
   </setting>
   <setting name="wimax" description="WiMax Settings" name_upper="WIMAX" >
     <property name="mac-address" name_upper="MAC_ADDRESS" type="byte array" description="If specified, this connection will only apply to the WiMAX device whose MAC address matches. This property does not change the MAC address of the device (known as MAC spoofing). Deprecated: 1" />
-    <property name="name" name_upper="NAME" type="string" default="wimax" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="network-name" name_upper="NETWORK_NAME" type="string" description="Network Service Provider (NSP) name of the WiMAX network this connection should use. Deprecated: 1" />
   </setting>
   <setting name="802-3-ethernet" description="Wired Ethernet Settings" name_upper="WIRED" >
@@ -429,7 +408,6 @@
     <property name="mac-address" name_upper="MAC_ADDRESS" type="byte array" description="If specified, this connection will only apply to the Ethernet device whose permanent MAC address matches. This property does not change the MAC address of the device (i.e. MAC spoofing)." />
     <property name="mac-address-blacklist" name_upper="MAC_ADDRESS_BLACKLIST" type="array of string" default="[]" description="If specified, this connection will never apply to the Ethernet device whose permanent MAC address matches an address in the list.  Each MAC address is in the standard hex-digits-and-colons notation (00:11:22:33:44:55)." />
     <property name="mtu" name_upper="MTU" type="uint32" default="0" description="If non-zero, only transmit packets of the specified size or smaller, breaking larger packets up into multiple Ethernet frames." />
-    <property name="name" name_upper="NAME" type="string" default="802-3-ethernet" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="port" name_upper="PORT" type="string" description="Specific port type to use if the device supports multiple attachment methods.  One of &quot;tp&quot; (Twisted Pair), &quot;aui&quot; (Attachment Unit Interface), &quot;bnc&quot; (Thin Ethernet) or &quot;mii&quot; (Media Independent Interface). If the device supports only one port type, this setting is ignored." />
     <property name="s390-nettype" name_upper="S390_NETTYPE" type="string" description="s390 network device type; one of &quot;qeth&quot;, &quot;lcs&quot;, or &quot;ctc&quot;, representing the different types of virtual network devices available on s390 systems." />
     <property name="s390-options" name_upper="S390_OPTIONS" type="dict of string to string" default="{}" description="Dictionary of key/value pairs of s390-specific device options.  Both keys and values must be strings.  Allowed keys include &quot;portno&quot;, &quot;layer2&quot;, &quot;portname&quot;, &quot;protocol&quot;, among others.  Key names must contain only alphanumeric characters (ie, [a-zA-Z0-9])." />
@@ -451,7 +429,6 @@
     <property name="mac-address-randomization" name_upper="MAC_ADDRESS_RANDOMIZATION" type="uint32" default="0" description="One of NM_SETTING_MAC_RANDOMIZATION_DEFAULT (0) (never randomize unless the user has set a global default to randomize and the supplicant supports randomization),  NM_SETTING_MAC_RANDOMIZATION_NEVER (1) (never randomize the MAC address), or NM_SETTING_MAC_RANDOMIZATION_ALWAYS (2) (always randomize the MAC address). This property is deprecated for 'cloned-mac-address'. Deprecated: 1" />
     <property name="mode" name_upper="MODE" type="string" description="Wi-Fi network mode; one of &quot;infrastructure&quot;, &quot;adhoc&quot; or &quot;ap&quot;.  If blank, infrastructure is assumed." />
     <property name="mtu" name_upper="MTU" type="uint32" default="0" description="If non-zero, only transmit packets of the specified size or smaller, breaking larger packets up into multiple Ethernet frames." />
-    <property name="name" name_upper="NAME" type="string" default="802-11-wireless" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="powersave" name_upper="POWERSAVE" type="uint32" default="0" description="One of NM_SETTING_WIRELESS_POWERSAVE_DISABLE (2) (disable Wi-Fi power saving), NM_SETTING_WIRELESS_POWERSAVE_ENABLE (3) (enable Wi-Fi power saving), NM_SETTING_WIRELESS_POWERSAVE_IGNORE (1) (don't touch currently configure setting) or NM_SETTING_WIRELESS_POWERSAVE_DEFAULT (0) (use the globally configured value). All other values are reserved." />
     <property name="rate" name_upper="RATE" type="uint32" default="0" description="If non-zero, directs the device to only use the specified bitrate for communication with the access point.  Units are in Kb/s, ie 5500 = 5.5 Mbit/s.  This property is highly driver dependent and not all devices support setting a static bitrate." />
     <property name="security" name_upper="SECURITY" type="None" description="This property is deprecated, but can be set to the value '802-11-wireless-security' when a wireless security setting is also present in the connection dictionary, for compatibility with very old NetworkManager daemons." />
@@ -468,7 +445,6 @@
     <property name="leap-password" name_upper="LEAP_PASSWORD" type="string" description="The login password for legacy LEAP connections (ie, key-mgmt = &quot;ieee8021x&quot; and auth-alg = &quot;leap&quot;)." />
     <property name="leap-password-flags" name_upper="LEAP_PASSWORD_FLAGS" type="NMSettingSecretFlags (uint32)" description="Flags indicating how to handle the &quot;leap-password&quot; property." />
     <property name="leap-username" name_upper="LEAP_USERNAME" type="string" description="The login username for legacy LEAP connections (ie, key-mgmt = &quot;ieee8021x&quot; and auth-alg = &quot;leap&quot;)." />
-    <property name="name" name_upper="NAME" type="string" default="802-11-wireless-security" description="The setting's name, which uniquely identifies the setting within the connection.  Each setting type has a name unique to that type, for example &quot;ppp&quot; or &quot;wireless&quot; or &quot;wired&quot;." />
     <property name="pairwise" name_upper="PAIRWISE" type="array of string" default="[]" description="A list of pairwise encryption algorithms which prevents connections to Wi-Fi networks that do not utilize one of the algorithms in the list. For maximum compatibility leave this property empty.  Each list element may be one of &quot;tkip&quot; or &quot;ccmp&quot;." />
     <property name="pmf" name_upper="PMF" type="int32" default="0" description="Indicates whether Protected Management Frames (802.11w) must be enabled for the connection.  One of NM_SETTING_WIRELESS_SECURITY_PMF_DEFAULT (0) (use global default value), NM_SETTING_WIRELESS_SECURITY_PMF_DISABLE (1) (disable PMF), NM_SETTING_WIRELESS_SECURITY_PMF_OPTIONAL (2) (enable PMF if the supplicant and the access point support it) or NM_SETTING_WIRELESS_SECURITY_PMF_REQUIRED (3) (enable PMF and fail if not supported).  When set to NM_SETTING_WIRELESS_SECURITY_PMF_DEFAULT (0) and no global default is set, PMF will be optionally enabled." />
     <property name="proto" name_upper="PROTO" type="array of string" default="[]" description="List of strings specifying the allowed WPA protocol versions to use. Each element may be one &quot;wpa&quot; (allow WPA) or &quot;rsn&quot; (allow WPA2/RSN).  If not specified, both WPA and RSN connections are allowed." />
@@ -483,4 +459,9 @@
     <property name="wep-tx-keyidx" name_upper="WEP_TX_KEYIDX" type="uint32" default="0" description="When static WEP is used (ie, key-mgmt = &quot;none&quot;) and a non-default WEP key index is used by the AP, put that WEP key index here.  Valid values are 0 (default key) through 3.  Note that some consumer access points (like the Linksys WRT54G) number the keys 1 - 4." />
     <property name="wps-method" name_upper="WPS_METHOD" type="uint32" default="0" description="Flags indicating which mode of WPS is to be used if any. There's little point in changing the default setting as NetworkManager will automatically determine whether it's feasible to start WPS enrollment from the Access Point capabilities. WPS can be disabled by setting this property to a value of 1." />
   </setting>
+  <setting name="wpan" description="IEEE 802.15.4 (WPAN) MAC Settings" name_upper="WPAN" >
+    <property name="mac-address" name_upper="MAC_ADDRESS" type="string" description="If specified, this connection will only apply to the IEEE 802.15.4 (WPAN) MAC layer device whose permanent MAC address matches." />
+    <property name="pan-id" name_upper="PAN_ID" type="uint32" default="65535" description="IEEE 802.15.4 Personal Area Network (PAN) identifier." />
+    <property name="short-address" name_upper="SHORT_ADDRESS" type="uint32" default="65535" description="Short IEEE 802.15.4 address to be used within a restricted environment." />
+  </setting>
 </nm-setting-docs>
diff --git a/libnm/nm-settings-ifcfg-rh-docs.xml b/libnm/nm-settings-ifcfg-rh-docs.xml
index bf041ab2..11f3115d 100644
--- a/libnm/nm-settings-ifcfg-rh-docs.xml
+++ b/libnm/nm-settings-ifcfg-rh-docs.xml
@@ -3,7 +3,9 @@
 ]>
 
 <nm-ifcfg-rh-docs>
-  <setting name="802-1x">
+  <setting name="6lowpan">
+</setting>
+<setting name="802-1x">
 <property name="eap" variable="IEEE_8021X_EAP_METHODS(+)" format="" values="&quot;LEAP&quot;, &quot;PWD&quot;, &quot;TLS&quot;, &quot;PEAP&quot;, &quot;TTLS&quot;, &quot;FAST&quot;" default="" example="IEEE_8021X_EAP_METHODS=PEAP" description="EAP method for 802.1X authentication."/>
 <property name="identity" variable="IEEE_8021X_IDENTITY(+)" format="" values="" default="" example="IEEE_8021X_IDENTITY=itsme" description="Identity for EAP authentication methods."/>
 <property name="anonymous-identity" variable="IEEE_8021X_ANON_IDENTITY(+)" format="" values="" default="" example="" description="Anonymous identity for EAP authentication methods."/>
@@ -89,6 +91,8 @@ specified users is logged into an active session."/>
 higher numbers are preferred when selecting profiles for automatic activation."/>
 <property name="autoconnect-retries" variable="AUTOCONNECT_RETRIES(+)" format="" values="-1 (use global default), 0 (forever) or a positive value" default="" example="AUTOCONNECT_RETRIES=1" description="The number of times a connection should be autoactivated
 before giving up and switching to the next one."/>
+<property name="multi-connect" variable="MULTI_CONNECT(+)" format="" values="" default="" example="ZONE=3" description="whether the profile can be active on multiple devices at a given
+moment. The values are numbers corresponding to #NMConnectionMultiConnect enum."/>
 <property name="zone" variable="ZONE(+)" format="" values="" default="" example="ZONE=Work" description="Trust level of this connection. The string is usually used
 for a firewall."/>
 <property name="master" variable="MASTER, MASTER_UUID, TEAM_MASTER, TEAM_MASTER_UUID, BRIDGE, BRIDGE_UUID" format="" values="" default="" example="" description="Reference to master connection. The variable used depends on
@@ -109,7 +113,8 @@ pinging the gateway and waiting for the specified timeout (in seconds)."/>
 <property name="metered" variable="CONNECTION_METERED(+)" format="" values="yes,no,unknown" default="" example="CONNECTION_METERED=yes" description="Whether the device is metered"/>
 <property name="lldp" variable="LLDP(+)" format="" values="boolean value or &apos;rx&apos;" default="missing variable means global default" example="LLDP=no" description="whether LLDP is enabled for the connection"/>
 <property name="auth-retries" variable="AUTH_RETRIES(+)" format="" values="" default="0" example="" description="Number of retries for authentication."/>
-<property name="mdns" variable="CONNECTION_MDNS(+)" format="" values="yes,no,resolve" default="missing variable means global default" example="CONNECTION_MDNS=yes" description="Whether or not mDNS is enabled for the connection"/>
+<property name="mdns" variable="MDNS(+)" format="" values="yes,no,resolve" default="missing variable means global default" example="MDNS=yes" description="Whether or not mDNS is enabled for the connection"/>
+<property name="llmnr" variable="LLMNR(+)" format="" values="yes,no,resolve" default="missing variable means global default" example="LLMNR=yes" description="Whether or not LLMNR is enabled for the connection"/>
 </setting>
 <setting name="dcb">
 <property name="app-fcoe-flags" variable="DCB_APP_FCOE_ENABLE, DCB_APP_FCOE_ADVERTISE, DCB_APP_FCOE_WILLING" format="" values="" default="no" example="DCB_APP_FCOE_ENABLE=yes DCB_APP_FCOE_ADVERTISE=yes" description="FCOE flags."/>
@@ -134,6 +139,8 @@ The sum of the numbers must be 100."/>
 </setting>
 <setting name="dummy">
 </setting>
+<setting name="ethtool">
+</setting>
 <setting name="generic">
 </setting>
 <setting name="gsm">
@@ -181,7 +188,7 @@ If zero, the default value will be used (50 for VPNs, 100 for other connections)
 A negative value prevents DNS from other connections with greater values to be used."/>
 <property name="dhcp-client-id" variable="DHCP_CLIENT_ID(+)" format="" values="" default="" example="DHCP_CLIENT_ID=ax-srv-1; DHCP_CLIENT_ID=01:44:44:44:44:44:44" description="A string sent to the DHCP server to identify the local machine.
 A binary value can be specified using hex notation (&apos;aa:bb:cc&apos;)."/>
-<property name="dad-timeout" variable="ACD_TIMEOUT, ARPING_WAIT" format="" values="" default="missing variable means global default (config override or zero)" example="ACD_TIMEOUT=2000 or ARPING_WAIT=2" description="Timeout (in milliseconds for ACD_TIMEOUT or in seconds
+<property name="dad-timeout" variable="ACD_TIMEOUT(+), ARPING_WAIT" format="" values="" default="missing variable means global default (config override or zero)" example="ACD_TIMEOUT=2000 or ARPING_WAIT=2" description="Timeout (in milliseconds for ACD_TIMEOUT or in seconds
 for ARPING_WAIT) for address conflict detection before configuring
 IPv4 addresses. 0 turns off the ACD completely, -1 means default value."/>
 <property name="dhcp-timeout" variable="IPV4_DHCP_TIMEOUT(+)" format="" values="" default="" example="IPV4_DHCP_TIMEOUT=10" description="A timeout after which the DHCP transaction fails in case of no response."/>
@@ -193,7 +200,7 @@ DHCP_FQDN are specified only the latter is used."/>
 ignore ~ IPV6INIT=no; auto ~ IPV6_AUTOCONF=yes; dhcp ~ IPV6_AUTOCONF=no and DHCPV6C=yes"/>
 <property name="dns" variable="DNS1, DNS2, ..." format="string" values="" default="" example="" description="List of DNS servers. NetworkManager uses the variables both
 for IPv4 and IPv6."/>
-<property name="dns-search" variable="IPV6_DOMAIN" format="string (space-separated domains)" values="" default="" example="" description="List of DNS search domains."/>
+<property name="dns-search" variable="IPV6_DOMAIN(+)" format="string (space-separated domains)" values="" default="" example="" description="List of DNS search domains."/>
 <property name="addresses" variable="IPV6ADDR, IPV6ADDR_SECONDARIES" format="" values="" default="" example="IPV6ADDR=ab12:9876::1
 IPV6ADDR_SECONDARIES=&quot;ab12:9876::2 ab12:9876::3&quot;" description="List of static IP addresses."/>
 <property name="gateway" variable="IPV6_DEFAULTGW" format="" values="" default="" example="IPV6_DEFAULTGW=abbe::1" description="Gateway IP address."/>
@@ -226,6 +233,8 @@ each octet is separated by a colon is also accepted."/>
 </setting>
 <setting name="macvlan">
 </setting>
+<setting name="match">
+</setting>
 <setting name="802-11-olpc-mesh">
 </setting>
 <setting name="ovs-bridge">
@@ -249,9 +258,14 @@ proxy configuration, or set the PAC file via PAC_URL or PAC_SCRIPT."/>
 </setting>
 <setting name="serial">
 </setting>
+<setting name="sriov">
+<property name="total-vfs" variable="SRIOV_TOTAL_VFS(+)" format="" values="" default="" example="SRIOV_TOTAL_VFS=16" description="The total number of virtual functions to create"/>
+<property name="vfs" variable="SRIOV_VF1(+), SRIOV_VF2(+), ..." format="" values="" default="" example="SRIOV_VF10=&quot;mac=00:11:22:33:44:55&quot;, ..." description="SR-IOV virtual function descriptors"/>
+<property name="autoprobe-drivers" variable="SRIOV_AUTOPROBE_DRIVERS(+)" format="" values="" default="missing variable means global default" example="SRIOV_AUTOPROBE_DRIVERS=0,1" description="Whether to autoprobe virtual functions by a compatible driver"/>
+</setting>
 <setting name="tc">
-<property name="qdiscs" variable="QDISC1, QDISC2, ..." format="" values="" default="" example="QDISC1=ingress, QDISC2=&quot;root handle 1234: fq_codel&quot;" description="Queueing disciplines"/>
-<property name="qdiscs" variable="FILTER1, FILTER2, ..." format="" values="" default="" example="FILTER1=&quot;parent ffff: matchall action simple sdata Input&quot;, ..." description="Traffic filters"/>
+<property name="qdiscs" variable="QDISC1(+), QDISC2(+), ..." format="" values="" default="" example="QDISC1=ingress, QDISC2=&quot;root handle 1234: fq_codel&quot;" description="Queueing disciplines"/>
+<property name="qdiscs" variable="FILTER1(+), FILTER2(+), ..." format="" values="" default="" example="FILTER1=&quot;parent ffff: matchall action simple sdata Input&quot;, ..." description="Traffic filters"/>
 </setting>
 <setting name="team-port">
 <property name="config" variable="TEAM_PORT_CONFIG" format="" values="" default="" example="" description="Team port configuration in JSON. See man teamd.conf for details."/>
@@ -370,4 +384,6 @@ is listed."/>
 <property name="mac-address-randomization" variable="MAC_ADDRESS_RANDOMIZATION(+)" format="" values="default, never, always" default="" example="MAC_ADDRESS_RANDOMIZATION=always" description="Enables or disables Wi-Fi MAC address randomization."/>
 <property name="security" variable="(none)" format="" values="" default="" example="" description="This property is deprecated and not handled by ifcfg-rh-plugin."/>
 </setting>
+<setting name="wpan">
+</setting>
 </nm-ifcfg-rh-docs>
\ No newline at end of file
diff --git a/libnm/nm-settings-keyfile-docs.xml b/libnm/nm-settings-keyfile-docs.xml
index 561b0588..09b119a2 100644
--- a/libnm/nm-settings-keyfile-docs.xml
+++ b/libnm/nm-settings-keyfile-docs.xml
@@ -3,7 +3,9 @@
 ]>
 
 <nm-keyfile-docs>
-  <setting name="802-1x">
+  <setting name="6lowpan">
+</setting>
+<setting name="802-1x">
 </setting>
 <setting name="adsl">
 </setting>
@@ -26,6 +28,8 @@ or semicolon separated list of 6 decimal bytes (obsolete)"/>
 </setting>
 <setting name="dummy">
 </setting>
+<setting name="ethtool">
+</setting>
 <setting name="generic">
 </setting>
 <setting name="gsm">
@@ -53,6 +57,8 @@ route2=7.7.0.0/16" description="List of IP routes."/>
 </setting>
 <setting name="macvlan">
 </setting>
+<setting name="match">
+</setting>
 <setting name="802-11-olpc-mesh">
 </setting>
 <setting name="ovs-bridge">
@@ -74,6 +80,8 @@ route2=7.7.0.0/16" description="List of IP routes."/>
 versions of NetworkManager stored this as an integer: 69 (&apos;E&apos;) for even,
 111 (&apos;o&apos;) for odd, or 110 (&apos;n&apos;) for none."/>
 </setting>
+<setting name="sriov">
+</setting>
 <setting name="tc">
 </setting>
 <setting name="team-port">
@@ -117,4 +125,8 @@ under [vpn-secrets] section."/>
 (e.g. 0;34;104;18;121;178)."/>
 <property name="mac-address-blacklist" variable="mac-address-blacklist" format="list of MACs (separated with semicolons)" values="" default="" example="mac-address-blacklist= 00:22:68:12:79:A6;00:22:68:12:79:78" description="MAC address blacklist."/>
 </setting>
+<setting name="wpan">
+<property name="mac-address" variable="mac-address" format="usual hex-digits-and-colons notation" values="" default="" example="" description="MAC address in hex-digits-and-colons notation
+(e.g. 76:d8:9b:87:66:60:84:ee)."/>
+</setting>
 </nm-keyfile-docs>
\ No newline at end of file
diff --git a/libnm/nm-types.h b/libnm/nm-types.h
index dff8cb90..bb77e642 100644
--- a/libnm/nm-types.h
+++ b/libnm/nm-types.h
@@ -15,7 +15,7 @@
  * with this program; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
- * Copyright 2014 Red Hat, Inc.
+ * Copyright 2014 - 2018 Red Hat, Inc.
  */
 
 #ifndef __NM_TYPES_H__
@@ -31,6 +31,7 @@ typedef struct _NMActiveConnection   NMActiveConnection;
 typedef struct _NMCheckpoint         NMCheckpoint;
 typedef struct _NMClient             NMClient;
 typedef struct _NMDevice             NMDevice;
+typedef struct _NMDevice6Lowpan      NMDevice6Lowpan;
 typedef struct _NMDeviceAdsl         NMDeviceAdsl;
 typedef struct _NMDeviceBond         NMDeviceBond;
 typedef struct _NMDeviceBridge       NMDeviceBridge;
@@ -54,6 +55,8 @@ typedef struct _NMDeviceVlan         NMDeviceVlan;
 typedef struct _NMDeviceVxlan        NMDeviceVxlan;
 typedef struct _NMDeviceWifi         NMDeviceWifi;
 typedef struct _NMDeviceWimax        NMDeviceWimax;
+typedef struct _NMDeviceWireGuard    NMDeviceWireGuard;
+typedef struct _NMDeviceWpan         NMDeviceWpan;
 typedef struct _NMDhcpConfig         NMDhcpConfig;
 typedef struct _NMIPConfig           NMIPConfig;
 typedef struct _NMObject             NMObject;
diff --git a/libnm/nm-vpn-service-plugin.c b/libnm/nm-vpn-service-plugin.c
index da4c2446..2213824e 100644
--- a/libnm/nm-vpn-service-plugin.c
+++ b/libnm/nm-vpn-service-plugin.c
@@ -27,6 +27,7 @@
 #include <signal.h>
 #include <stdlib.h>
 
+#include "nm-utils/nm-secret-utils.h"
 #include "nm-enum-types.h"
 #include "nm-utils.h"
 #include "nm-connection.h"
@@ -385,6 +386,10 @@ nm_vpn_service_plugin_set_config (NMVpnServicePlugin *plugin,
 	g_signal_emit (plugin, signals[CONFIG], 0, config);
 	if (priv->dbus_vpn_service_plugin)
 		nmdbus_vpn_plugin_emit_config (priv->dbus_vpn_service_plugin, config);
+
+	if (   priv->has_ip4 == priv->got_ip4
+	    && priv->has_ip6 == priv->got_ip6)
+		nm_vpn_service_plugin_set_state (plugin, NM_VPN_SERVICE_STATE_STARTED);
 }
 
 void
@@ -478,10 +483,10 @@ connect_timer_start (NMVpnServicePlugin *plugin)
 
 static void
 peer_vanished (GDBusConnection *connection,
-               const gchar *sender_name,
-               const gchar *object_path,
-               const gchar *interface_name,
-               const gchar *signal_name,
+               const char *sender_name,
+               const char *object_path,
+               const char *interface_name,
+               const char *signal_name,
                GVariant *parameters,
                gpointer user_data)
 {
@@ -493,7 +498,7 @@ watch_peer (NMVpnServicePlugin *plugin,
             GDBusMethodInvocation *context)
 {
 	GDBusConnection *connection = g_dbus_method_invocation_get_connection (context);
-	const gchar *peer = g_dbus_message_get_sender (g_dbus_method_invocation_get_message (context));
+	const char *peer = g_dbus_message_get_sender (g_dbus_method_invocation_get_message (context));
 
 	return g_dbus_connection_signal_subscribe (connection,
 	                                           "org.freedesktop.DBus",
@@ -784,7 +789,7 @@ nm_vpn_service_plugin_read_vpn_details (int fd,
 	gboolean success = FALSE;
 	char *key = NULL, *val = NULL;
 	nm_auto_free_gstring GString *line = NULL;
-	gchar c;
+	char c;
 
 	if (out_data)
 		g_return_val_if_fail (*out_data == NULL, FALSE);
diff --git a/libnm/tests/meson.build b/libnm/tests/meson.build
index e2b88273..27fafb77 100644
--- a/libnm/tests/meson.build
+++ b/libnm/tests/meson.build
@@ -8,7 +8,7 @@ test_units = [
 cflags = [
   '-DNETWORKMANAGER_COMPILATION_TEST',
   '-DNETWORKMANAGER_COMPILATION=NM_NETWORKMANAGER_COMPILATION_LIBNM',
-] + nm_build_cflags
+]
 
 foreach test_unit: test_units
   exe = executable(
diff --git a/libnm/tests/test-secret-agent.c b/libnm/tests/test-secret-agent.c
index 746a9e64..53110be6 100644
--- a/libnm/tests/test-secret-agent.c
+++ b/libnm/tests/test-secret-agent.c
@@ -111,8 +111,8 @@ done:
 
 static void
 test_secret_agent_cancel_get_secrets (NMSecretAgentOld *agent,
-                                      const gchar      *connection_path,
-                                      const gchar      *setting_name)
+                                      const char       *connection_path,
+                                      const char       *setting_name)
 {
 	g_assert_not_reached ();
 }
@@ -120,7 +120,7 @@ test_secret_agent_cancel_get_secrets (NMSecretAgentOld *agent,
 static void
 test_secret_agent_save_secrets (NMSecretAgentOld                *agent,
                                 NMConnection                    *connection,
-                                const gchar                     *connection_path,
+                                const char                      *connection_path,
                                 NMSecretAgentOldSaveSecretsFunc  callback,
                                 gpointer                         callback_data)
 {
@@ -130,7 +130,7 @@ test_secret_agent_save_secrets (NMSecretAgentOld                *agent,
 static void
 test_secret_agent_delete_secrets (NMSecretAgentOld                  *agent,
                                   NMConnection                      *connection,
-                                  const gchar                       *connection_path,
+                                  const char                        *connection_path,
                                   NMSecretAgentOldDeleteSecretsFunc  callback,
                                   gpointer                           callback_data)
 {