25f86691e2
- core: fix reading physical port id for sysfs - libnm-glib: export get_gateway() and get_searches() functions - libnm-glib: new functions for bindings to get nameservers - libnm-glib: chain up the parent constructed() of NMRemoteConnection - core: exit cleanly if D-Bus cannot be initialized (rh #1057738) - dhcp: don't add an IPv6 address if one wasn't given (rh #1048046) - core: Add host route for DHCP4 server if outside assigned subnet (bgo #721767) (rh #983325) - vpn: handle missing tunnel interface for IP-based VPNs (bgo #721724) (rh #1030068) (rh #865883) - core: only log about IPv6 Commit the first time (rh #1044757)
146 lines
5.0 KiB
Diff
146 lines
5.0 KiB
Diff
From 8ee4f58e9ee67df2ef761a691dec55c6008ad4ff Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= <jklimes@redhat.com>
|
|
Date: Wed, 22 Jan 2014 15:31:56 +0100
|
|
Subject: [PATCH] libnm-glib: additional functions to get nameservers (rh
|
|
#1056146)
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
This commit adds two new functions for introspection users to get nameservers:
|
|
guint32 nm_ip6_config_get_num_nameservers (NMIP6Config *config)
|
|
const struct in6_addr *nm_ip6_config_get_nameserver (NMIP6Config *config, guint32 idx)
|
|
The existing function can't be used due to GObject introspection limitations:
|
|
const GSList *nm_ip6_config_get_nameservers (NMIP6Config *config);
|
|
|
|
https://bugzilla.redhat.com/show_bug.cgi?id=1056146
|
|
|
|
Signed-off-by: Jiří Klimeš <jklimes@redhat.com>
|
|
---
|
|
libnm-glib/libnm-glib.ver | 2 ++
|
|
libnm-glib/nm-ip6-config.c | 52 +++++++++++++++++++++++++++++++++++++++++++++-
|
|
libnm-glib/nm-ip6-config.h | 16 +++++++-------
|
|
3 files changed, 62 insertions(+), 8 deletions(-)
|
|
|
|
diff --git a/libnm-glib/libnm-glib.ver b/libnm-glib/libnm-glib.ver
|
|
index bf69db4..9f0db93 100644
|
|
--- a/libnm-glib/libnm-glib.ver
|
|
+++ b/libnm-glib/libnm-glib.ver
|
|
@@ -227,7 +227,9 @@ global:
|
|
nm_ip6_config_get_addresses;
|
|
nm_ip6_config_get_domains;
|
|
nm_ip6_config_get_gateway;
|
|
+ nm_ip6_config_get_nameserver;
|
|
nm_ip6_config_get_nameservers;
|
|
+ nm_ip6_config_get_num_nameservers;
|
|
nm_ip6_config_get_routes;
|
|
nm_ip6_config_get_searches;
|
|
nm_ip6_config_get_type;
|
|
diff --git a/libnm-glib/nm-ip6-config.c b/libnm-glib/nm-ip6-config.c
|
|
index 01e2cae..7c9cfca 100644
|
|
--- a/libnm-glib/nm-ip6-config.c
|
|
+++ b/libnm-glib/nm-ip6-config.c
|
|
@@ -18,7 +18,7 @@
|
|
* Boston, MA 02110-1301 USA.
|
|
*
|
|
* Copyright (C) 2007 - 2008 Novell, Inc.
|
|
- * Copyright (C) 2008 - 2011 Red Hat, Inc.
|
|
+ * Copyright (C) 2008 - 2014 Red Hat, Inc.
|
|
*/
|
|
|
|
#include <string.h>
|
|
@@ -192,6 +192,56 @@ nm_ip6_config_get_addresses (NMIP6Config *config)
|
|
return NM_IP6_CONFIG_GET_PRIVATE (config)->addresses;
|
|
}
|
|
|
|
+/**
|
|
+ * nm_ip6_config_get_num_nameservers:
|
|
+ * @config: a #NMIP6Config
|
|
+ *
|
|
+ * Gets the number of the domain name servers in the configuration.
|
|
+ *
|
|
+ * Returns: the number of domain name servers
|
|
+ *
|
|
+ * Since: 0.9.10
|
|
+ **/
|
|
+guint32
|
|
+nm_ip6_config_get_num_nameservers (NMIP6Config *config)
|
|
+{
|
|
+ g_return_val_if_fail (NM_IS_IP6_CONFIG (config), 0);
|
|
+
|
|
+ _nm_object_ensure_inited (NM_OBJECT (config));
|
|
+ return g_slist_length (NM_IP6_CONFIG_GET_PRIVATE (config)->nameservers);
|
|
+}
|
|
+
|
|
+/**
|
|
+ * nm_ip6_config_get_nameserver:
|
|
+ * @config: a #NMIP6Config
|
|
+ * @idx: index of the nameserver to return
|
|
+ *
|
|
+ * Gets the domain name server at index @idx in the configuration.
|
|
+ *
|
|
+ * Returns: (array fixed-size=16) (element-type guint8) (transfer none):
|
|
+ * the IPv6 address of domain name server at index @iidx
|
|
+ *
|
|
+ * Since: 0.9.10
|
|
+ **/
|
|
+const struct in6_addr *
|
|
+nm_ip6_config_get_nameserver (NMIP6Config *config, guint32 idx)
|
|
+{
|
|
+ NMIP6ConfigPrivate *priv;
|
|
+ GSList *item;
|
|
+ guint32 i = 0;
|
|
+
|
|
+ g_return_val_if_fail (NM_IS_IP6_CONFIG (config), NULL);
|
|
+
|
|
+ _nm_object_ensure_inited (NM_OBJECT (config));
|
|
+ priv = NM_IP6_CONFIG_GET_PRIVATE (config);
|
|
+
|
|
+ for (item = priv->nameservers; item && i < idx; i++)
|
|
+ item = item->next;
|
|
+
|
|
+ g_return_val_if_fail (item, NULL);
|
|
+ return item ? (const struct in6_addr *) item->data : NULL;
|
|
+}
|
|
+
|
|
/* FIXME: like in libnm_util, in6_addr is not introspectable, so skipping here */
|
|
/**
|
|
* nm_ip6_config_get_nameservers: (skip)
|
|
diff --git a/libnm-glib/nm-ip6-config.h b/libnm-glib/nm-ip6-config.h
|
|
index a71d74b..b6198fa 100644
|
|
--- a/libnm-glib/nm-ip6-config.h
|
|
+++ b/libnm-glib/nm-ip6-config.h
|
|
@@ -18,7 +18,7 @@
|
|
* Boston, MA 02110-1301 USA.
|
|
*
|
|
* Copyright (C) 2007 - 2008 Novell, Inc.
|
|
- * Copyright (C) 2008 Red Hat, Inc.
|
|
+ * Copyright (C) 2008 - 2014 Red Hat, Inc.
|
|
*/
|
|
|
|
#ifndef NM_IP6_CONFIG_H
|
|
@@ -65,12 +65,14 @@ GType nm_ip6_config_get_type (void);
|
|
|
|
GObject *nm_ip6_config_new (DBusGConnection *connection, const char *object_path);
|
|
|
|
-const char * nm_ip6_config_get_gateway (NMIP6Config *config);
|
|
-const GSList * nm_ip6_config_get_addresses (NMIP6Config *config);
|
|
-const GSList * nm_ip6_config_get_routes (NMIP6Config *config);
|
|
-const GSList * nm_ip6_config_get_nameservers (NMIP6Config *config);
|
|
-const GPtrArray *nm_ip6_config_get_domains (NMIP6Config *config);
|
|
-const GPtrArray *nm_ip6_config_get_searches (NMIP6Config *config);
|
|
+const char * nm_ip6_config_get_gateway (NMIP6Config *config);
|
|
+const GSList * nm_ip6_config_get_addresses (NMIP6Config *config);
|
|
+const GSList * nm_ip6_config_get_routes (NMIP6Config *config);
|
|
+guint32 nm_ip6_config_get_num_nameservers (NMIP6Config *config);
|
|
+const struct in6_addr *nm_ip6_config_get_nameserver (NMIP6Config *config, guint32 idx);
|
|
+const GSList * nm_ip6_config_get_nameservers (NMIP6Config *config);
|
|
+const GPtrArray * nm_ip6_config_get_domains (NMIP6Config *config);
|
|
+const GPtrArray * nm_ip6_config_get_searches (NMIP6Config *config);
|
|
|
|
G_END_DECLS
|
|
|
|
--
|
|
1.7.11.7
|
|
|