summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Winship <danw@gnome.org>2014-07-25 08:39:17 -0400
committerDan Winship <danw@gnome.org>2014-07-25 08:44:24 -0400
commitf5bc4ed3331f6b32c5e5d7d500e742a5e7623644 (patch)
treeffc583c90375dd6cec3d690ea9a52f3f1f443065
parent23a475ae181acd57c492bdbe4e39bab939026cf0 (diff)
downloadnetwork-manager-applet-f5bc4ed3331f6b32c5e5d7d500e742a5e7623644.tar.gz
connection-editor: factor out the code for deciding ip4/ip6 support
-rw-r--r--src/connection-editor/connection-helpers.c35
-rw-r--r--src/connection-editor/connection-helpers.h3
-rw-r--r--src/connection-editor/nm-connection-editor.c16
3 files changed, 43 insertions, 11 deletions
diff --git a/src/connection-editor/connection-helpers.c b/src/connection-editor/connection-helpers.c
index d346532f..d99e7d8f 100644
--- a/src/connection-editor/connection-helpers.c
+++ b/src/connection-editor/connection-helpers.c
@@ -590,3 +590,38 @@ delete_connection (GtkWindow *parent_window,
nm_remote_connection_delete (connection, delete_cb, info);
}
+
+gboolean
+connection_supports_ip4 (NMConnection *connection)
+{
+ NMSettingConnection *s_con;
+
+ g_return_val_if_fail (NM_IS_CONNECTION (connection), FALSE);
+
+ s_con = nm_connection_get_setting_connection (connection);
+ return (nm_setting_connection_get_slave_type (s_con) == NULL);
+}
+
+gboolean
+connection_supports_ip6 (NMConnection *connection)
+{
+ NMSettingConnection *s_con;
+ const char *connection_type;
+
+ g_return_val_if_fail (NM_IS_CONNECTION (connection), FALSE);
+
+ s_con = nm_connection_get_setting_connection (connection);
+ if (nm_setting_connection_get_slave_type (s_con) != NULL)
+ return FALSE;
+
+ connection_type = nm_setting_connection_get_connection_type (s_con);
+ if (!strcmp (connection_type, NM_SETTING_VPN_SETTING_NAME))
+ return vpn_supports_ipv6 (connection);
+ else if (!strcmp (connection_type, NM_SETTING_PPPOE_SETTING_NAME))
+ return FALSE;
+ else if ( !strcmp (connection_type, NM_SETTING_GSM_SETTING_NAME)
+ || !strcmp (connection_type, NM_SETTING_CDMA_SETTING_NAME))
+ return FALSE;
+ else
+ return TRUE;
+}
diff --git a/src/connection-editor/connection-helpers.h b/src/connection-editor/connection-helpers.h
index cef2afed..ae60ec0e 100644
--- a/src/connection-editor/connection-helpers.h
+++ b/src/connection-editor/connection-helpers.h
@@ -67,5 +67,8 @@ void delete_connection (GtkWindow *parent_window,
DeleteConnectionResultFunc result_func,
gpointer user_data);
+gboolean connection_supports_ip4 (NMConnection *connection);
+gboolean connection_supports_ip6 (NMConnection *connection);
+
#endif /* __CONNECTION_HELPERS_H__ */
diff --git a/src/connection-editor/nm-connection-editor.c b/src/connection-editor/nm-connection-editor.c
index b3a3772f..00a0f98b 100644
--- a/src/connection-editor/nm-connection-editor.c
+++ b/src/connection-editor/nm-connection-editor.c
@@ -729,7 +729,6 @@ nm_connection_editor_set_connection (NMConnectionEditor *editor,
const char *slave_type;
gboolean success = FALSE;
GSList *iter, *copy;
- gboolean add_ip4 = TRUE, add_ip6 = TRUE;
g_return_val_if_fail (NM_IS_CONNECTION_EDITOR (editor), FALSE);
g_return_val_if_fail (NM_IS_CONNECTION (orig_connection), FALSE);
@@ -767,7 +766,6 @@ nm_connection_editor_set_connection (NMConnectionEditor *editor,
} else if (!strcmp (connection_type, NM_SETTING_VPN_SETTING_NAME)) {
if (!add_page (editor, ce_page_vpn_new, editor->connection, error))
goto out;
- add_ip6 = vpn_supports_ipv6 (editor->connection);
} else if (!strcmp (connection_type, NM_SETTING_PPPOE_SETTING_NAME)) {
if (!add_page (editor, ce_page_dsl_new, editor->connection, error))
goto out;
@@ -775,14 +773,12 @@ nm_connection_editor_set_connection (NMConnectionEditor *editor,
goto out;
if (!add_page (editor, ce_page_ppp_new, editor->connection, error))
goto out;
- add_ip6 = FALSE;
} else if (!strcmp (connection_type, NM_SETTING_GSM_SETTING_NAME) ||
!strcmp (connection_type, NM_SETTING_CDMA_SETTING_NAME)) {
if (!add_page (editor, ce_page_mobile_new, editor->connection, error))
goto out;
if (!add_page (editor, ce_page_ppp_new, editor->connection, error))
goto out;
- add_ip6 = FALSE;
} else if (!strcmp (connection_type, NM_SETTING_WIMAX_SETTING_NAME)) {
if (!add_page (editor, ce_page_wimax_new, editor->connection, error))
goto out;
@@ -806,21 +802,19 @@ nm_connection_editor_set_connection (NMConnectionEditor *editor,
}
slave_type = nm_setting_connection_get_slave_type (s_con);
- if (!g_strcmp0 (slave_type, NM_SETTING_BOND_SETTING_NAME))
- add_ip4 = add_ip6 = FALSE;
- else if (!g_strcmp0 (slave_type, NM_SETTING_TEAM_SETTING_NAME)) {
- add_ip4 = add_ip6 = FALSE;
+ if (!g_strcmp0 (slave_type, NM_SETTING_TEAM_SETTING_NAME)) {
if (!add_page (editor, ce_page_team_port_new, editor->connection, error))
goto out;
} else if (!g_strcmp0 (slave_type, NM_SETTING_BRIDGE_SETTING_NAME)) {
- add_ip4 = add_ip6 = FALSE;
if (!add_page (editor, ce_page_bridge_port_new, editor->connection, error))
goto out;
}
- if (add_ip4 && !add_page (editor, ce_page_ip4_new, editor->connection, error))
+ if ( connection_supports_ip4 (editor->connection)
+ && !add_page (editor, ce_page_ip4_new, editor->connection, error))
goto out;
- if (add_ip6 && !add_page (editor, ce_page_ip6_new, editor->connection, error))
+ if ( connection_supports_ip6 (editor->connection)
+ && !add_page (editor, ce_page_ip6_new, editor->connection, error))
goto out;
/* After all pages are created, then kick off secrets requests that any