File nm-nis.patch of Package NetworkManager

From 0c65f9fbad0bb639b49a14f8890db25bcd930baf Mon Sep 17 00:00:00 2001
From: Tambet Ingo <tambet@gmail.com>
Date: Wed, 3 Dec 2008 12:19:27 +0200
Subject: [PATCH] nm-nis


diff --git a/src/dhcp-manager/nm-dhcp-manager.c b/src/dhcp-manager/nm-dhcp-manager.c
index 6de7ac2..be9c9c2 100644
--- a/src/dhcp-manager/nm-dhcp-manager.c
+++ b/src/dhcp-manager/nm-dhcp-manager.c
@@ -890,6 +890,18 @@ nm_dhcp_manager_get_ip4_config (NMDHCPManager *manager,
 			nm_ip4_config_set_mtu (ip4_config, int_mtu);
 	}
 
+	str = g_hash_table_lookup (device->options, "new_nis_domain");
+	if (str) {
+		nm_info ("  NIS domain '%s'", str);
+		g_object_set_data_full (G_OBJECT (ip4_config), "NISDOMAIN", g_strdup (str), g_free);
+	}
+
+	str = g_hash_table_lookup (device->options, "new_nis_servers");
+	if (str) {
+		nm_info ("  NIS servers '%s'", str);
+		g_object_set_data_full (G_OBJECT (ip4_config), "NISSERVERS", g_strdup (str), g_free);
+	}
+
 	return ip4_config;
 
 error:
diff --git a/src/named-manager/nm-named-manager.c b/src/named-manager/nm-named-manager.c
index adb76fd..9fbc3da 100644
--- a/src/named-manager/nm-named-manager.c
+++ b/src/named-manager/nm-named-manager.c
@@ -117,6 +117,19 @@ merge_one_ip4_config (NMIP4Config *dst, NMIP4Config *src)
 		for (i = 0; i < num_domains; i++)
 			nm_ip4_config_add_search (dst, nm_ip4_config_get_domain (src, i));
 	}
+
+	if (!g_object_get_data (G_OBJECT (dst), "NISDOMAIN") &&
+		!g_object_get_data (G_OBJECT (dst), "NISSERVERS")) {
+		const char *tmp;
+		
+		tmp = g_object_get_data (G_OBJECT (src), "NISDOMAIN");
+		if (tmp)
+			g_object_set_data_full (G_OBJECT (dst), "NISDOMAIN", g_strdup (tmp), g_free);
+
+		tmp = g_object_get_data (G_OBJECT (src), "NISSERVERS");
+		if (tmp)
+			g_object_set_data_full (G_OBJECT (dst), "NISSERVERS", g_strdup (tmp), g_free);
+	}
 }
 
 
@@ -172,6 +185,8 @@ dispatch_netconfig (const char *domain,
 				char **searches,
 				char **nameservers,
 				const char *iface,
+					const char *nis_domain,
+					const char *nis_servers,
 				GError **error)
 {
 	gint fd;
@@ -204,6 +219,12 @@ dispatch_netconfig (const char *domain,
 		g_free (str);
 	}
 
+	if (nis_domain)
+		write_to_netconfig (fd, "NISDOMAIN", nis_domain);
+
+	if (nis_servers)
+		write_to_netconfig (fd, "NISSERVERS", nis_servers);
+
 	close (fd);
 
 	return TRUE;
@@ -470,7 +491,10 @@ rewrite_resolv_conf (NMNamedManager *mgr, const char *iface, GError **error)
 
 #ifdef TARGET_SUSE
 	if (success == FALSE)
-		success = dispatch_netconfig (domain, searches, nameservers, iface, error);
+		success = dispatch_netconfig (domain, searches, nameservers, iface,
+									  g_object_get_data (G_OBJECT (composite), "NISDOMAIN"),
+									  g_object_get_data (G_OBJECT (composite), "NISSERVERS"),
+									  error);
 #endif
 
 	if (success == FALSE)
-- 
1.6.0.2

openSUSE Build Service is sponsored by