NetworkManager r3878 - in trunk: . system-settings/plugins/ifcfg-fedora
- From: dcbw svn gnome org
- To: svn-commits-list gnome org
- Subject: NetworkManager r3878 - in trunk: . system-settings/plugins/ifcfg-fedora
- Date: Thu, 31 Jul 2008 16:19:28 +0000 (UTC)
Author: dcbw
Date: Thu Jul 31 16:19:28 2008
New Revision: 3878
URL: http://svn.gnome.org/viewvc/NetworkManager?rev=3878&view=rev
Log:
2008-07-31 Dan Williams <dcbw redhat com>
* system-settings/plugins/ifcfg-fedora/plugin.c
system-settings/plugins/ifcfg-fedora/reader.c
- Don't ignore unmanaged devices if their ifcfg file doesn't make a
valid NM connection
Modified:
trunk/ChangeLog
trunk/system-settings/plugins/ifcfg-fedora/common.h
trunk/system-settings/plugins/ifcfg-fedora/plugin.c
trunk/system-settings/plugins/ifcfg-fedora/reader.c
Modified: trunk/system-settings/plugins/ifcfg-fedora/common.h
==============================================================================
--- trunk/system-settings/plugins/ifcfg-fedora/common.h (original)
+++ trunk/system-settings/plugins/ifcfg-fedora/common.h Thu Jul 31 16:19:28 2008
@@ -28,6 +28,9 @@
#define ORIG_TAG ".orig"
#define REJ_TAG ".rej"
+#define IFCFG_PLUGIN_NAME "ifcfg-fedora"
+#define IFCFG_PLUGIN_INFO "(c) 2007 - 2008 Red Hat, Inc. To report bugs please use the NetworkManager mailing list."
+
#include <glib.h>
GQuark ifcfg_plugin_error_quark (void);
Modified: trunk/system-settings/plugins/ifcfg-fedora/plugin.c
==============================================================================
--- trunk/system-settings/plugins/ifcfg-fedora/plugin.c (original)
+++ trunk/system-settings/plugins/ifcfg-fedora/plugin.c Thu Jul 31 16:19:28 2008
@@ -45,9 +45,6 @@
#include "nm-system-config-interface.h"
#include "nm-ifcfg-connection.h"
-#define IFCFG_PLUGIN_NAME "ifcfg-fedora"
-#define IFCFG_PLUGIN_INFO "(c) 2007 - 2008 Red Hat, Inc. To report bugs please use the NetworkManager mailing list."
-
#define IFCFG_DIR SYSCONFDIR"/sysconfig/network-scripts/"
static void system_config_interface_init (NMSystemConfigInterface *system_config_interface_class);
Modified: trunk/system-settings/plugins/ifcfg-fedora/reader.c
==============================================================================
--- trunk/system-settings/plugins/ifcfg-fedora/reader.c (original)
+++ trunk/system-settings/plugins/ifcfg-fedora/reader.c Thu Jul 31 16:19:28 2008
@@ -51,6 +51,7 @@
#include "shvar.h"
#include "reader.h"
+#include "nm-system-config-interface.h"
#define TYPE_ETHERNET "Ethernet"
#define TYPE_WIRELESS "Wireless"
@@ -604,6 +605,7 @@
static NMSetting *
make_wireless_setting (shvarFile *ifcfg,
NMSetting *security,
+ gboolean unmanaged,
GError **error)
{
NMSettingWireless *s_wireless;
@@ -611,6 +613,11 @@
s_wireless = NM_SETTING_WIRELESS (nm_setting_wireless_new ());
+ if (!read_mac_address (ifcfg, &s_wireless->mac_address, error)) {
+ g_object_unref (s_wireless);
+ return NULL;
+ }
+
value = svGetValue (ifcfg, "ESSID");
if (value) {
gsize len = strlen (value);
@@ -627,41 +634,41 @@
g_byte_array_append (s_wireless->ssid, (const guint8 *) value, len);
g_free (value);
} else {
- g_set_error (error, ifcfg_plugin_error_quark (), 0, "Missing SSID");
- goto error;
+ /* Only fail on lack of SSID if device is managed */
+ if (!unmanaged) {
+ g_set_error (error, ifcfg_plugin_error_quark (), 0, "Missing SSID");
+ goto error;
+ }
}
- value = svGetValue (ifcfg, "MODE");
- if (value) {
- char *lcase;
+ if (!unmanaged) {
+ value = svGetValue (ifcfg, "MODE");
+ if (value) {
+ char *lcase;
- lcase = g_ascii_strdown (value, -1);
- g_free (value);
+ lcase = g_ascii_strdown (value, -1);
+ g_free (value);
- if (!strcmp (lcase, "ad-hoc")) {
- s_wireless->mode = g_strdup ("adhoc");
- } else if (!strcmp (lcase, "managed")) {
- s_wireless->mode = g_strdup ("infrastructure");
- } else {
- g_set_error (error, ifcfg_plugin_error_quark (), 0,
- "Invalid mode '%s' (not ad-hoc or managed)",
- lcase);
+ if (!strcmp (lcase, "ad-hoc")) {
+ s_wireless->mode = g_strdup ("adhoc");
+ } else if (!strcmp (lcase, "managed")) {
+ s_wireless->mode = g_strdup ("infrastructure");
+ } else {
+ g_set_error (error, ifcfg_plugin_error_quark (), 0,
+ "Invalid mode '%s' (not ad-hoc or managed)",
+ lcase);
+ g_free (lcase);
+ goto error;
+ }
g_free (lcase);
- goto error;
}
- g_free (lcase);
- }
- if (security)
- s_wireless->security = g_strdup (NM_SETTING_WIRELESS_SECURITY_SETTING_NAME);
+ if (security)
+ s_wireless->security = g_strdup (NM_SETTING_WIRELESS_SECURITY_SETTING_NAME);
- if (!read_mac_address (ifcfg, &s_wireless->mac_address, error)) {
- g_object_unref (s_wireless);
- s_wireless = NULL;
+ // FIXME: channel/freq, other L2 parameters like RTS
}
- // FIXME: channel/freq, other L2 parameters like RTS
-
return NM_SETTING (s_wireless);
error:
@@ -671,12 +678,15 @@
}
static NMConnection *
-wireless_connection_from_ifcfg (const char *file, shvarFile *ifcfg, GError **error)
+wireless_connection_from_ifcfg (const char *file,
+ shvarFile *ifcfg,
+ gboolean unmanaged,
+ GError **error)
{
NMConnection *connection = NULL;
NMSetting *con_setting = NULL;
NMSetting *wireless_setting = NULL;
- NMSettingWireless *tmp;
+ NMSettingWireless *s_wireless;
NMSetting *security_setting = NULL;
char *printable_ssid = NULL;
@@ -694,49 +704,53 @@
/* Wireless security */
security_setting = make_wireless_security_setting (ifcfg, file, error);
- if (*error)
- goto error;
+ if (*error) {
+ g_object_unref (connection);
+ return NULL;
+ }
if (security_setting)
nm_connection_add_setting (connection, security_setting);
/* Wireless */
- wireless_setting = make_wireless_setting (ifcfg, security_setting, error);
- if (!wireless_setting)
- goto error;
-
+ wireless_setting = make_wireless_setting (ifcfg, security_setting, unmanaged, error);
+ if (!wireless_setting) {
+ g_object_unref (connection);
+ return NULL;
+ }
nm_connection_add_setting (connection, wireless_setting);
- tmp = NM_SETTING_WIRELESS (wireless_setting);
- printable_ssid = nm_utils_ssid_to_utf8 ((const char *) tmp->ssid->data,
- (guint32) tmp->ssid->len);
+ s_wireless = (NMSettingWireless *) wireless_setting;
+ if (s_wireless && s_wireless->ssid) {
+ printable_ssid = nm_utils_ssid_to_utf8 ((const char *) s_wireless->ssid->data,
+ (guint32) s_wireless->ssid->len);
+ } else
+ printable_ssid = g_strdup_printf ("unmanaged");
con_setting = make_connection_setting (file, ifcfg,
NM_SETTING_WIRELESS_SETTING_NAME,
printable_ssid);
+ g_free (printable_ssid);
if (!con_setting) {
g_set_error (error, ifcfg_plugin_error_quark (), 0,
"Failed to create connection setting.");
- goto error;
+ g_object_unref (connection);
+ return NULL;
}
nm_connection_add_setting (connection, con_setting);
- if (!nm_connection_verify (connection, error))
- goto error;
+ /* Don't verify if unmanaged since we may not have an SSID or whatever */
+ if (!unmanaged) {
+ if (!nm_connection_verify (connection, error)) {
+ g_object_unref (connection);
+ return NULL;
+ }
+ }
return connection;
-
-error:
- g_free (printable_ssid);
- g_object_unref (connection);
- if (con_setting)
- g_object_unref (con_setting);
- if (wireless_setting)
- g_object_unref (wireless_setting);
- return NULL;
}
static NMSetting *
-make_wired_setting (shvarFile *ifcfg, GError **error)
+make_wired_setting (shvarFile *ifcfg, gboolean unmanaged, GError **error)
{
NMSettingWired *s_wired;
char *value;
@@ -750,10 +764,8 @@
if (mtu >= 0 && mtu < 65536)
s_wired->mtu = mtu;
} else {
- g_set_error (error, ifcfg_plugin_error_quark (), 0,
- "Invalid MTU '%s'", value);
- g_object_unref (s_wired);
- s_wired = NULL;
+ /* Shouldn't be fatal... */
+ PLUGIN_PRINT (IFCFG_PLUGIN_NAME, " warning: invalid MTU '%s'", value);
}
g_free (value);
}
@@ -767,7 +779,10 @@
}
static NMConnection *
-wired_connection_from_ifcfg (const char *file, shvarFile *ifcfg, GError **error)
+wired_connection_from_ifcfg (const char *file,
+ shvarFile *ifcfg,
+ gboolean unmanaged,
+ GError **error)
{
NMConnection *connection = NULL;
NMSetting *con_setting = NULL;
@@ -787,28 +802,24 @@
if (!con_setting) {
g_set_error (error, ifcfg_plugin_error_quark (), 0,
"Failed to create connection setting.");
- goto error;
+ g_object_unref (connection);
+ return NULL;
}
nm_connection_add_setting (connection, con_setting);
- wired_setting = make_wired_setting (ifcfg, error);
- if (!wired_setting)
- goto error;
-
+ wired_setting = make_wired_setting (ifcfg, unmanaged, error);
+ if (!wired_setting) {
+ g_object_unref (connection);
+ return NULL;
+ }
nm_connection_add_setting (connection, wired_setting);
- if (!nm_connection_verify (connection, error))
- goto error;
+ if (!nm_connection_verify (connection, error)) {
+ g_object_unref (connection);
+ return NULL;
+ }
return connection;
-
-error:
- g_object_unref (connection);
- if (con_setting)
- g_object_unref (con_setting);
- if (wired_setting)
- g_object_unref (wired_setting);
- return NULL;
}
static gboolean
@@ -933,9 +944,9 @@
}
if (!strcmp (type, TYPE_ETHERNET))
- connection = wired_connection_from_ifcfg (filename, parsed, error);
+ connection = wired_connection_from_ifcfg (filename, parsed, *ignored, error);
else if (!strcmp (type, TYPE_WIRELESS))
- connection = wireless_connection_from_ifcfg (filename, parsed, error);
+ connection = wireless_connection_from_ifcfg (filename, parsed, *ignored, error);
else {
g_set_error (error, ifcfg_plugin_error_quark (), 0,
"Unknown connection type '%s'", type);
@@ -943,7 +954,8 @@
g_free (type);
- if (!connection)
+ /* Don't bother reading the connection fully if it's unmanaged */
+ if (!connection || *ignored)
goto done;
s_ip4 = make_ip4_setting (parsed, error);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]