2008-07-27 Dan Williams <dcbw@redhat.com>

* system-settings/plugins/ifcfg-fedora/reader.c
		- (make_ip4_setting): fix parsing automatic configs



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3858 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
Dan Williams 2008-07-27 20:00:13 +00:00
parent 65d5338384
commit fab2416151
2 changed files with 55 additions and 47 deletions

View file

@ -1,3 +1,8 @@
2008-07-27 Dan Williams <dcbw@redhat.com>
* system-settings/plugins/ifcfg-fedora/reader.c
- (make_ip4_setting): fix parsing automatic configs
2008-07-27 Dan Williams <dcbw@redhat.com>
* src/dnsmasq-manager/nm-dnsmasq-manager.c

View file

@ -179,56 +179,59 @@ make_ip4_setting (shvarFile *ifcfg, GError **error)
g_free (value);
get_one_ip4_addr (ifcfg, "IPADDR", &tmp.address, error);
if (*error)
goto error;
get_one_ip4_addr (ifcfg, "GATEWAY", &tmp.gateway, error);
if (*error)
goto error;
/* If no gateway in the ifcfg, try /etc/sysconfig/network instead */
if (!tmp.gateway) {
shvarFile *network;
network = svNewFile ("/etc/sysconfig/network");
if (network) {
get_one_ip4_addr (network, "GATEWAY", &tmp.gateway, error);
svCloseFile (network);
if (*error)
goto error;
}
}
value = svGetValue (ifcfg, "PREFIX");
if (value) {
long int prefix;
errno = 0;
prefix = strtol (value, NULL, 10);
if (errno || prefix <= 0 || prefix > 32) {
g_set_error (error, ifcfg_plugin_error_quark (), 0,
"Invalid IP4 prefix '%s'", value);
g_free (value);
goto error;
}
tmp.prefix = (guint32) prefix;
g_free (value);
}
/* Fall back to NETMASK if no PREFIX was specified */
if (!tmp.prefix) {
get_one_ip4_addr (ifcfg, "NETMASK", &netmask, error);
/* Handle manual settings */
if (!strcmp (method, NM_SETTING_IP4_CONFIG_METHOD_MANUAL)) {
get_one_ip4_addr (ifcfg, "IPADDR", &tmp.address, error);
if (*error)
goto error;
tmp.prefix = nm_utils_ip4_netmask_to_prefix (netmask);
}
/* Validate the prefix */
if (!tmp.prefix || tmp.prefix > 32) {
g_set_error (error, ifcfg_plugin_error_quark (), 0,
"Invalid IP4 prefix '%d'", tmp.prefix);
goto error;
get_one_ip4_addr (ifcfg, "GATEWAY", &tmp.gateway, error);
if (*error)
goto error;
/* If no gateway in the ifcfg, try /etc/sysconfig/network instead */
if (!tmp.gateway) {
shvarFile *network;
network = svNewFile ("/etc/sysconfig/network");
if (network) {
get_one_ip4_addr (network, "GATEWAY", &tmp.gateway, error);
svCloseFile (network);
if (*error)
goto error;
}
}
value = svGetValue (ifcfg, "PREFIX");
if (value) {
long int prefix;
errno = 0;
prefix = strtol (value, NULL, 10);
if (errno || prefix <= 0 || prefix > 32) {
g_set_error (error, ifcfg_plugin_error_quark (), 0,
"Invalid IP4 prefix '%s'", value);
g_free (value);
goto error;
}
tmp.prefix = (guint32) prefix;
g_free (value);
}
/* Fall back to NETMASK if no PREFIX was specified */
if (!tmp.prefix) {
get_one_ip4_addr (ifcfg, "NETMASK", &netmask, error);
if (*error)
goto error;
tmp.prefix = nm_utils_ip4_netmask_to_prefix (netmask);
}
/* Validate the prefix */
if (!tmp.prefix || tmp.prefix > 32) {
g_set_error (error, ifcfg_plugin_error_quark (), 0,
"Invalid IP4 prefix '%d'", tmp.prefix);
goto error;
}
}
/* Yay, let's make an IP4 config */