|
Packit Service |
d328f3 |
// SPDX-License-Identifier: GPL-2.0+
|
|
Packit Service |
d328f3 |
/* NetworkManager Connection editor -- Connection editor for NetworkManager
|
|
Packit Service |
d328f3 |
*
|
|
Packit Service |
d328f3 |
* Dan Williams <dcbw@redhat.com>
|
|
Packit Service |
d328f3 |
*
|
|
Packit Service |
d328f3 |
* Copyright 2008 - 2014 Red Hat, Inc.
|
|
Packit Service |
d328f3 |
*/
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
#include "nm-default.h"
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
#include <string.h>
|
|
Packit Service |
d328f3 |
#include <linux/if.h>
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
#include "page-dsl.h"
|
|
Packit Service |
d328f3 |
#include "nm-connection-editor.h"
|
|
Packit Service |
d328f3 |
#include "nm-utils/nm-shared-utils.h"
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
G_DEFINE_TYPE (CEPageDsl, ce_page_dsl, CE_TYPE_PAGE)
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
#define CE_PAGE_DSL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), CE_TYPE_PAGE_DSL, CEPageDslPrivate))
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
typedef struct {
|
|
Packit Service |
d328f3 |
NMSettingPppoe *setting;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
GtkComboBoxText *parent;
|
|
Packit Service |
d328f3 |
GtkEntry *interface;
|
|
Packit Service |
d328f3 |
GtkLabel *interface_label;
|
|
Packit Service |
d328f3 |
GtkToggleButton *claim;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
GtkEntry *username;
|
|
Packit Service |
d328f3 |
GtkEntry *password;
|
|
Packit Service |
d328f3 |
GtkEntry *service;
|
|
Packit Service |
d328f3 |
} CEPageDslPrivate;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
/* The parent property is available in libnm 1.10, but since we only
|
|
Packit Service |
d328f3 |
* require 1.8 at the moment, enable it only when detected at runtime.
|
|
Packit Service |
d328f3 |
*/
|
|
Packit Service |
d328f3 |
static gboolean parent_supported;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
static void
|
|
Packit Service |
d328f3 |
find_unused_interface_name (NMClient *client, char *buf, gsize size)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
const GPtrArray *connections;
|
|
Packit Service |
d328f3 |
NMConnection *con;
|
|
Packit Service |
d328f3 |
const char *iface;
|
|
Packit Service |
d328f3 |
gint64 num, ppp_num = 0;
|
|
Packit Service |
d328f3 |
int i;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
connections = nm_client_get_connections (client);
|
|
Packit Service |
d328f3 |
for (i = 0; i < connections->len; i++) {
|
|
Packit Service |
d328f3 |
con = connections->pdata[i];
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
if (!nm_connection_is_type (con, NM_SETTING_PPPOE_SETTING_NAME))
|
|
Packit Service |
d328f3 |
continue;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
iface = nm_connection_get_interface_name (con);
|
|
Packit Service |
d328f3 |
if (iface && g_str_has_prefix (iface, "ppp")) {
|
|
Packit Service |
d328f3 |
num = _nm_utils_ascii_str_to_int64 (iface + 3, 10, 0, G_MAXUINT32, -1);
|
|
Packit Service |
d328f3 |
if (num >= ppp_num)
|
|
Packit Service |
d328f3 |
ppp_num = num + 1;
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
g_snprintf (buf, size, "ppp%u", (unsigned) ppp_num);
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
static void
|
|
Packit Service |
d328f3 |
claim_toggled (GtkToggleButton *button, gpointer user_data)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
CEPageDslPrivate *priv = CE_PAGE_DSL_GET_PRIVATE (user_data);
|
|
Packit Service |
d328f3 |
gboolean active = gtk_toggle_button_get_active (button);
|
|
Packit Service |
d328f3 |
char ifname[IFNAMSIZ];
|
|
Packit Service |
d328f3 |
const char *str;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
gtk_widget_set_sensitive (GTK_WIDGET (priv->interface), !active);
|
|
Packit Service |
d328f3 |
if (!active) {
|
|
Packit Service |
d328f3 |
str = gtk_entry_get_text (priv->interface);
|
|
Packit Service |
d328f3 |
if (!str || !str[0]) {
|
|
Packit Service |
d328f3 |
find_unused_interface_name (CE_PAGE (user_data)->client, ifname, sizeof (ifname));
|
|
Packit Service |
d328f3 |
gtk_entry_set_text (priv->interface, ifname);
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
ce_page_changed (CE_PAGE (user_data));
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
static void
|
|
Packit Service |
d328f3 |
dsl_private_init (CEPageDsl *self)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
CEPageDslPrivate *priv = CE_PAGE_DSL_GET_PRIVATE (self);
|
|
Packit Service |
d328f3 |
GtkBuilder *builder;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
builder = CE_PAGE (self)->builder;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
priv->parent = GTK_COMBO_BOX_TEXT (gtk_builder_get_object (builder, "dsl_parent"));
|
|
Packit Service |
d328f3 |
priv->interface = GTK_ENTRY (gtk_builder_get_object (builder, "dsl_interface"));
|
|
Packit Service |
d328f3 |
priv->interface_label = GTK_LABEL (gtk_builder_get_object (builder, "dsl_interface_label"));
|
|
Packit Service |
d328f3 |
priv->claim = GTK_TOGGLE_BUTTON (gtk_builder_get_object (builder, "dsl_claim_button"));
|
|
Packit Service |
d328f3 |
priv->username = GTK_ENTRY (gtk_builder_get_object (builder, "dsl_username"));
|
|
Packit Service |
d328f3 |
priv->password = GTK_ENTRY (gtk_builder_get_object (builder, "dsl_password"));
|
|
Packit Service |
d328f3 |
priv->service = GTK_ENTRY (gtk_builder_get_object (builder, "dsl_service"));
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
static void
|
|
Packit Service |
d328f3 |
populate_ui (CEPageDsl *self, NMConnection *connection)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
CEPageDslPrivate *priv = CE_PAGE_DSL_GET_PRIVATE (self);
|
|
Packit Service |
d328f3 |
NMSettingPppoe *setting = priv->setting;
|
|
Packit Service |
d328f3 |
gs_free char *parent = NULL;
|
|
Packit Service |
d328f3 |
const char *str = NULL;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
gtk_widget_set_visible (GTK_WIDGET (priv->interface), parent_supported);
|
|
Packit Service |
d328f3 |
gtk_widget_set_visible (GTK_WIDGET (priv->interface_label), parent_supported);
|
|
Packit Service |
d328f3 |
gtk_widget_set_visible (GTK_WIDGET (priv->claim), parent_supported);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
if (parent_supported)
|
|
Packit Service |
d328f3 |
g_object_get (setting, "parent", &parent, NULL);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
if (parent) {
|
|
Packit Service |
d328f3 |
gtk_toggle_button_set_active (priv->claim, FALSE);
|
|
Packit Service |
d328f3 |
ce_page_setup_device_combo (CE_PAGE (self), GTK_COMBO_BOX (priv->parent),
|
|
Packit Service |
d328f3 |
G_TYPE_NONE, parent,
|
|
Packit Service |
d328f3 |
NULL, NULL);
|
|
Packit Service |
d328f3 |
str = nm_connection_get_interface_name (CE_PAGE (self)->connection);
|
|
Packit Service |
d328f3 |
if (str)
|
|
Packit Service |
d328f3 |
gtk_entry_set_text (priv->interface, str);
|
|
Packit Service |
d328f3 |
} else {
|
|
Packit Service |
d328f3 |
gtk_toggle_button_set_active (priv->claim, TRUE);
|
|
Packit Service |
d328f3 |
str = nm_connection_get_interface_name (CE_PAGE (self)->connection);
|
|
Packit Service |
d328f3 |
ce_page_setup_device_combo (CE_PAGE (self), GTK_COMBO_BOX (priv->parent),
|
|
Packit Service |
d328f3 |
G_TYPE_NONE, str,
|
|
Packit Service |
d328f3 |
NULL, NULL);
|
|
Packit Service |
d328f3 |
gtk_entry_set_text (priv->interface, "");
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
claim_toggled (priv->claim, self);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
str = nm_setting_pppoe_get_username (setting);
|
|
Packit Service |
d328f3 |
if (str)
|
|
Packit Service |
d328f3 |
gtk_entry_set_text (priv->username, str);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
/* Grab password from keyring if possible */
|
|
Packit Service |
d328f3 |
str = nm_setting_pppoe_get_password (setting);
|
|
Packit Service |
d328f3 |
if (str)
|
|
Packit Service |
d328f3 |
gtk_entry_set_text (priv->password, str);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
str = nm_setting_pppoe_get_service (setting);
|
|
Packit Service |
d328f3 |
if (str)
|
|
Packit Service |
d328f3 |
gtk_entry_set_text (priv->service, str);
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
static void
|
|
Packit Service |
d328f3 |
stuff_changed (GtkEditable *editable, gpointer user_data)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
ce_page_changed (CE_PAGE (user_data));
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
static void
|
|
Packit Service |
d328f3 |
show_password (GtkToggleButton *button, gpointer user_data)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
CEPageDslPrivate *priv = CE_PAGE_DSL_GET_PRIVATE (user_data);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
gtk_entry_set_visibility (priv->password, gtk_toggle_button_get_active (button));
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
static void
|
|
Packit Service |
d328f3 |
finish_setup (CEPageDsl *self, gpointer user_data)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
CEPage *parent = CE_PAGE (self);
|
|
Packit Service |
d328f3 |
CEPageDslPrivate *priv = CE_PAGE_DSL_GET_PRIVATE (self);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
populate_ui (self, parent->connection);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
g_signal_connect (priv->parent, "changed", G_CALLBACK (stuff_changed), self);
|
|
Packit Service |
d328f3 |
g_signal_connect (priv->interface, "changed", G_CALLBACK (stuff_changed), self);
|
|
Packit Service |
d328f3 |
g_signal_connect (priv->username, "changed", G_CALLBACK (stuff_changed), self);
|
|
Packit Service |
d328f3 |
g_signal_connect (priv->password, "changed", G_CALLBACK (stuff_changed), self);
|
|
Packit Service |
d328f3 |
g_signal_connect (priv->service, "changed", G_CALLBACK (stuff_changed), self);
|
|
Packit Service |
d328f3 |
g_signal_connect (priv->claim, "toggled", G_CALLBACK (claim_toggled), self);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
g_signal_connect (GTK_WIDGET (gtk_builder_get_object (parent->builder, "dsl_show_password")), "toggled",
|
|
Packit Service |
d328f3 |
G_CALLBACK (show_password), self);
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
CEPage *
|
|
Packit Service |
d328f3 |
ce_page_dsl_new (NMConnectionEditor *editor,
|
|
Packit Service |
d328f3 |
NMConnection *connection,
|
|
Packit Service |
d328f3 |
GtkWindow *parent_window,
|
|
Packit Service |
d328f3 |
NMClient *client,
|
|
Packit Service |
d328f3 |
const char **out_secrets_setting_name,
|
|
Packit Service |
d328f3 |
GError **error)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
CEPageDsl *self;
|
|
Packit Service |
d328f3 |
CEPageDslPrivate *priv;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
self = CE_PAGE_DSL (ce_page_new (CE_TYPE_PAGE_DSL,
|
|
Packit Service |
d328f3 |
editor,
|
|
Packit Service |
d328f3 |
connection,
|
|
Packit Service |
d328f3 |
parent_window,
|
|
Packit Service |
d328f3 |
client,
|
|
Packit Service |
d328f3 |
"/org/gnome/nm_connection_editor/ce-page-dsl.ui",
|
|
Packit Service |
d328f3 |
"DslPage",
|
|
Packit Service |
d328f3 |
_("DSL/PPPoE")));
|
|
Packit Service |
d328f3 |
if (!self) {
|
|
Packit Service |
d328f3 |
g_set_error_literal (error, NMA_ERROR, NMA_ERROR_GENERIC, _("Could not load DSL user interface."));
|
|
Packit Service |
d328f3 |
return NULL;
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
dsl_private_init (self);
|
|
Packit Service |
d328f3 |
priv = CE_PAGE_DSL_GET_PRIVATE (self);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
priv->setting = nm_connection_get_setting_pppoe (connection);
|
|
Packit Service |
d328f3 |
if (!priv->setting) {
|
|
Packit Service |
d328f3 |
priv->setting = NM_SETTING_PPPOE (nm_setting_pppoe_new ());
|
|
Packit Service |
d328f3 |
nm_connection_add_setting (connection, NM_SETTING (priv->setting));
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
g_signal_connect (self, CE_PAGE_INITIALIZED, G_CALLBACK (finish_setup), NULL);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
*out_secrets_setting_name = NM_SETTING_PPPOE_SETTING_NAME;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
return CE_PAGE (self);
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
static void
|
|
Packit Service |
d328f3 |
ui_to_setting (CEPageDsl *self)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
CEPageDslPrivate *priv = CE_PAGE_DSL_GET_PRIVATE (self);
|
|
Packit Service |
d328f3 |
const char *interface, *username, *password, *service;
|
|
Packit Service |
d328f3 |
gs_free char *parent = NULL;
|
|
Packit Service |
d328f3 |
NMSettingConnection *s_con;
|
|
Packit Service |
d328f3 |
GtkWidget *entry;
|
|
Packit Service |
d328f3 |
gboolean claim;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
s_con = nm_connection_get_setting_connection (CE_PAGE (self)->connection);
|
|
Packit Service |
d328f3 |
g_return_if_fail (s_con);
|
|
Packit Service |
d328f3 |
claim = gtk_toggle_button_get_active (priv->claim);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
if (parent_supported && !claim) {
|
|
Packit Service |
d328f3 |
interface = gtk_entry_get_text (priv->interface);
|
|
Packit Service |
d328f3 |
g_object_set (s_con,
|
|
Packit Service |
d328f3 |
NM_SETTING_CONNECTION_INTERFACE_NAME,
|
|
Packit Service |
d328f3 |
interface && interface[0] ? interface : NULL,
|
|
Packit Service |
d328f3 |
NULL);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
nm_connection_remove_setting (CE_PAGE (self)->connection, NM_TYPE_SETTING_WIRED);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
entry = gtk_bin_get_child (GTK_BIN (priv->parent));
|
|
Packit Service |
d328f3 |
if (entry) {
|
|
Packit Service |
d328f3 |
ce_page_device_entry_get (GTK_ENTRY (entry), ARPHRD_ETHER, TRUE,
|
|
Packit Service |
d328f3 |
&parent, NULL, NULL, NULL);
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
g_object_set (priv->setting,
|
|
Packit Service |
d328f3 |
"parent", parent,
|
|
Packit Service |
d328f3 |
NULL);
|
|
Packit Service |
d328f3 |
} else {
|
|
Packit Service |
d328f3 |
entry = gtk_bin_get_child (GTK_BIN (priv->parent));
|
|
Packit Service |
d328f3 |
if (entry) {
|
|
Packit Service |
d328f3 |
ce_page_device_entry_get (GTK_ENTRY (entry), ARPHRD_ETHER, TRUE,
|
|
Packit Service |
d328f3 |
&parent, NULL, NULL, NULL);
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
g_object_set (s_con,
|
|
Packit Service |
d328f3 |
NM_SETTING_CONNECTION_INTERFACE_NAME,
|
|
Packit Service |
d328f3 |
parent && parent[0] ? parent : NULL,
|
|
Packit Service |
d328f3 |
NULL);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
g_object_set (priv->setting,
|
|
Packit Service |
d328f3 |
"parent", NULL,
|
|
Packit Service |
d328f3 |
NULL);
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
username = gtk_entry_get_text (priv->username);
|
|
Packit Service |
d328f3 |
if (username && strlen (username) < 1)
|
|
Packit Service |
d328f3 |
username = NULL;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
password = gtk_entry_get_text (priv->password);
|
|
Packit Service |
d328f3 |
if (password && strlen (password) < 1)
|
|
Packit Service |
d328f3 |
password = NULL;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
service = gtk_entry_get_text (priv->service);
|
|
Packit Service |
d328f3 |
if (service && strlen (service) < 1)
|
|
Packit Service |
d328f3 |
service = NULL;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
g_object_set (priv->setting,
|
|
Packit Service |
d328f3 |
NM_SETTING_PPPOE_USERNAME, username,
|
|
Packit Service |
d328f3 |
NM_SETTING_PPPOE_PASSWORD, password,
|
|
Packit Service |
d328f3 |
NM_SETTING_PPPOE_SERVICE, service,
|
|
Packit Service |
d328f3 |
NULL);
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
static gboolean
|
|
Packit Service |
d328f3 |
ce_page_validate_v (CEPage *page, NMConnection *connection, GError **error)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
CEPageDsl *self = CE_PAGE_DSL (page);
|
|
Packit Service |
d328f3 |
CEPageDslPrivate *priv = CE_PAGE_DSL_GET_PRIVATE (self);
|
|
Packit Service |
d328f3 |
gs_free char *parent = NULL;
|
|
Packit Service |
d328f3 |
GtkWidget *entry;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
if (parent_supported) {
|
|
Packit Service |
d328f3 |
entry = gtk_bin_get_child (GTK_BIN (priv->parent));
|
|
Packit Service |
d328f3 |
if (entry) {
|
|
Packit Service |
d328f3 |
ce_page_device_entry_get (GTK_ENTRY (entry), ARPHRD_ETHER, TRUE,
|
|
Packit Service |
d328f3 |
&parent, NULL, NULL, NULL);
|
|
Packit Service |
d328f3 |
if (!parent || !parent[0]) {
|
|
Packit Service |
d328f3 |
g_set_error_literal (error, NMA_ERROR, NMA_ERROR_GENERIC,
|
|
Packit Service |
d328f3 |
_("missing parent interface"));
|
|
Packit Service |
d328f3 |
return FALSE;
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
ui_to_setting (self);
|
|
Packit Service |
d328f3 |
return nm_setting_verify (NM_SETTING (priv->setting), connection, error);
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
static void
|
|
Packit Service |
d328f3 |
ce_page_dsl_init (CEPageDsl *self)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
static void
|
|
Packit Service |
d328f3 |
ce_page_dsl_class_init (CEPageDslClass *dsl_class)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
GObjectClass *object_class = G_OBJECT_CLASS (dsl_class);
|
|
Packit Service |
d328f3 |
CEPageClass *parent_class = CE_PAGE_CLASS (dsl_class);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
g_type_class_add_private (object_class, sizeof (CEPageDslPrivate));
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
/* virtual methods */
|
|
Packit Service |
d328f3 |
parent_class->ce_page_validate_v = ce_page_validate_v;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
parent_supported = !!nm_g_object_class_find_property_from_gtype (NM_TYPE_SETTING_PPPOE,
|
|
Packit Service |
d328f3 |
"parent");
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
void
|
|
Packit Service |
d328f3 |
dsl_connection_new (FUNC_TAG_PAGE_NEW_CONNECTION_IMPL,
|
|
Packit Service |
d328f3 |
GtkWindow *parent,
|
|
Packit Service |
d328f3 |
const char *detail,
|
|
Packit Service |
d328f3 |
gpointer detail_data,
|
|
Packit Service |
d328f3 |
NMConnection *connection,
|
|
Packit Service |
d328f3 |
NMClient *client,
|
|
Packit Service |
d328f3 |
PageNewConnectionResultFunc result_func,
|
|
Packit Service |
d328f3 |
gpointer user_data)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
NMSetting *setting;
|
|
Packit Service |
d328f3 |
gs_unref_object NMConnection *connection_tmp = NULL;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
connection = _ensure_connection_other (connection, &connection_tmp);
|
|
Packit Service |
d328f3 |
ce_page_complete_connection (connection,
|
|
Packit Service |
d328f3 |
_("DSL connection %d"),
|
|
Packit Service |
d328f3 |
NM_SETTING_PPPOE_SETTING_NAME,
|
|
Packit Service |
d328f3 |
FALSE,
|
|
Packit Service |
d328f3 |
client);
|
|
Packit Service |
d328f3 |
nm_connection_add_setting (connection, nm_setting_pppoe_new ());
|
|
Packit Service |
d328f3 |
nm_connection_add_setting (connection, nm_setting_wired_new ());
|
|
Packit Service |
d328f3 |
setting = nm_setting_ppp_new ();
|
|
Packit Service |
d328f3 |
/* Set default values for lcp-echo-failure and lcp-echo-interval */
|
|
Packit Service |
d328f3 |
g_object_set (G_OBJECT (setting),
|
|
Packit Service |
d328f3 |
NM_SETTING_PPP_LCP_ECHO_FAILURE, 5,
|
|
Packit Service |
d328f3 |
NM_SETTING_PPP_LCP_ECHO_INTERVAL, 30,
|
|
Packit Service |
d328f3 |
NULL);
|
|
Packit Service |
d328f3 |
nm_connection_add_setting (connection, setting);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
(*result_func) (FUNC_TAG_PAGE_NEW_CONNECTION_RESULT_CALL, connection, FALSE, NULL, user_data);
|
|
Packit Service |
d328f3 |
}
|