about summary refs log tree commit diff
path: root/src/dns-manager/nm-dns-manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dns-manager/nm-dns-manager.c')
-rw-r--r--src/dns-manager/nm-dns-manager.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/src/dns-manager/nm-dns-manager.c b/src/dns-manager/nm-dns-manager.c
index b838e9f0..707cbbbb 100644
--- a/src/dns-manager/nm-dns-manager.c
+++ b/src/dns-manager/nm-dns-manager.c
@@ -16,7 +16,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
  * Copyright (C) 2004 - 2005 Colin Walters <walters@redhat.com>
- * Copyright (C) 2004 - 2012 Red Hat, Inc.
+ * Copyright (C) 2004 - 2013 Red Hat, Inc.
  * Copyright (C) 2005 - 2008 Novell, Inc.
  *   and others
  */
@@ -77,6 +77,14 @@ typedef struct {
 	gboolean dns_touched;
 } NMDnsManagerPrivate;
 
+enum {
+	CONFIG_CHANGED,
+
+	LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL] = { 0 };
+
 
 typedef struct {
 	GPtrArray *nameservers;
@@ -746,6 +754,10 @@ update_dns (NMDnsManager *self,
 	if (success == FALSE)
 		success = update_resolv_conf (domain, searches, nameservers, error);
 
+	/* signal that resolv.conf was changed */
+	if (success)
+		g_signal_emit (self, signals[CONFIG_CHANGED], 0);
+
 	if (searches)
 		g_strfreev (searches);
 	if (nameservers)
@@ -1145,9 +1157,20 @@ nm_dns_manager_class_init (NMDnsManagerClass *klass)
 {
 	GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
+	g_type_class_add_private (object_class, sizeof (NMDnsManagerPrivate));
+
+	/* virtual methods */
 	object_class->dispose = dispose;
 	object_class->finalize = finalize;
 
-	g_type_class_add_private (object_class, sizeof (NMDnsManagerPrivate));
+	/* signals */
+	signals[CONFIG_CHANGED] =
+		g_signal_new ("config-changed",
+		              G_OBJECT_CLASS_TYPE (object_class),
+		              G_SIGNAL_RUN_FIRST,
+		              G_STRUCT_OFFSET (NMDnsManagerClass, config_changed),
+		              NULL, NULL,
+		              g_cclosure_marshal_VOID__VOID,
+		              G_TYPE_NONE, 0);
 }