[network-manager-applet: 2/6] connection-editor: factor out the code for deciding ip4/ip6 support



commit f5bc4ed3331f6b32c5e5d7d500e742a5e7623644
Author: Dan Winship <danw gnome org>
Date:   Fri Jul 25 08:39:17 2014 -0400

    connection-editor: factor out the code for deciding ip4/ip6 support

 src/connection-editor/connection-helpers.c   |   35 ++++++++++++++++++++++++++
 src/connection-editor/connection-helpers.h   |    3 ++
 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 d346532..d99e7d8 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 cef2afe..ae60ec0 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 b3a3772..00a0f98 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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]