diff options
Diffstat (limited to 'net-misc/networkmanager/files/networkmanager-0.8.4-shared-connection.patch')
-rw-r--r-- | net-misc/networkmanager/files/networkmanager-0.8.4-shared-connection.patch | 458 |
1 files changed, 0 insertions, 458 deletions
diff --git a/net-misc/networkmanager/files/networkmanager-0.8.4-shared-connection.patch b/net-misc/networkmanager/files/networkmanager-0.8.4-shared-connection.patch deleted file mode 100644 index 3ce883a..0000000 --- a/net-misc/networkmanager/files/networkmanager-0.8.4-shared-connection.patch +++ /dev/null @@ -1,458 +0,0 @@ -From d252fad6aa69aefa17b592111c2db23864f63907 Mon Sep 17 00:00:00 2001 -From: Mu Qiao <qiaomuf@gentoo.org> -Date: Tue, 25 Jan 2011 10:31:53 +0000 -Subject: [PATCH] shared-connection - -Signed-off-by: Mu Qiao <qiaomuf@gentoo.org> ---- - system-settings/plugins/ifnet/connection_parser.c | 90 ++++++++++++++------ - system-settings/plugins/ifnet/net_parser.c | 55 +++++++----- - system-settings/plugins/ifnet/net_parser.h | 4 +- - system-settings/plugins/ifnet/net_utils.c | 6 +- - .../plugins/ifnet/nm-ifnet-connection.c | 8 +- - system-settings/plugins/ifnet/wpa_parser.c | 21 +++-- - 6 files changed, 122 insertions(+), 62 deletions(-) - -diff --git a/system-settings/plugins/ifnet/connection_parser.c b/system-settings/plugins/ifnet/connection_parser.c -index f9fae51..9b5ddc1 100644 ---- a/system-settings/plugins/ifnet/connection_parser.c -+++ b/system-settings/plugins/ifnet/connection_parser.c -@@ -557,7 +557,7 @@ make_ip4_setting (NMConnection * connection, gchar * conn_name, GError ** error) - - NMSettingIP4Config *ip4_setting = - NM_SETTING_IP4_CONFIG (nm_setting_ip4_config_new ()); -- gchar *value; -+ gchar *value, *method = NULL; - gboolean is_static_block = is_static_ip4 (conn_name); - ip_block *iblock = NULL; - -@@ -569,13 +569,41 @@ make_ip4_setting (NMConnection * connection, gchar * conn_name, GError ** error) - && strstr (value, "nogateway") ? TRUE : FALSE, NULL); - - if (!is_static_block) { -- g_object_set (ip4_setting, -- NM_SETTING_IP4_CONFIG_METHOD, -- NM_SETTING_IP4_CONFIG_METHOD_AUTO, -- NM_SETTING_IP4_CONFIG_NEVER_DEFAULT, FALSE, NULL); -- PLUGIN_PRINT (IFNET_PLUGIN_NAME, "Using DHCP for %s", -- conn_name); -- } else { -+ method = ifnet_get_data (conn_name, "config"); -+ if (!method){ -+ g_set_error (error, ifnet_plugin_error_quark (), 0, -+ "Unknown config for %s", conn_name); -+ g_object_unref (ip4_setting); -+ return; -+ } -+ if (!strcmp (method, "dhcp")) -+ g_object_set (ip4_setting, -+ NM_SETTING_IP4_CONFIG_METHOD, -+ NM_SETTING_IP4_CONFIG_METHOD_AUTO, -+ NM_SETTING_IP4_CONFIG_NEVER_DEFAULT, FALSE, NULL); -+ else if (!strcmp (method, "autoip")){ -+ g_object_set (ip4_setting, -+ NM_SETTING_IP4_CONFIG_METHOD, -+ NM_SETTING_IP4_CONFIG_METHOD_LINK_LOCAL, -+ NM_SETTING_IP4_CONFIG_NEVER_DEFAULT, FALSE, NULL); -+ nm_connection_add_setting (connection, NM_SETTING (ip4_setting)); -+ return; -+ } else if (!strcmp (method, "shared")){ -+ g_object_set (ip4_setting, -+ NM_SETTING_IP4_CONFIG_METHOD, -+ NM_SETTING_IP4_CONFIG_METHOD_SHARED, -+ NM_SETTING_IP4_CONFIG_NEVER_DEFAULT, FALSE, NULL); -+ nm_connection_add_setting (connection, NM_SETTING (ip4_setting)); -+ return; -+ } else { -+ g_set_error (error, ifnet_plugin_error_quark (), 0, -+ "Unknown config for %s", conn_name); -+ g_object_unref (ip4_setting); -+ return; -+ } -+ PLUGIN_PRINT (IFNET_PLUGIN_NAME, "Using %s method for %s", -+ method, conn_name); -+ }else { - iblock = convert_ip4_config_block (conn_name); - if (!iblock) { - g_set_error (error, ifnet_plugin_error_quark (), 0, -@@ -625,7 +653,7 @@ make_ip4_setting (NMConnection * connection, gchar * conn_name, GError ** error) - } - - /* add dhcp hostname and client id */ -- if (!is_static_block) { -+ if (method && !strcmp (method, "dhcp")) { - gchar *dhcp_hostname, *client_id; - - get_dhcp_hostname_and_client_id (&dhcp_hostname, &client_id); -@@ -712,7 +740,6 @@ make_ip4_setting (NMConnection * connection, gchar * conn_name, GError ** error) - iblock = iblock->next; - destroy_ip_block (current_iblock); - } -- - /* Finally add setting to connection */ - nm_connection_add_setting (connection, NM_SETTING (ip4_setting)); - } -@@ -1243,10 +1270,10 @@ parse_wpa_psk (gchar * psk, GError ** error) - * the passphrase contains spaces. - */ - -- p = psk; -- if (p[0] == '"' && psk[strlen (psk) - 1] == '"') -+ p = g_strdup (psk); -+ if (p[0] == '"' && p[strlen (p) - 1] == '"') - quoted = TRUE; -- if (!quoted && (strlen (psk) == 64)) { -+ if (!quoted && (strlen (p) == 64)) { - /* Verify the hex PSK; 64 digits */ - if (!is_hex (p)) { - g_set_error (error, ifnet_plugin_error_quark (), -@@ -1254,7 +1281,7 @@ parse_wpa_psk (gchar * psk, GError ** error) - "Invalid WPA_PSK (contains non-hexadecimal characters)"); - goto out; - } -- hashed = g_strdup (psk); -+ hashed = g_strdup (p); - } else { - strip_string (p, '"'); - -@@ -1276,6 +1303,7 @@ parse_wpa_psk (gchar * psk, GError ** error) - } - - out: -+ g_free (p); - return hashed; - } - -@@ -2085,7 +2113,8 @@ write_wireless_security_setting (NMConnection * connection, - } else if (!strcmp (key_mgmt, "wpa-eap")) { - wpa_set_data (conn_name, "key_mgmt", "WPA-EAP"); - wpa = TRUE; -- } -+ } else -+ PLUGIN_WARN (IFNET_PLUGIN_NAME, "Unknown key_mgmt: %s", key_mgmt); - - if (auth_alg) { - if (!strcmp (auth_alg, "shared")) -@@ -2180,8 +2209,11 @@ write_wireless_security_setting (NMConnection * connection, - g_string_append (quoted, psk); - g_string_append_c (quoted, '"'); - } -- wpa_set_data (conn_name, "psk", -- quoted ? quoted->str : (gchar *) psk); -+ if (psk) -+ wpa_set_data (conn_name, "psk", -+ quoted ? quoted->str : (gchar *) psk); -+ else -+ PLUGIN_WARN (IFNET_PLUGIN_NAME, "Use WPA, but no psk received from NM"); - if (quoted) - g_string_free (quoted, TRUE); - } else -@@ -2190,15 +2222,19 @@ write_wireless_security_setting (NMConnection * connection, - return TRUE; - } - --/* remove old ssid and add new one*/ -+/* Only remove old config when ssid is changed. -+ * See bug #350476. -+ * */ - static void - update_wireless_ssid (NMConnection * connection, gchar * conn_name, - gchar * ssid, gboolean hex) - { -- ifnet_delete_network (conn_name); -- ifnet_add_connection (ssid, "wireless"); -+ if (strcmp (conn_name, ssid)){ -+ ifnet_delete_network (conn_name); -+ wpa_delete_security (conn_name); -+ } - -- wpa_delete_security (conn_name); -+ ifnet_add_network (ssid, "wireless"); - wpa_add_security (ssid); - } - -@@ -2443,7 +2479,11 @@ write_ip4_setting (NMConnection * connection, gchar * conn_name, - } - ifnet_set_data (conn_name, "config", ips->str); - g_string_free (ips, TRUE); -- } else -+ } else if (!strcmp (value, NM_SETTING_IP4_CONFIG_METHOD_SHARED)) -+ ifnet_set_data (conn_name, "config", "shared"); -+ else if (!strcmp (value, NM_SETTING_IP4_CONFIG_METHOD_LINK_LOCAL)) -+ ifnet_set_data (conn_name, "config", "autoip"); -+ else - ifnet_set_data (conn_name, "config", "dhcp"); - - /* DNS Servers */ -@@ -2858,7 +2898,7 @@ get_wired_name () - for (; i < 256; i++) { - gchar *conn_name = g_strdup_printf ("eth%d", i); - -- if (!ifnet_has_connection (conn_name)) { -+ if (!ifnet_has_network (conn_name)) { - return conn_name; - } else - g_free (conn_name); -@@ -2875,7 +2915,7 @@ get_ppp_name () - for (; i < 256; i++) { - gchar *conn_name = g_strdup_printf ("ppp%d", i); - -- if (!ifnet_has_connection (conn_name)) { -+ if (!ifnet_has_network (conn_name)) { - return conn_name; - } else - g_free (conn_name); -@@ -2982,7 +3022,7 @@ ifnet_add_new_connection (NMConnection * connection, - goto out; - } - -- if (ifnet_add_connection (new_name, new_type)) -+ if (ifnet_add_network (new_name, new_type)) - success = - ifnet_update_parsers_by_connection (connection, new_name, - NULL, config_file, -diff --git a/system-settings/plugins/ifnet/net_parser.c b/system-settings/plugins/ifnet/net_parser.c -index b4a381d..de2db8a 100644 ---- a/system-settings/plugins/ifnet/net_parser.c -+++ b/system-settings/plugins/ifnet/net_parser.c -@@ -37,6 +37,9 @@ static GList *functions_list; - /* Used to decide whether to write changes to file*/ - static gboolean net_parser_data_changed = FALSE; - -+static void -+destroy_connection_config (GHashTable * conn); -+ - static GHashTable * - add_new_connection_config (const gchar * type, const gchar * name) - { -@@ -58,8 +61,10 @@ add_new_connection_config (const gchar * type, const gchar * name) - } - - gboolean --ifnet_add_connection (gchar * name, gchar * type) -+ifnet_add_network (gchar * name, gchar * type) - { -+ if (ifnet_has_network (name)) -+ return TRUE; - if (add_new_connection_config (type, name)) { - PLUGIN_PRINT (IFNET_PLUGIN_NAME, "Adding network for %s", name); - net_parser_data_changed = TRUE; -@@ -69,11 +74,27 @@ ifnet_add_connection (gchar * name, gchar * type) - } - - gboolean --ifnet_has_connection (gchar * conn_name) -+ifnet_has_network (gchar * conn_name) - { - return g_hash_table_lookup (conn_table, conn_name) != NULL; - } - -+gboolean -+ifnet_delete_network (gchar * conn_name) -+{ -+ GHashTable *network = NULL; -+ -+ g_return_val_if_fail (conn_table != NULL && conn_name != NULL, FALSE); -+ PLUGIN_PRINT (IFNET_PLUGIN_NAME, "Deleting network for %s", conn_name); -+ network = g_hash_table_lookup (conn_table, conn_name); -+ if (!network) -+ return FALSE; -+ g_hash_table_remove (conn_table, conn_name); -+ destroy_connection_config (network); -+ net_parser_data_changed = TRUE; -+ return TRUE; -+} -+ - static GHashTable * - get_connection_config (gchar * name) - { -@@ -377,21 +398,27 @@ ifnet_set_data (gchar * conn_name, gchar * key, gchar * value) - { - gpointer orin_key = NULL, orin_value = NULL; - GHashTable *conn = g_hash_table_lookup (conn_table, conn_name); -+ gchar *new_value = NULL; - - if (!conn) { - PLUGIN_WARN (IFNET_PLUGIN_NAME, - "%s does not exsit!", conn_name); - return; - } -+ if (value){ -+ new_value = g_strdup (value); -+ strip_string (new_value, '"'); -+ } - /* Remove existing key value pair */ - if (g_hash_table_lookup_extended (conn, key, &orin_key, &orin_value)) { -+ if (new_value && !strcmp (orin_value, new_value)) -+ return; - g_hash_table_remove (conn, orin_key); - g_free (orin_key); - g_free (orin_value); - } -- if (value) -- g_hash_table_insert (conn, g_strdup (key), -- strip_string (g_strdup (value), '"')); -+ if (new_value) -+ g_hash_table_insert (conn, g_strdup (key), new_value); - net_parser_data_changed = TRUE; - } - -@@ -467,7 +494,7 @@ ifnet_flush_to_file (gchar * config_file) - gboolean result = FALSE; - - if (!net_parser_data_changed) -- return FALSE; -+ return TRUE; - if (!conn_table || !global_settings_table) - return FALSE; - -@@ -583,22 +610,6 @@ ifnet_flush_to_file (gchar * config_file) - return result; - } - --gboolean --ifnet_delete_network (gchar * conn_name) --{ -- GHashTable *network = NULL; -- -- g_return_val_if_fail (conn_table != NULL && conn_name != NULL, FALSE); -- PLUGIN_PRINT (IFNET_PLUGIN_NAME, "Deleting network for %s", conn_name); -- network = g_hash_table_lookup (conn_table, conn_name); -- if (!network) -- return FALSE; -- g_hash_table_remove (conn_table, conn_name); -- destroy_connection_config (network); -- net_parser_data_changed = TRUE; -- return TRUE; --} -- - void - ifnet_destroy (void) - { -diff --git a/system-settings/plugins/ifnet/net_parser.h b/system-settings/plugins/ifnet/net_parser.h -index 73a44c8..b71a01f 100644 ---- a/system-settings/plugins/ifnet/net_parser.h -+++ b/system-settings/plugins/ifnet/net_parser.h -@@ -36,11 +36,11 @@ GList *ifnet_get_connection_names (void); - gchar *ifnet_get_data (gchar * conn_name, const gchar * key); - gchar *ifnet_get_global_data (const gchar * key); - gchar *ifnet_get_global_setting (gchar * group, gchar * key); --gboolean ifnet_has_connection (gchar * conn_name); -+gboolean ifnet_has_network (gchar * conn_name); - - /* Writer functions */ - gboolean ifnet_flush_to_file (gchar * config_file); - void ifnet_set_data (gchar * conn_name, gchar * key, gchar * value); --gboolean ifnet_add_connection (gchar * name, gchar * type); -+gboolean ifnet_add_network (gchar * name, gchar * type); - gboolean ifnet_delete_network (gchar * conn_name); - #endif -diff --git a/system-settings/plugins/ifnet/net_utils.c b/system-settings/plugins/ifnet/net_utils.c -index 2dc253c..83b4325 100644 ---- a/system-settings/plugins/ifnet/net_utils.c -+++ b/system-settings/plugins/ifnet/net_utils.c -@@ -278,6 +278,10 @@ is_static_ip4 (gchar * conn_name) - - if (!data) - return FALSE; -+ if (!strcmp (data, "shared")) -+ return FALSE; -+ if (!strcmp (data, "autoip")) -+ return FALSE; - dhcp6 = strstr (data, "dhcp6"); - if (dhcp6) { - gchar *dhcp4; -@@ -942,8 +946,8 @@ get_dhcp_hostname_and_client_id (char **hostname, char **client_id) - else if ((tmp = strstr (line, "send host-name")) != NULL) { - tmp += strlen ("send host-name"); - g_strstrip (tmp); -- strip_string (tmp, '"'); - strip_string (tmp, ';'); -+ strip_string (tmp, '"'); - if (tmp[0] != '\0') - *hostname = g_strdup (tmp); - else -diff --git a/system-settings/plugins/ifnet/nm-ifnet-connection.c b/system-settings/plugins/ifnet/nm-ifnet-connection.c -index e47495c..ebe2581 100644 ---- a/system-settings/plugins/ifnet/nm-ifnet-connection.c -+++ b/system-settings/plugins/ifnet/nm-ifnet-connection.c -@@ -71,12 +71,14 @@ nm_ifnet_connection_new (gchar * conn_name) - { - NMConnection *tmp; - GObject *object; -- GError **error = NULL; -+ GError *error = NULL; - - g_return_val_if_fail (conn_name != NULL, NULL); -- tmp = ifnet_update_connection_from_config_block (conn_name, error); -- if (!tmp) -+ tmp = ifnet_update_connection_from_config_block (conn_name, &error); -+ if (!tmp){ -+ g_error_free (error); - return NULL; -+ } - object = (GObject *) g_object_new (NM_TYPE_IFNET_CONNECTION, - NM_IFNET_CONNECTION_CONN_NAME, - conn_name, NULL); -diff --git a/system-settings/plugins/ifnet/wpa_parser.c b/system-settings/plugins/ifnet/wpa_parser.c -index 5e94108..42c52c3 100644 ---- a/system-settings/plugins/ifnet/wpa_parser.c -+++ b/system-settings/plugins/ifnet/wpa_parser.c -@@ -366,7 +366,7 @@ wpa_flush_to_file (gchar * config_file) - gboolean result = FALSE; - - if (!wpa_parser_data_changed) -- return FALSE; -+ return TRUE; - if (!wsec_table || !wsec_global_table) - return FALSE; - -@@ -450,26 +450,29 @@ wpa_set_data (gchar * ssid, gchar * key, gchar * value) - { - gpointer orig_key = NULL, orig_value = NULL; - GHashTable *security = g_hash_table_lookup (wsec_table, ssid); -+ gchar *new_value = NULL; - - g_return_if_fail (security != NULL); - -+ if (value){ -+ new_value = g_strdup(value); -+ if (strcmp (key, "ssid") != 0 && strcmp (key, "psk") != 0 -+ && !g_str_has_prefix (key, "wep_key")) -+ strip_string (new_value, '"'); -+ } - /* Remove old key value pairs */ - if (g_hash_table_lookup_extended - (security, key, &orig_key, &orig_value)) { -+ if (new_value && !strcmp(orig_value, new_value)) -+ return; - g_hash_table_remove (security, orig_key); - g_free (orig_key); - g_free (orig_value); - } - - /* Add new key value */ -- if (value) { -- gchar *new_value = g_strdup (value); -- -- if (strcmp (key, "ssid") != 0 && strcmp (key, "psk") != 0 -- && !g_str_has_prefix (key, "wep_key")) -- strip_string (new_value, '"'); -+ if (new_value) - g_hash_table_insert (security, g_strdup (key), new_value); -- } - wpa_parser_data_changed = TRUE; - } - -@@ -483,7 +486,7 @@ gboolean - wpa_add_security (gchar * ssid) - { - if (wpa_has_security (ssid)) -- return FALSE; -+ return TRUE; - else { - GHashTable *security = - g_hash_table_new (g_str_hash, g_str_equal); --- -1.7.3.4 - |