diff options
author | Dan Winship <danw@gnome.org> | 2014-07-25 08:39:17 -0400 |
---|---|---|
committer | Dan Winship <danw@gnome.org> | 2014-07-25 08:44:24 -0400 |
commit | f5bc4ed3331f6b32c5e5d7d500e742a5e7623644 (patch) | |
tree | ffc583c90375dd6cec3d690ea9a52f3f1f443065 | |
parent | 23a475ae181acd57c492bdbe4e39bab939026cf0 (diff) | |
download | network-manager-applet-f5bc4ed3331f6b32c5e5d7d500e742a5e7623644.tar.gz |
connection-editor: factor out the code for deciding ip4/ip6 support
-rw-r--r-- | src/connection-editor/connection-helpers.c | 35 | ||||
-rw-r--r-- | src/connection-editor/connection-helpers.h | 3 | ||||
-rw-r--r-- | src/connection-editor/nm-connection-editor.c | 16 |
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 |