summary refs log tree commit diff
path: root/clients/cli/settings.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2016-03-01 16:55:22 +0100
committerMichael Biebl <biebl@debian.org>2016-03-01 16:55:22 +0100
commitc2de0d98ba39e0a1a970d066fd19be786092f376 (patch)
tree3838363c06a6019db6cf1f882ea34ebded63c38b /clients/cli/settings.c
parent494f296a3baab08522617b24b1f126d8f9a17502 (diff)
Imported Upstream version 1.1.91 upstream/1.1.91
Diffstat (limited to 'clients/cli/settings.c')
-rw-r--r--clients/cli/settings.c141
1 files changed, 79 insertions, 62 deletions
diff --git a/clients/cli/settings.c b/clients/cli/settings.c
index 9f95dfe2..9e0cf08e 100644
--- a/clients/cli/settings.c
+++ b/clients/cli/settings.c
@@ -17,17 +17,15 @@
  * Copyright 2010 - 2015 Red Hat, Inc.
  */
 
-#include "config.h"
+#include "nm-default.h"
+
+#include "settings.h"
 
 #include <stdlib.h>
 #include <arpa/inet.h>
 
-#include "nm-default.h"
 #include "utils.h"
 #include "common.h"
-#include "settings.h"
-#include "nm-macros-internal.h"
-#include "gsystem-local-alloc.h"
 
 /* Forward declarations */
 static char *wep_key_type_to_string (NMWepKeyType type);
@@ -80,7 +78,6 @@ NmcOutputField nmc_fields_setting_connection[] = {
                                               NM_SETTING_CONNECTION_GATEWAY_PING_TIMEOUT","\
                                               NM_SETTING_CONNECTION_METERED","\
                                               NM_SETTING_CONNECTION_LLDP
-#define NMC_FIELDS_SETTING_CONNECTION_COMMON  NMC_FIELDS_SETTING_CONNECTION_ALL
 
 /* Available fields for NM_SETTING_WIRED_SETTING_NAME */
 NmcOutputField nmc_fields_setting_wired[] = {
@@ -114,7 +111,6 @@ NmcOutputField nmc_fields_setting_wired[] = {
                                          NM_SETTING_WIRED_S390_OPTIONS","\
                                          NM_SETTING_WIRED_WAKE_ON_LAN","\
                                          NM_SETTING_WIRED_WAKE_ON_LAN_PASSWORD
-#define NMC_FIELDS_SETTING_WIRED_COMMON  NMC_FIELDS_SETTING_WIRED_ALL
 
 /* Available fields for NM_SETTING_802_1X_SETTING_NAME */
 NmcOutputField nmc_fields_setting_8021X[] = {
@@ -186,7 +182,6 @@ NmcOutputField nmc_fields_setting_8021X[] = {
                                           NM_SETTING_802_1X_PIN","\
                                           NM_SETTING_802_1X_PIN_FLAGS","\
                                           NM_SETTING_802_1X_SYSTEM_CA_CERTS
-#define NMC_FIELDS_SETTING_802_1X_COMMON  NMC_FIELDS_SETTING_802_1X_ALL
 
 /* Available fields for NM_SETTING_WIRELESS_SETTING_NAME */
 NmcOutputField nmc_fields_setting_wireless[] = {
@@ -224,7 +219,6 @@ NmcOutputField nmc_fields_setting_wireless[] = {
                                             NM_SETTING_WIRELESS_SEEN_BSSIDS","\
                                             NM_SETTING_WIRELESS_HIDDEN"," \
                                             NM_SETTING_WIRELESS_POWERSAVE
-#define NMC_FIELDS_SETTING_WIRELESS_COMMON  NMC_FIELDS_SETTING_WIRELESS_ALL
 
 /* Available fields for NM_SETTING_WIRELESS_SECURITY_SETTING_NAME */
 NmcOutputField nmc_fields_setting_wireless_security[] = {
@@ -266,7 +260,6 @@ NmcOutputField nmc_fields_setting_wireless_security[] = {
                                                      NM_SETTING_WIRELESS_SECURITY_PSK_FLAGS","\
                                                      NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD","\
                                                      NM_SETTING_WIRELESS_SECURITY_LEAP_PASSWORD_FLAGS
-#define NMC_FIELDS_SETTING_WIRELESS_SECURITY_COMMON  NMC_FIELDS_SETTING_WIRELESS_SECURITY_ALL
 
 /* Available fields for NM_SETTING_IP4_CONFIG_SETTING_NAME */
 NmcOutputField nmc_fields_setting_ip4_config[] = {
@@ -282,12 +275,13 @@ NmcOutputField nmc_fields_setting_ip4_config[] = {
 	SETTING_FIELD (NM_SETTING_IP_CONFIG_IGNORE_AUTO_ROUTES),  /* 9 */
 	SETTING_FIELD (NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS),     /* 10 */
 	SETTING_FIELD (NM_SETTING_IP4_CONFIG_DHCP_CLIENT_ID),     /* 11 */
-	SETTING_FIELD (NM_SETTING_IP4_CONFIG_DHCP_TIMEOUT),       /* 12 */
+	SETTING_FIELD (NM_SETTING_IP_CONFIG_DHCP_TIMEOUT),        /* 12 */
 	SETTING_FIELD (NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME),  /* 13 */
 	SETTING_FIELD (NM_SETTING_IP_CONFIG_DHCP_HOSTNAME),       /* 14 */
 	SETTING_FIELD (NM_SETTING_IP4_CONFIG_DHCP_FQDN),          /* 15 */
 	SETTING_FIELD (NM_SETTING_IP_CONFIG_NEVER_DEFAULT),       /* 16 */
 	SETTING_FIELD (NM_SETTING_IP_CONFIG_MAY_FAIL),            /* 17 */
+	SETTING_FIELD (NM_SETTING_IP_CONFIG_DAD_TIMEOUT),         /* 18 */
 	{NULL, NULL, 0, NULL, FALSE, FALSE, 0}
 };
 #define NMC_FIELDS_SETTING_IP4_CONFIG_ALL     "name"","\
@@ -302,13 +296,13 @@ NmcOutputField nmc_fields_setting_ip4_config[] = {
                                               NM_SETTING_IP_CONFIG_IGNORE_AUTO_ROUTES","\
                                               NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS","\
                                               NM_SETTING_IP4_CONFIG_DHCP_CLIENT_ID","\
-                                              NM_SETTING_IP4_CONFIG_DHCP_TIMEOUT","\
+                                              NM_SETTING_IP_CONFIG_DHCP_TIMEOUT","\
                                               NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME","\
                                               NM_SETTING_IP_CONFIG_DHCP_HOSTNAME","\
                                               NM_SETTING_IP4_CONFIG_DHCP_FQDN","\
                                               NM_SETTING_IP_CONFIG_NEVER_DEFAULT","\
-                                              NM_SETTING_IP_CONFIG_MAY_FAIL
-#define NMC_FIELDS_SETTING_IP4_CONFIG_COMMON  NMC_FIELDS_SETTING_IP4_CONFIG_ALL
+                                              NM_SETTING_IP_CONFIG_MAY_FAIL","\
+                                              NM_SETTING_IP_CONFIG_DAD_TIMEOUT
 
 /* Available fields for NM_SETTING_IP6_CONFIG_SETTING_NAME */
 NmcOutputField nmc_fields_setting_ip6_config[] = {
@@ -348,7 +342,6 @@ NmcOutputField nmc_fields_setting_ip6_config[] = {
                                               NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE","\
                                               NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME","\
                                               NM_SETTING_IP_CONFIG_DHCP_HOSTNAME
-#define NMC_FIELDS_SETTING_IP6_CONFIG_COMMON  NMC_FIELDS_SETTING_IP4_CONFIG_ALL
 
 /* Available fields for NM_SETTING_SERIAL_SETTING_NAME */
 NmcOutputField nmc_fields_setting_serial[] = {
@@ -366,7 +359,6 @@ NmcOutputField nmc_fields_setting_serial[] = {
                                           NM_SETTING_SERIAL_PARITY","\
                                           NM_SETTING_SERIAL_STOPBITS","\
                                           NM_SETTING_SERIAL_SEND_DELAY
-#define NMC_FIELDS_SETTING_SERIAL_COMMON  NMC_FIELDS_SETTING_SERIAL_ALL
 
 /* Available fields for NM_SETTING_PPP_SETTING_NAME */
 NmcOutputField nmc_fields_setting_ppp[] = {
@@ -410,7 +402,6 @@ NmcOutputField nmc_fields_setting_ppp[] = {
                                        NM_SETTING_PPP_MTU","\
                                        NM_SETTING_PPP_LCP_ECHO_FAILURE","\
                                        NM_SETTING_PPP_LCP_ECHO_INTERVAL
-#define NMC_FIELDS_SETTING_PPP_COMMON  NMC_FIELDS_SETTING_PPP_ALL
 
 /* Available fields for NM_SETTING_PPPOE_SETTING_NAME */
 NmcOutputField nmc_fields_setting_pppoe[] = {
@@ -426,7 +417,6 @@ NmcOutputField nmc_fields_setting_pppoe[] = {
                                          NM_SETTING_PPPOE_USERNAME","\
                                          NM_SETTING_PPPOE_PASSWORD","\
                                          NM_SETTING_PPPOE_PASSWORD_FLAGS
-#define NMC_FIELDS_SETTING_PPPOE_COMMON  NMC_FIELDS_SETTING_PPPOE_ALL
 
 /* Available fields for NM_SETTING_ADSL_SETTING_NAME */
 NmcOutputField nmc_fields_setting_adsl[] = {
@@ -448,7 +438,6 @@ NmcOutputField nmc_fields_setting_adsl[] = {
                                         NM_SETTING_ADSL_ENCAPSULATION","\
                                         NM_SETTING_ADSL_VPI","\
                                         NM_SETTING_ADSL_VCI
-#define NMC_FIELDS_SETTING_ADSL_COMMON  NMC_FIELDS_SETTING_ADSL_ALL
 
 /* Available fields for NM_SETTING_GSM_SETTING_NAME */
 NmcOutputField nmc_fields_setting_gsm[] = {
@@ -480,7 +469,6 @@ NmcOutputField nmc_fields_setting_gsm[] = {
                                        NM_SETTING_GSM_DEVICE_ID","\
                                        NM_SETTING_GSM_SIM_ID","\
                                        NM_SETTING_GSM_SIM_OPERATOR_ID
-#define NMC_FIELDS_SETTING_GSM_COMMON  NMC_FIELDS_SETTING_GSM_ALL
 
 /* Available fields for NM_SETTING_CDMA_SETTING_NAME */
 NmcOutputField nmc_fields_setting_cdma[] = {
@@ -496,7 +484,6 @@ NmcOutputField nmc_fields_setting_cdma[] = {
                                         NM_SETTING_CDMA_USERNAME","\
                                         NM_SETTING_CDMA_PASSWORD","\
                                         NM_SETTING_CDMA_PASSWORD_FLAGS
-#define NMC_FIELDS_SETTING_CDMA_COMMON  NMC_FIELDS_SETTING_CDMA_ALL
 
 /* Available fields for NM_SETTING_BLUETOOTH_SETTING_NAME */
 NmcOutputField nmc_fields_setting_bluetooth[] = {
@@ -508,7 +495,6 @@ NmcOutputField nmc_fields_setting_bluetooth[] = {
 #define NMC_FIELDS_SETTING_BLUETOOTH_ALL     "name"","\
                                              NM_SETTING_BLUETOOTH_BDADDR","\
                                              NM_SETTING_BLUETOOTH_TYPE
-#define NMC_FIELDS_SETTING_BLUETOOTH_COMMON  NMC_FIELDS_SETTING_BLUETOOTH_ALL
 
 /* Available fields for NM_SETTING_OLPC_MESH_SETTING_NAME */
 NmcOutputField nmc_fields_setting_olpc_mesh[] = {
@@ -522,7 +508,6 @@ NmcOutputField nmc_fields_setting_olpc_mesh[] = {
                                              NM_SETTING_OLPC_MESH_SSID","\
                                              NM_SETTING_OLPC_MESH_CHANNEL","\
                                              NM_SETTING_OLPC_MESH_DHCP_ANYCAST_ADDRESS
-#define NMC_FIELDS_SETTING_OLPC_MESH_COMMON  NMC_FIELDS_SETTING_OLPC_MESH_ALL
 
 /* Available fields for NM_SETTING_VPN_SETTING_NAME */
 NmcOutputField nmc_fields_setting_vpn[] = {
@@ -542,7 +527,6 @@ NmcOutputField nmc_fields_setting_vpn[] = {
                                        NM_SETTING_VPN_SECRETS","\
                                        NM_SETTING_VPN_PERSISTENT","\
                                        NM_SETTING_VPN_TIMEOUT
-#define NMC_FIELDS_SETTING_VPN_COMMON  NMC_FIELDS_SETTING_VPN_ALL
 
 /* Available fields for NM_SETTING_WIMAX_SETTING_NAME */
 NmcOutputField nmc_fields_setting_wimax[] = {
@@ -554,7 +538,6 @@ NmcOutputField nmc_fields_setting_wimax[] = {
 #define NMC_FIELDS_SETTING_WIMAX_ALL     "name"","\
                                          NM_SETTING_WIMAX_MAC_ADDRESS","\
                                          NM_SETTING_WIMAX_NETWORK_NAME
-#define NMC_FIELDS_SETTING_WIMAX_COMMON  NMC_FIELDS_SETTING_WIMAX_ALL
 
 /* Available fields for NM_SETTING_INFINIBAND_SETTING_NAME */
 NmcOutputField nmc_fields_setting_infiniband[] = {
@@ -572,7 +555,6 @@ NmcOutputField nmc_fields_setting_infiniband[] = {
                                               NM_SETTING_INFINIBAND_TRANSPORT_MODE"," \
                                               NM_SETTING_INFINIBAND_P_KEY"," \
                                               NM_SETTING_INFINIBAND_PARENT
-#define NMC_FIELDS_SETTING_INFINIBAND_COMMON  NMC_FIELDS_SETTING_INFINIBAND_ALL \
 
 /* Available fields for NM_SETTING_BOND_SETTING_NAME */
 NmcOutputField nmc_fields_setting_bond[] = {
@@ -582,7 +564,6 @@ NmcOutputField nmc_fields_setting_bond[] = {
 };
 #define NMC_FIELDS_SETTING_BOND_ALL     "name"","\
                                         NM_SETTING_BOND_OPTIONS
-#define NMC_FIELDS_SETTING_BOND_COMMON  NMC_FIELDS_SETTING_BOND_ALL
 
 /* Available fields for NM_SETTING_VLAN_SETTING_NAME */
 NmcOutputField nmc_fields_setting_vlan[] = {
@@ -600,7 +581,6 @@ NmcOutputField nmc_fields_setting_vlan[] = {
                                         NM_SETTING_VLAN_FLAGS","\
                                         NM_SETTING_VLAN_INGRESS_PRIORITY_MAP","\
                                         NM_SETTING_VLAN_EGRESS_PRIORITY_MAP
-#define NMC_FIELDS_SETTING_VLAN_COMMON  NMC_FIELDS_SETTING_VLAN_ALL
 
 /* Available fields for NM_SETTING_BRIDGE_SETTING_NAME */
 NmcOutputField nmc_fields_setting_bridge[] = {
@@ -624,7 +604,6 @@ NmcOutputField nmc_fields_setting_bridge[] = {
                                          NM_SETTING_BRIDGE_MAX_AGE","\
                                          NM_SETTING_BRIDGE_AGEING_TIME","\
                                          NM_SETTING_BRIDGE_MULTICAST_SNOOPING
-#define NMC_FIELDS_SETTING_BRIDGE_COMMON NMC_FIELDS_SETTING_BRIDGE_ALL
 
 /* Available fields for NM_SETTING_BRIDGE_PORT_SETTING_NAME */
 NmcOutputField nmc_fields_setting_bridge_port[] = {
@@ -638,7 +617,6 @@ NmcOutputField nmc_fields_setting_bridge_port[] = {
                                               NM_SETTING_BRIDGE_PORT_PRIORITY","\
                                               NM_SETTING_BRIDGE_PORT_PATH_COST","\
                                               NM_SETTING_BRIDGE_PORT_HAIRPIN_MODE
-#define NMC_FIELDS_SETTING_BRIDGE_PORT_COMMON NMC_FIELDS_SETTING_BRIDGE_PORT_ALL
 
 /* Available fields for NM_SETTING_TEAM_SETTING_NAME */
 NmcOutputField nmc_fields_setting_team[] = {
@@ -648,7 +626,6 @@ NmcOutputField nmc_fields_setting_team[] = {
 };
 #define NMC_FIELDS_SETTING_TEAM_ALL     "name"","\
                                         NM_SETTING_TEAM_CONFIG
-#define NMC_FIELDS_SETTING_TEAM_COMMON  NMC_FIELDS_SETTING_TEAM_ALL
 
 /* Available fields for NM_SETTING_TEAM_PORT_SETTING_NAME */
 NmcOutputField nmc_fields_setting_team_port[] = {
@@ -658,7 +635,6 @@ NmcOutputField nmc_fields_setting_team_port[] = {
 };
 #define NMC_FIELDS_SETTING_TEAM_PORT_ALL     "name"","\
                                              NM_SETTING_TEAM_PORT_CONFIG
-#define NMC_FIELDS_SETTING_TEAM_PORT_COMMON  NMC_FIELDS_SETTING_TEAM_PORT_ALL
 
 /* Available fields for NM_SETTING_DCB_SETTING_NAME */
 NmcOutputField nmc_fields_setting_dcb[] = {
@@ -696,7 +672,6 @@ NmcOutputField nmc_fields_setting_dcb[] = {
                                        NM_SETTING_DCB_PRIORITY_BANDWIDTH","\
                                        NM_SETTING_DCB_PRIORITY_STRICT_BANDWIDTH","\
                                        NM_SETTING_DCB_PRIORITY_TRAFFIC_CLASS
-#define NMC_FIELDS_SETTING_DCB_COMMON  NMC_FIELDS_SETTING_DCB_ALL
 
 /* Available fields for NM_SETTING_TUN_SETTING_NAME */
 NmcOutputField nmc_fields_setting_tun[] = {
@@ -716,7 +691,6 @@ NmcOutputField nmc_fields_setting_tun[] = {
                                        NM_SETTING_TUN_PI","\
                                        NM_SETTING_TUN_VNET_HDR","\
                                        NM_SETTING_TUN_MULTI_QUEUE
-#define NMC_FIELDS_SETTING_TUN_COMMON  NMC_FIELDS_SETTING_TUN_ALL
 
 /* Available fields for NM_SETTING_IP_TUNNEL_SETTING_NAME */
 NmcOutputField nmc_fields_setting_ip_tunnel[] = {
@@ -748,7 +722,6 @@ NmcOutputField nmc_fields_setting_ip_tunnel[] = {
                                               NM_SETTING_IP_TUNNEL_ENCAPSULATION_LIMIT","\
                                               NM_SETTING_IP_TUNNEL_FLOW_LABEL","\
                                               NM_SETTING_IP_TUNNEL_MTU
-#define NMC_FIELDS_SETTING_IP_TUNNEL_COMMON   NMC_FIELDS_SETTING_IP_TUNNEL_ALL
 
 /* Available fields for NM_SETTING_MACVLAN_SETTING_NAME */
 NmcOutputField nmc_fields_setting_macvlan[] = {
@@ -764,7 +737,6 @@ NmcOutputField nmc_fields_setting_macvlan[] = {
                                            NM_SETTING_MACVLAN_MODE","\
                                            NM_SETTING_MACVLAN_PROMISCUOUS","\
                                            NM_SETTING_MACVLAN_TAP
-#define NMC_FIELDS_SETTING_MACVLAN_COMMON  NMC_FIELDS_SETTING_MACVLAN_ALL
 
 /* Available fields for NM_SETTING_VXLAN_SETTING_NAME */
 NmcOutputField nmc_fields_setting_vxlan[] = {
@@ -804,7 +776,6 @@ NmcOutputField nmc_fields_setting_vxlan[] = {
                                              NM_SETTING_VXLAN_RSC","\
                                              NM_SETTING_VXLAN_L2_MISS","\
                                              NM_SETTING_VXLAN_L3_MISS
-#define NMC_FIELDS_SETTING_VXLAN_COMMON      NMC_FIELDS_SETTING_VXLAN_ALL
 
 /*----------------------------------------------------------------------------*/
 static char *
@@ -1418,7 +1389,7 @@ nmc_property_ip_tunnel_allowed_mode (NMSetting *setting, const char *prop)
 
 	if (!words)
 		words = nm_utils_enum_get_values (nm_ip_tunnel_mode_get_type (),
-		                                  NM_IP_TUNNEL_MODE_UKNOWN + 1,
+		                                  NM_IP_TUNNEL_MODE_UNKNOWN + 1,
 		                                  G_MAXINT);
 	return words;
 }
@@ -1544,13 +1515,33 @@ DEFINE_GETTER (nmc_property_ipv4_get_route_metric, NM_SETTING_IP_CONFIG_ROUTE_ME
 DEFINE_GETTER (nmc_property_ipv4_get_ignore_auto_routes, NM_SETTING_IP_CONFIG_IGNORE_AUTO_ROUTES)
 DEFINE_GETTER (nmc_property_ipv4_get_ignore_auto_dns, NM_SETTING_IP_CONFIG_IGNORE_AUTO_DNS)
 DEFINE_GETTER (nmc_property_ipv4_get_dhcp_client_id, NM_SETTING_IP4_CONFIG_DHCP_CLIENT_ID)
-DEFINE_GETTER (nmc_property_ipv4_get_dhcp_timeout, NM_SETTING_IP4_CONFIG_DHCP_TIMEOUT)
+DEFINE_GETTER (nmc_property_ipv4_get_dhcp_timeout, NM_SETTING_IP_CONFIG_DHCP_TIMEOUT)
 DEFINE_GETTER (nmc_property_ipv4_get_dhcp_send_hostname, NM_SETTING_IP_CONFIG_DHCP_SEND_HOSTNAME)
 DEFINE_GETTER (nmc_property_ipv4_get_dhcp_hostname, NM_SETTING_IP_CONFIG_DHCP_HOSTNAME)
 DEFINE_GETTER (nmc_property_ipv4_get_dhcp_fqdn, NM_SETTING_IP4_CONFIG_DHCP_FQDN)
 DEFINE_GETTER (nmc_property_ipv4_get_never_default, NM_SETTING_IP_CONFIG_NEVER_DEFAULT)
 DEFINE_GETTER (nmc_property_ipv4_get_may_fail, NM_SETTING_IP_CONFIG_MAY_FAIL)
 
+static char *
+nmc_property_ipv4_get_dad_timeout (NMSetting *setting, NmcPropertyGetType get_type)
+{
+	NMSettingIPConfig *s_ip = NM_SETTING_IP_CONFIG (setting);
+	gint dad_timeout;
+
+	dad_timeout = nm_setting_ip_config_get_dad_timeout (s_ip);
+	if (get_type == NMC_PROPERTY_GET_PARSABLE)
+		return g_strdup_printf ("%d", dad_timeout);
+
+	switch (dad_timeout) {
+	case -1:
+		return g_strdup_printf (_("%d (default)"), dad_timeout);
+	case 0:
+		return g_strdup_printf (_("%d (off)"), dad_timeout);
+	default:
+		return g_strdup_printf ("%d", dad_timeout);
+	}
+}
+
 /* --- NM_SETTING_IP6_CONFIG_SETTING_NAME property get functions --- */
 DEFINE_GETTER (nmc_property_ipv6_get_method, NM_SETTING_IP_CONFIG_METHOD)
 DEFINE_GETTER (nmc_property_ipv6_get_dns, NM_SETTING_IP_CONFIG_DNS)
@@ -1803,7 +1794,7 @@ nmc_property_ip_tunnel_set_mode (NMSetting *setting, const char *prop,
 		gs_free char *values_str = NULL;
 
 		values = nm_utils_enum_get_values (nm_ip_tunnel_mode_get_type (),
-		                                   NM_IP_TUNNEL_MODE_UKNOWN + 1,
+		                                   NM_IP_TUNNEL_MODE_UNKNOWN + 1,
 		                                   G_MAXINT);
 		values_str = g_strjoinv (",", (char **) values);
 		g_set_error (error, 1, 0, _("invalid mode '%s', use one of %s"),
@@ -1862,14 +1853,19 @@ static char *
 nmc_property_wireless_get_powersave (NMSetting *setting, NmcPropertyGetType get_type)
 {
 	NMSettingWireless *s_wireless = NM_SETTING_WIRELESS (setting);
-	guint powersave = nm_setting_wireless_get_powersave (s_wireless);
+	NMSettingWirelessPowersave powersave;
+	gs_free char *str = NULL;
+	char *ret;
 
-	if (powersave == 0)
-		return g_strdup (_("no"));
-	else if (powersave == 1)
-		return g_strdup (_("yes"));
-	else
-		return g_strdup_printf (_("yes (%u)"), powersave);
+	powersave = nm_setting_wireless_get_powersave (s_wireless);
+	str = nm_utils_enum_to_str (nm_setting_wireless_powersave_get_type (), powersave);
+
+	if (get_type == NMC_PROPERTY_GET_PARSABLE) {
+		ret = str;
+		str = NULL;
+		return ret;
+	} else
+		return g_strdup_printf ("%s (%u)", str, powersave);
 }
 
 static char *
@@ -3306,8 +3302,8 @@ nmc_property_connection_set_lldp (NMSetting *setting, const char *prop,
 		char *p = val_strip; \
 		gboolean success; \
 		\
-		if (strncmp (val_strip, NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PATH, STRLEN (NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PATH)) == 0) \
-			p += STRLEN (NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PATH); \
+		if (strncmp (val_strip, NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PATH, NM_STRLEN (NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PATH)) == 0) \
+			p += NM_STRLEN (NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PATH); \
 		\
 		success = set_func (NM_SETTING_802_1X (setting), \
 		                    p, \
@@ -3328,8 +3324,8 @@ nmc_property_connection_set_lldp (NMSetting *setting, const char *prop,
 		const char *path, *password; \
 		gboolean success; \
 		\
-		if (strncmp (val_strip, NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PATH, STRLEN (NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PATH)) == 0) \
-			p += STRLEN (NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PATH); \
+		if (strncmp (val_strip, NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PATH, NM_STRLEN (NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PATH)) == 0) \
+			p += NM_STRLEN (NM_SETTING_802_1X_CERT_SCHEME_PREFIX_PATH); \
 		\
 		strv = nmc_strsplit_set (p, " \t,", 2); \
 		path = strv[0]; \
@@ -4926,20 +4922,33 @@ DEFINE_REMOVER_INDEX_OR_VALUE (nmc_property_wireless_remove_mac_address_blacklis
 static gboolean
 nmc_property_wireless_set_powersave (NMSetting *setting, const char *prop, const char *val, GError **error)
 {
-	unsigned long powersave_int;
-	gboolean val_bool = FALSE;
-
-	g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+	NMSettingWirelessPowersave powersave;
+	gs_free const char **options = NULL;
+	gs_free char *options_str = NULL;
+	long int t;
+	gboolean ret;
 
-	if (!nmc_string_to_uint (val, TRUE, 0, G_MAXUINT32, &powersave_int)) {
-		if (!nmc_string_to_bool (val, &val_bool, NULL)) {
-			g_set_error (error, 1, 0, _("'%s' is not a valid powersave value"), val);
+	if (nmc_string_to_int_base (val, 0, TRUE,
+	                            NM_SETTING_WIRELESS_POWERSAVE_DEFAULT,
+	                            NM_SETTING_WIRELESS_POWERSAVE_LAST,
+	                            &t))
+		powersave = (NMSettingWirelessPowersave) t;
+	else {
+		ret = nm_utils_enum_from_str (nm_setting_wireless_powersave_get_type (),
+		                              val,
+		                              (int *) &powersave,
+		                              NULL);
+		if (!ret) {
+			options = nm_utils_enum_get_values (nm_setting_wireless_powersave_get_type (),
+			                                    NM_SETTING_WIRELESS_POWERSAVE_DEFAULT,
+			                                    NM_SETTING_WIRELESS_POWERSAVE_LAST);
+			options_str = g_strjoinv (",", (char **) options);
+			g_set_error (error, 1, 0, _("invalid option '%s', use one of [%s]"), val, options_str);
 			return FALSE;
 		}
-		powersave_int = val_bool ? 1 : 0;
 	}
 
-	g_object_set (setting, prop, (guint32) powersave_int, NULL);
+	g_object_set (setting, prop, (guint) powersave, NULL);
 	return TRUE;
 }
 
@@ -6450,9 +6459,9 @@ nmc_properties_init (void)
 	                    NULL,
 	                    NULL,
 	                    NULL);
-	nmc_add_prop_funcs (GLUE (IP4_CONFIG, DHCP_TIMEOUT),
+	nmc_add_prop_funcs (GLUE_IP (4, DHCP_TIMEOUT),
 	                    nmc_property_ipv4_get_dhcp_timeout,
-	                    nmc_property_set_uint,
+	                    nmc_property_set_int,
 	                    NULL,
 	                    NULL,
 	                    NULL,
@@ -6492,6 +6501,13 @@ nmc_properties_init (void)
 	                    NULL,
 	                    NULL,
 	                    NULL);
+	nmc_add_prop_funcs (GLUE_IP (4, DAD_TIMEOUT),
+	                    nmc_property_ipv4_get_dad_timeout,
+	                    nmc_property_set_int,
+	                    NULL,
+	                    NULL,
+	                    NULL,
+	                    NULL);
 
 	/* Add editable properties for NM_SETTING_IP6_CONFIG_SETTING_NAME */
 	nmc_add_prop_funcs (GLUE_IP (6, METHOD),
@@ -8088,6 +8104,7 @@ setting_ip4_config_details (NMSetting *setting, NmCli *nmc,  const char *one_pro
 	set_val_str (arr, 15, nmc_property_ipv4_get_dhcp_fqdn (setting, NMC_PROPERTY_GET_PRETTY));
 	set_val_str (arr, 16, nmc_property_ipv4_get_never_default (setting, NMC_PROPERTY_GET_PRETTY));
 	set_val_str (arr, 17, nmc_property_ipv4_get_may_fail (setting, NMC_PROPERTY_GET_PRETTY));
+	set_val_str (arr, 18, nmc_property_ipv4_get_dad_timeout (setting, NMC_PROPERTY_GET_PRETTY));
 	g_ptr_array_add (nmc->output_data, arr);
 
 	print_data (nmc);  /* Print all data */