2005-12-13 Robert Love <rml@novell.com>

Patch by Stefan Scheler <sscheler@suse.de>:
	*  src/nm-ip4-config.h, src/nm-ip4-config.c,
	   src/dhcp-manager/nm-dhcp-manager.c: Add support for setting up NIS
	   via DHCP.  Still need the backends to commit the NIS domain name and
	   and servers to yp.conf as needed.


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1179 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
Robert Love 2005-12-13 21:03:57 +00:00 committed by Robert Love
parent 2dcaedf999
commit 4be49b9902
4 changed files with 91 additions and 2 deletions

View file

@ -1,9 +1,17 @@
2005-12-12 Robert Love <rml@novell.com>
2005-12-13 Robert Love <rml@novell.com>
Patch by Stefan Scheler <sscheler@suse.de>:
* src/nm-ip4-config.h, src/nm-ip4-config.c,
src/dhcp-manager/nm-dhcp-manager.c: Add support for setting up NIS
via DHCP. Still need the backends to commit the NIS domain name and
and servers to yp.conf as needed.
2005-12-13 Robert Love <rml@novell.com>
* src/vpn-manager/nm-dbus-vpn.c: Do not call the lengthy-named function
nm_vpn_manager_remove_connection() unless vpn is non-NULL.
2005-12-12 Robert Love <rml@novell.com>
2005-12-13 Robert Love <rml@novell.com>
* src/named-manager/nm-named-manager.c: Don't unref the config until
after we call rewrite_resolv_conf(), because get_last_default_domain()

View file

@ -469,7 +469,10 @@ NMIP4Config * nm_dhcp_manager_get_ip4_config (NMDHCPManager *manager, NMActReque
guint32 * ip4_nameservers = NULL;
guint32 * ip4_gateway = NULL;
guint32 num_ip4_nameservers = 0;
guint32 num_ip4_nis_servers = 0;
char * domain_names = NULL;
char * nis_domain = NULL;
guint32 * ip4_nis_servers = NULL;
struct in_addr temp_addr;
nm_completion_args args;
@ -509,6 +512,8 @@ NMIP4Config * nm_dhcp_manager_get_ip4_config (NMDHCPManager *manager, NMActReque
get_ip4_uint32s (manager, dev, "domain_name_servers", &ip4_nameservers, &num_ip4_nameservers);
get_ip4_string (manager, dev, "domain_name", &domain_names);
get_ip4_string (manager, dev, "nis_domain", &nis_domain);
get_ip4_uint32s (manager, dev, "nis_servers", &ip4_nis_servers, &num_ip4_nis_servers);
nm_info ("Retrieved the following IP4 configuration from the DHCP daemon:");
@ -549,6 +554,21 @@ NMIP4Config * nm_dhcp_manager_get_ip4_config (NMDHCPManager *manager, NMActReque
g_strfreev (searches);
}
if (nis_domain) {
nm_ip4_config_set_nis_domain( ip4_config, nis_domain);
nm_info (" nis domain '%s'", nis_domain);
}
for (i = 0; i < num_ip4_nis_servers; i++)
{
nm_ip4_config_add_nis_server (ip4_config, ip4_nis_servers[i]);
temp_addr.s_addr = ip4_nis_servers[i];
nm_info (" nis server %s", inet_ntoa (temp_addr));
}
nm_info("nis_servers = %d", nm_ip4_config_get_num_nis_servers(ip4_config));
nm_info("nis domain = %s", nm_ip4_config_get_nis_domain(ip4_config));
out:
return ip4_config;
}

View file

@ -42,6 +42,9 @@ struct NMIP4Config
GSList * nameservers;
GSList * domains;
gchar * nis_domain;
GSList * nis_servers;
/* If this is a VPN/etc config that requires
* another device (like Ethernet) to already have
* an IP4Config before it can be used.
@ -74,6 +77,8 @@ NMIP4Config *nm_ip4_config_copy (NMIP4Config *src_config)
dst_config->ip4_netmask = nm_ip4_config_get_netmask (src_config);
dst_config->ip4_broadcast = nm_ip4_config_get_broadcast (src_config);
dst_config->nis_domain = g_strdup(nm_ip4_config_get_nis_domain(src_config));
len = nm_ip4_config_get_num_nameservers (src_config);
for (i = 0; i < len; i++)
nm_ip4_config_add_nameserver (dst_config, nm_ip4_config_get_nameserver (src_config, i));
@ -82,6 +87,10 @@ NMIP4Config *nm_ip4_config_copy (NMIP4Config *src_config)
for (i = 0; i < len; i++)
nm_ip4_config_add_domain (dst_config, nm_ip4_config_get_domain (src_config, i));
len = nm_ip4_config_get_num_nis_servers (src_config);
for (i = 0; i < len; i++)
nm_ip4_config_add_nis_server (dst_config, nm_ip4_config_get_nis_server (src_config, i));
return dst_config;
}
@ -99,9 +108,11 @@ void nm_ip4_config_unref (NMIP4Config *config)
config->refcount--;
if (config->refcount <= 0)
{
g_free (config->nis_domain);
g_slist_free (config->nameservers);
g_slist_foreach (config->domains, (GFunc) g_free, NULL);
g_slist_free (config->domains);
g_slist_free (config->nis_servers);
memset (config, 0, sizeof (NMIP4Config));
g_free (config);
@ -204,6 +215,32 @@ guint32 nm_ip4_config_get_num_nameservers (NMIP4Config *config)
return (g_slist_length (config->nameservers));
}
void nm_ip4_config_add_nis_server (NMIP4Config *config, guint32 nis_server)
{
g_return_if_fail (config != NULL);
config->nis_servers = g_slist_append (config->nis_servers, GINT_TO_POINTER (nis_server));
}
guint32 nm_ip4_config_get_nis_server (NMIP4Config *config, guint index)
{
guint nis_server;
g_return_val_if_fail (config != NULL, 0);
g_return_val_if_fail (index < g_slist_length (config->nis_servers), 0);
if ((nis_server = GPOINTER_TO_UINT (g_slist_nth_data (config->nis_servers, index))))
return nis_server;
return 0;
}
guint32 nm_ip4_config_get_num_nis_servers (NMIP4Config *config)
{
g_return_val_if_fail (config != NULL, 0);
return (g_slist_length (config->nis_servers));
}
void nm_ip4_config_add_domain (NMIP4Config *config, const char *domain)
{
g_return_if_fail (config != NULL);
@ -215,6 +252,23 @@ void nm_ip4_config_add_domain (NMIP4Config *config, const char *domain)
config->domains = g_slist_append (config->domains, g_strdup (domain));
}
void nm_ip4_config_set_nis_domain (NMIP4Config *config, const char *domain)
{
g_return_if_fail (config != NULL);
g_return_if_fail (domain != NULL);
if (!strlen (domain))
return;
config->nis_domain = g_strdup(domain);
}
gchar *nm_ip4_config_get_nis_domain (NMIP4Config *config)
{
g_return_val_if_fail( config != NULL, NULL);
return config->nis_domain;
}
const char *nm_ip4_config_get_domain (NMIP4Config *config, guint index)
{
const char *domain;

View file

@ -51,6 +51,13 @@ void nm_ip4_config_add_nameserver (NMIP4Config *config, guint32 nameserver);
guint32 nm_ip4_config_get_nameserver (NMIP4Config *config, guint index);
guint32 nm_ip4_config_get_num_nameservers (NMIP4Config *config);
void nm_ip4_config_add_nis_server (NMIP4Config *config, guint32 nis_server);
guint32 nm_ip4_config_get_nis_server (NMIP4Config *config, guint index);
guint32 nm_ip4_config_get_num_nis_servers (NMIP4Config *config);
void nm_ip4_config_set_nis_domain (NMIP4Config *config, const char *domain);
gchar *nm_ip4_config_get_nis_domain (NMIP4Config *config);
void nm_ip4_config_add_domain (NMIP4Config *config, const char *domain);
const char * nm_ip4_config_get_domain (NMIP4Config *config, guint index);
guint32 nm_ip4_config_get_num_domains (NMIP4Config *config);