summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--introspection/org.freedesktop.NetworkManager.IP4Config.xml23
-rw-r--r--libnm/nm-ip-config.c2
-rw-r--r--src/nm-ip4-config.c92
-rw-r--r--src/nm-ip4-config.h6
4 files changed, 101 insertions, 22 deletions
diff --git a/introspection/org.freedesktop.NetworkManager.IP4Config.xml b/introspection/org.freedesktop.NetworkManager.IP4Config.xml
index 0b04af94e8..e4388fd4fe 100644
--- a/introspection/org.freedesktop.NetworkManager.IP4Config.xml
+++ b/introspection/org.freedesktop.NetworkManager.IP4Config.xml
@@ -55,11 +55,21 @@
<!--
Nameservers:
- The nameservers in use.
+ The nameservers in use. Deprecated: use NameserverData
-->
<property name="Nameservers" type="au" access="read"/>
<!--
+ NameserverData:
+
+ The nameservers in use. Currently only the value "address"
+ is recognized (with an IP address string).
+
+ Since: 1.14
+ -->
+ <property name="NameserverData" type="aa{sv}" access="read"/>
+
+ <!--
Domains:
A list of domains this address belongs to.
@@ -92,11 +102,20 @@
WinsServers:
The Windows Internet Name Service servers associated with the connection.
- Each address is in network byte order.
+ Each address is in network byte order. Deprecated: use WinsServerData
-->
<property name="WinsServers" type="au" access="read"/>
<!--
+ WinsServerData:
+
+ The Windows Internet Name Service servers associated with the connection.
+
+ Since: 1.14
+ -->
+ <property name="WinsServerData" type="as" access="read"/>
+
+ <!--
PropertiesChanged:
@properties: A dictionary mapping property names to variant boxed values
diff --git a/libnm/nm-ip-config.c b/libnm/nm-ip-config.c
index d1a69f3878..c1e888be39 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/src/nm-ip4-config.c b/src/nm-ip4-config.c
index 60bac978eb..caae660464 100644
--- a/src/nm-ip4-config.c
+++ b/src/nm-ip4-config.c
@@ -278,10 +278,12 @@ NM_GOBJECT_PROPERTIES_DEFINE (NMIP4Config,
PROP_ROUTE_DATA,
PROP_ROUTES,
PROP_GATEWAY,
+ PROP_NAMESERVER_DATA,
PROP_NAMESERVERS,
PROP_DOMAINS,
PROP_SEARCHES,
PROP_DNS_OPTIONS,
+ PROP_WINS_SERVER_DATA,
PROP_WINS_SERVERS,
PROP_DNS_PRIORITY,
);
@@ -2276,7 +2278,8 @@ nm_ip4_config_reset_nameservers (NMIP4Config *self)
if (priv->nameservers->len != 0) {
g_array_set_size (priv->nameservers, 0);
- _notify (self, PROP_NAMESERVERS);
+ nm_gobject_notify_together (self, PROP_NAMESERVER_DATA,
+ PROP_NAMESERVERS);
}
}
@@ -2293,7 +2296,8 @@ nm_ip4_config_add_nameserver (NMIP4Config *self, guint32 new)
return;
g_array_append_val (priv->nameservers, new);
- _notify (self, PROP_NAMESERVERS);
+ nm_gobject_notify_together (self, PROP_NAMESERVER_DATA,
+ PROP_NAMESERVERS);
}
void
@@ -2304,7 +2308,8 @@ nm_ip4_config_del_nameserver (NMIP4Config *self, guint i)
g_return_if_fail (i < priv->nameservers->len);
g_array_remove_index (priv->nameservers, i);
- _notify (self, PROP_NAMESERVERS);
+ nm_gobject_notify_together (self, PROP_NAMESERVER_DATA,
+ PROP_NAMESERVERS);
}
guint
@@ -2622,7 +2627,8 @@ nm_ip4_config_reset_wins (NMIP4Config *self)
if (priv->wins->len != 0) {
g_array_set_size (priv->wins, 0);
- _notify (self, PROP_WINS_SERVERS);
+ nm_gobject_notify_together (self, PROP_WINS_SERVER_DATA,
+ PROP_WINS_SERVERS);
}
}
@@ -2639,7 +2645,8 @@ nm_ip4_config_add_wins (NMIP4Config *self, guint32 wins)
return;
g_array_append_val (priv->wins, wins);
- _notify (self, PROP_WINS_SERVERS);
+ nm_gobject_notify_together (self, PROP_WINS_SERVER_DATA,
+ PROP_WINS_SERVERS);
}
void
@@ -2650,7 +2657,8 @@ nm_ip4_config_del_wins (NMIP4Config *self, guint i)
g_return_if_fail (i < priv->wins->len);
g_array_remove_index (priv->wins, i);
- _notify (self, PROP_WINS_SERVERS);
+ nm_gobject_notify_together (self, PROP_WINS_SERVER_DATA,
+ PROP_WINS_SERVERS);
}
guint
@@ -2913,6 +2921,7 @@ get_property (GObject *object, guint prop_id,
NMDedupMultiIter ipconf_iter;
const NMPlatformIP4Route *route;
GVariantBuilder builder_data, builder_legacy;
+ guint i;
switch (prop_id) {
case PROP_IFINDEX:
@@ -2931,7 +2940,7 @@ get_property (GObject *object, guint prop_id,
head_entry = nm_ip4_config_lookup_addresses (self);
if (head_entry) {
gs_free const NMPObject **addresses = NULL;
- guint naddr, i;
+ guint naddr;
addresses = (const NMPObject **) nm_dedup_multi_objs_to_array_head (head_entry, NULL, NULL, &naddr);
nm_assert (addresses && naddr);
@@ -3067,6 +3076,26 @@ out_routes_cached:
} else
g_value_set_string (value, NULL);
break;
+ case PROP_NAMESERVER_DATA:
+ g_variant_builder_init (&builder_data, G_VARIANT_TYPE ("aa{sv}"));
+
+ for (i = 0; i < priv->nameservers->len; i++) {
+ GVariantBuilder nested_builder;
+ char addr_str[NM_UTILS_INET_ADDRSTRLEN];
+
+ nm_utils_inet4_ntop (g_array_index (priv->nameservers, in_addr_t, i),
+ addr_str);
+
+ g_variant_builder_init (&nested_builder, G_VARIANT_TYPE ("a{sv}"));
+ g_variant_builder_add (&nested_builder, "{sv}",
+ "address",
+ g_variant_new_string (addr_str));
+ g_variant_builder_add (&builder_data, "a{sv}", &nested_builder);
+ }
+
+ g_value_take_variant (value,
+ g_variant_builder_end (&builder_data));
+ break;
case PROP_NAMESERVERS:
g_value_take_variant (value,
g_variant_new_fixed_array (G_VARIANT_TYPE_UINT32,
@@ -3086,6 +3115,19 @@ out_routes_cached:
case PROP_DNS_PRIORITY:
g_value_set_int (value, priv->dns_priority);
break;
+ case PROP_WINS_SERVER_DATA:
+ g_variant_builder_init (&builder_data, G_VARIANT_TYPE ("as"));
+ for (i = 0; i < priv->wins->len; i++) {
+ char addr_str[NM_UTILS_INET_ADDRSTRLEN];
+
+ g_variant_builder_add (&builder_data,
+ "s",
+ nm_utils_inet4_ntop (g_array_index (priv->wins, in_addr_t, i),
+ addr_str));
+ }
+ g_value_take_variant (value,
+ g_variant_builder_end (&builder_data));
+ break;
case PROP_WINS_SERVERS:
g_value_take_variant (value,
g_variant_new_fixed_array (G_VARIANT_TYPE_UINT32,
@@ -3193,17 +3235,19 @@ static const NMDBusInterfaceInfoExtended interface_info_ip4_config = {
&nm_signal_info_property_changed_legacy,
),
.properties = NM_DEFINE_GDBUS_PROPERTY_INFOS (
- NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("Addresses", "aau", NM_IP4_CONFIG_ADDRESSES),
- NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("AddressData", "aa{sv}", NM_IP4_CONFIG_ADDRESS_DATA),
- NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("Gateway", "s", NM_IP4_CONFIG_GATEWAY),
- NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("Routes", "aau", NM_IP4_CONFIG_ROUTES),
- NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("RouteData", "aa{sv}", NM_IP4_CONFIG_ROUTE_DATA),
- NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("Nameservers", "au", NM_IP4_CONFIG_NAMESERVERS),
- NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("Domains", "as", NM_IP4_CONFIG_DOMAINS),
- NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("Searches", "as", NM_IP4_CONFIG_SEARCHES),
- NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("DnsOptions", "as", NM_IP4_CONFIG_DNS_OPTIONS),
- NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("DnsPriority", "i", NM_IP4_CONFIG_DNS_PRIORITY),
- NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("WinsServers", "au", NM_IP4_CONFIG_WINS_SERVERS),
+ NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("Addresses", "aau", NM_IP4_CONFIG_ADDRESSES),
+ NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("AddressData", "aa{sv}", NM_IP4_CONFIG_ADDRESS_DATA),
+ NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("Gateway", "s", NM_IP4_CONFIG_GATEWAY),
+ NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("Routes", "aau", NM_IP4_CONFIG_ROUTES),
+ NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("RouteData", "aa{sv}", NM_IP4_CONFIG_ROUTE_DATA),
+ NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE ("NameserverData", "aa{sv}", NM_IP4_CONFIG_NAMESERVER_DATA),
+ NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("Nameservers", "au", NM_IP4_CONFIG_NAMESERVERS),
+ NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("Domains", "as", NM_IP4_CONFIG_DOMAINS),
+ NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("Searches", "as", NM_IP4_CONFIG_SEARCHES),
+ NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("DnsOptions", "as", NM_IP4_CONFIG_DNS_OPTIONS),
+ NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("DnsPriority", "i", NM_IP4_CONFIG_DNS_PRIORITY),
+ NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE ("WinsServerData", "as", NM_IP4_CONFIG_WINS_SERVER_DATA),
+ NM_DEFINE_DBUS_PROPERTY_INFO_EXTENDED_READABLE_L ("WinsServers", "au", NM_IP4_CONFIG_WINS_SERVERS),
),
),
.legacy_property_changed = TRUE,
@@ -3262,6 +3306,12 @@ nm_ip4_config_class_init (NMIP4ConfigClass *config_class)
NULL,
G_PARAM_READABLE |
G_PARAM_STATIC_STRINGS);
+ obj_properties[PROP_NAMESERVER_DATA] =
+ g_param_spec_variant (NM_IP4_CONFIG_NAMESERVER_DATA, "", "",
+ G_VARIANT_TYPE ("aa{sv}"),
+ NULL,
+ G_PARAM_READABLE |
+ G_PARAM_STATIC_STRINGS);
obj_properties[PROP_NAMESERVERS] =
g_param_spec_variant (NM_IP4_CONFIG_NAMESERVERS, "", "",
G_VARIANT_TYPE ("au"),
@@ -3288,6 +3338,12 @@ nm_ip4_config_class_init (NMIP4ConfigClass *config_class)
G_MININT32, G_MAXINT32, 0,
G_PARAM_READABLE |
G_PARAM_STATIC_STRINGS);
+ obj_properties[PROP_WINS_SERVER_DATA] =
+ g_param_spec_variant (NM_IP4_CONFIG_WINS_SERVER_DATA, "", "",
+ G_VARIANT_TYPE ("as"),
+ NULL,
+ G_PARAM_READABLE |
+ G_PARAM_STATIC_STRINGS);
obj_properties[PROP_WINS_SERVERS] =
g_param_spec_variant (NM_IP4_CONFIG_WINS_SERVERS, "", "",
G_VARIANT_TYPE ("au"),
diff --git a/src/nm-ip4-config.h b/src/nm-ip4-config.h
index 2d45a13da7..3970423d55 100644
--- a/src/nm-ip4-config.h
+++ b/src/nm-ip4-config.h
@@ -138,16 +138,18 @@ typedef struct _NMIP4ConfigClass NMIP4ConfigClass;
#define NM_IP4_CONFIG_ADDRESS_DATA "address-data"
#define NM_IP4_CONFIG_ROUTE_DATA "route-data"
#define NM_IP4_CONFIG_GATEWAY "gateway"
-#define NM_IP4_CONFIG_NAMESERVERS "nameservers"
+#define NM_IP4_CONFIG_NAMESERVER_DATA "nameserver-data"
#define NM_IP4_CONFIG_DOMAINS "domains"
#define NM_IP4_CONFIG_SEARCHES "searches"
#define NM_IP4_CONFIG_DNS_OPTIONS "dns-options"
#define NM_IP4_CONFIG_DNS_PRIORITY "dns-priority"
-#define NM_IP4_CONFIG_WINS_SERVERS "wins-servers"
+#define NM_IP4_CONFIG_WINS_SERVER_DATA "wins-server-data"
/* deprecated */
#define NM_IP4_CONFIG_ADDRESSES "addresses"
#define NM_IP4_CONFIG_ROUTES "routes"
+#define NM_IP4_CONFIG_NAMESERVERS "nameservers"
+#define NM_IP4_CONFIG_WINS_SERVERS "wins-servers"
GType nm_ip4_config_get_type (void);