diff options
-rw-r--r-- | introspection/org.freedesktop.NetworkManager.IP4Config.xml | 23 | ||||
-rw-r--r-- | libnm/nm-ip-config.c | 2 | ||||
-rw-r--r-- | src/nm-ip4-config.c | 92 | ||||
-rw-r--r-- | src/nm-ip4-config.h | 6 |
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); |