File NetworkManager-NIS.patch of Package NetworkManager
Index: NetworkManager-0.8/src/dhcp-manager/nm-dhcp-manager.c
===================================================================
--- NetworkManager-0.8.orig/src/dhcp-manager/nm-dhcp-manager.c
+++ NetworkManager-0.8/src/dhcp-manager/nm-dhcp-manager.c
@@ -983,6 +983,18 @@ nm_dhcp_manager_options_to_ip4_config (c
nm_ip4_config_set_mtu (ip4_config, int_mtu);
}
+ str = g_hash_table_lookup (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 (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:
Index: NetworkManager-0.8/src/named-manager/nm-named-manager.c
===================================================================
--- NetworkManager-0.8.orig/src/named-manager/nm-named-manager.c
+++ NetworkManager-0.8/src/named-manager/nm-named-manager.c
@@ -96,6 +96,8 @@ typedef struct {
GPtrArray *nameservers;
const char *domain;
GPtrArray *searches;
+ const char *nis_domain;
+ const char *nis_servers;
} NMResolvConfData;
static void
@@ -123,6 +125,18 @@ merge_one_ip4_config (NMResolvConfData *
num = nm_ip4_config_get_num_searches (src);
for (i = 0; i < num; i++)
g_ptr_array_add (rc->searches, g_strdup (nm_ip4_config_get_search (src, i)));
+
+ if (!rc->nis_domain && !rc->nis_servers) {
+ const char *tmp;
+
+ tmp = g_object_get_data (G_OBJECT (src), "NISDOMAIN");
+ if (tmp)
+ rc->nis_domain = g_strdup (tmp);
+
+ tmp = g_object_get_data (G_OBJECT (src), "NISSERVERS");
+ if (tmp)
+ rc->nis_servers = g_strdup (tmp);
+ }
}
static void
@@ -212,6 +226,8 @@ dispatch_netconfig (const char *domain,
char **searches,
char **nameservers,
const char *iface,
+ const char *nis_domain,
+ const char *nis_servers,
GError **error)
{
char *str;
@@ -255,6 +271,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);
/* Wait until the process exits */
@@ -487,6 +509,8 @@ rewrite_resolv_conf (NMNamedManager *mgr
rc.nameservers = g_ptr_array_new ();
rc.domain = NULL;
rc.searches = g_ptr_array_new ();
+ rc.nis_domain = NULL;
+ rc.nis_servers = NULL;
if (priv->vpn_config)
merge_one_ip4_config (&rc, priv->vpn_config);
@@ -539,7 +563,10 @@ rewrite_resolv_conf (NMNamedManager *mgr
#ifdef TARGET_SUSE
if (success == FALSE)
- success = dispatch_netconfig (domain, searches, nameservers, iface, error);
+ success = dispatch_netconfig (domain, searches, nameservers, iface,
+ rc.nis_domain,
+ rc.nis_servers,
+ error);
#endif
if (success == FALSE)
@@ -553,6 +580,11 @@ rewrite_resolv_conf (NMNamedManager *mgr
if (nameservers)
g_strfreev (nameservers);
+ if (rc.nis_domain)
+ g_free (rc.nis_domain);
+ if (rc.nis_servers)
+ g_free (rc.nis_servers);
+
return success;
}