|
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 <math.h>
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
#include "nm-connection-editor.h"
|
|
Packit Service |
d328f3 |
#include "page-wifi.h"
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
G_DEFINE_TYPE (CEPageWifi, ce_page_wifi, CE_TYPE_PAGE)
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
#define CE_PAGE_WIFI_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), CE_TYPE_PAGE_WIFI, CEPageWifiPrivate))
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
typedef struct {
|
|
Packit Service |
d328f3 |
NMSettingWireless *setting;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
GtkEntry *ssid;
|
|
Packit Service |
d328f3 |
GtkComboBoxText *bssid;
|
|
Packit Service |
d328f3 |
GtkComboBoxText *device_combo; /* Device identification (ifname and/or MAC) */
|
|
Packit Service |
d328f3 |
GtkComboBoxText *cloned_mac; /* Cloned MAC - used for MAC spoofing */
|
|
Packit Service |
d328f3 |
GtkComboBox *mode;
|
|
Packit Service |
d328f3 |
GtkComboBox *band;
|
|
Packit Service |
d328f3 |
GtkSpinButton *channel;
|
|
Packit Service |
d328f3 |
GtkSpinButton *rate;
|
|
Packit Service |
d328f3 |
GtkSpinButton *tx_power;
|
|
Packit Service |
d328f3 |
GtkSpinButton *mtu;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
GtkSizeGroup *group;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
int last_channel;
|
|
Packit Service |
d328f3 |
} CEPageWifiPrivate;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
static void
|
|
Packit Service |
d328f3 |
wifi_private_init (CEPageWifi *self)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
CEPageWifiPrivate *priv = CE_PAGE_WIFI_GET_PRIVATE (self);
|
|
Packit Service |
d328f3 |
GtkBuilder *builder;
|
|
Packit Service |
d328f3 |
GtkWidget *widget;
|
|
Packit Service |
d328f3 |
GtkWidget *vbox;
|
|
Packit Service |
d328f3 |
GtkLabel *label;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
builder = CE_PAGE (self)->builder;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
priv->group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
priv->ssid = GTK_ENTRY (gtk_builder_get_object (builder, "wifi_ssid"));
|
|
Packit Service |
d328f3 |
priv->cloned_mac = GTK_COMBO_BOX_TEXT (gtk_builder_get_object (builder, "wifi_cloned_mac"));
|
|
Packit Service |
d328f3 |
priv->mode = GTK_COMBO_BOX (gtk_builder_get_object (builder, "wifi_mode"));
|
|
Packit Service |
d328f3 |
priv->band = GTK_COMBO_BOX (gtk_builder_get_object (builder, "wifi_band"));
|
|
Packit Service |
d328f3 |
priv->channel = GTK_SPIN_BUTTON (gtk_builder_get_object (builder, "wifi_channel"));
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
/* BSSID */
|
|
Packit Service |
d328f3 |
priv->bssid = GTK_COMBO_BOX_TEXT (gtk_combo_box_text_new_with_entry ());
|
|
Packit Service |
d328f3 |
gtk_combo_box_set_entry_text_column (GTK_COMBO_BOX (priv->bssid), 0);
|
|
Packit Service |
d328f3 |
gtk_widget_set_tooltip_text (GTK_WIDGET (priv->bssid),
|
|
Packit Service |
d328f3 |
_("This option locks this connection to the Wi-Fi access point (AP) specified by the BSSID entered here. Example: 00:11:22:33:44:55"));
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
vbox = GTK_WIDGET (gtk_builder_get_object (builder, "wifi_bssid_vbox"));
|
|
Packit Service |
d328f3 |
gtk_container_add (GTK_CONTAINER (vbox), GTK_WIDGET (priv->bssid));
|
|
Packit Service |
d328f3 |
gtk_widget_set_halign (GTK_WIDGET (priv->bssid), GTK_ALIGN_FILL);
|
|
Packit Service |
d328f3 |
gtk_widget_show_all (GTK_WIDGET (priv->bssid));
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
/* Device MAC */
|
|
Packit Service |
d328f3 |
priv->device_combo = GTK_COMBO_BOX_TEXT (gtk_combo_box_text_new_with_entry ());
|
|
Packit Service |
d328f3 |
gtk_combo_box_set_entry_text_column (GTK_COMBO_BOX (priv->device_combo), 0);
|
|
Packit Service |
d328f3 |
gtk_widget_set_tooltip_text (GTK_WIDGET (priv->device_combo),
|
|
Packit Service |
d328f3 |
_("This option locks this connection to the network device specified "
|
|
Packit Service |
d328f3 |
"either by its interface name or permanent MAC or both. Examples: "
|
|
Packit Service |
d328f3 |
"“wlan0”, “3C:97:0E:42:1A:19”, “wlan0 (3C:97:0E:42:1A:19)”"));
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
vbox = GTK_WIDGET (gtk_builder_get_object (builder, "wifi_device_vbox"));
|
|
Packit Service |
d328f3 |
gtk_container_add (GTK_CONTAINER (vbox), GTK_WIDGET (priv->device_combo));
|
|
Packit Service |
d328f3 |
gtk_widget_set_halign (GTK_WIDGET (priv->device_combo), GTK_ALIGN_FILL);
|
|
Packit Service |
d328f3 |
gtk_widget_show_all (GTK_WIDGET (priv->device_combo));
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
/* Set mnemonic widget for Device label */
|
|
Packit Service |
d328f3 |
label = GTK_LABEL (gtk_builder_get_object (builder, "wifi_device_label"));
|
|
Packit Service |
d328f3 |
gtk_label_set_mnemonic_widget (label, GTK_WIDGET (priv->device_combo));
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
priv->rate = GTK_SPIN_BUTTON (gtk_builder_get_object (builder, "wifi_rate"));
|
|
Packit Service |
d328f3 |
widget = GTK_WIDGET (gtk_builder_get_object (builder, "rate_units"));
|
|
Packit Service |
d328f3 |
gtk_size_group_add_widget (priv->group, widget);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
priv->tx_power = GTK_SPIN_BUTTON (gtk_builder_get_object (builder, "wifi_tx_power"));
|
|
Packit Service |
d328f3 |
widget = GTK_WIDGET (gtk_builder_get_object (builder, "tx_power_units"));
|
|
Packit Service |
d328f3 |
gtk_size_group_add_widget (priv->group, widget);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
priv->mtu = GTK_SPIN_BUTTON (gtk_builder_get_object (builder, "wifi_mtu"));
|
|
Packit Service |
d328f3 |
widget = GTK_WIDGET (gtk_builder_get_object (builder, "mtu_units"));
|
|
Packit Service |
d328f3 |
gtk_size_group_add_widget (priv->group, widget);
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
static gboolean
|
|
Packit Service |
d328f3 |
band_helper (CEPageWifi *self, gboolean *aband, gboolean *gband)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
CEPageWifiPrivate *priv = CE_PAGE_WIFI_GET_PRIVATE (self);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
switch (gtk_combo_box_get_active (priv->band)) {
|
|
Packit Service |
d328f3 |
case 1: /* A */
|
|
Packit Service |
d328f3 |
*gband = FALSE;
|
|
Packit Service |
d328f3 |
return TRUE;
|
|
Packit Service |
d328f3 |
case 2: /* B/G */
|
|
Packit Service |
d328f3 |
*aband = FALSE;
|
|
Packit Service |
d328f3 |
return TRUE;
|
|
Packit Service |
d328f3 |
default:
|
|
Packit Service |
d328f3 |
return FALSE;
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
static gint
|
|
Packit Service |
d328f3 |
channel_spin_input_cb (GtkSpinButton *spin, gdouble *new_val, gpointer user_data)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
CEPageWifi *self = CE_PAGE_WIFI (user_data);
|
|
Packit Service |
d328f3 |
gdouble channel;
|
|
Packit Service |
d328f3 |
guint32 int_channel = 0;
|
|
Packit Service |
d328f3 |
gboolean aband = TRUE;
|
|
Packit Service |
d328f3 |
gboolean gband = TRUE;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
if (!band_helper (self, &aband, &gband))
|
|
Packit Service |
d328f3 |
return GTK_INPUT_ERROR;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
channel = g_strtod (gtk_entry_get_text (GTK_ENTRY (spin)), NULL);
|
|
Packit Service |
d328f3 |
if (channel - floor (channel) < ceil (channel) - channel)
|
|
Packit Service |
d328f3 |
int_channel = floor (channel);
|
|
Packit Service |
d328f3 |
else
|
|
Packit Service |
d328f3 |
int_channel = ceil (channel);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
if (nm_utils_wifi_channel_to_freq (int_channel, aband ? "a" : "bg") == -1)
|
|
Packit Service |
d328f3 |
return GTK_INPUT_ERROR;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
*new_val = channel;
|
|
Packit Service |
d328f3 |
return 1;
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
static gint
|
|
Packit Service |
d328f3 |
channel_spin_output_cb (GtkSpinButton *spin, gpointer user_data)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
CEPageWifi *self = CE_PAGE_WIFI (user_data);
|
|
Packit Service |
d328f3 |
CEPageWifiPrivate *priv = CE_PAGE_WIFI_GET_PRIVATE (self);
|
|
Packit Service |
d328f3 |
int channel;
|
|
Packit Service |
d328f3 |
gchar *buf = NULL;
|
|
Packit Service |
d328f3 |
guint32 freq;
|
|
Packit Service |
d328f3 |
gboolean aband = TRUE;
|
|
Packit Service |
d328f3 |
gboolean gband = TRUE;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
if (!band_helper (self, &aband, &gband))
|
|
Packit Service |
d328f3 |
buf = g_strdup (_("default"));
|
|
Packit Service |
d328f3 |
else {
|
|
Packit Service |
d328f3 |
channel = gtk_spin_button_get_value_as_int (spin);
|
|
Packit Service |
d328f3 |
if (channel == 0)
|
|
Packit Service |
d328f3 |
buf = g_strdup (_("default"));
|
|
Packit Service |
d328f3 |
else {
|
|
Packit Service |
d328f3 |
int direction = 0;
|
|
Packit Service |
d328f3 |
freq = nm_utils_wifi_channel_to_freq (channel, aband ? "a" : "bg");
|
|
Packit Service |
d328f3 |
if (freq == -1) {
|
|
Packit Service |
d328f3 |
if (priv->last_channel < channel)
|
|
Packit Service |
d328f3 |
direction = 1;
|
|
Packit Service |
d328f3 |
else if (priv->last_channel > channel)
|
|
Packit Service |
d328f3 |
direction = -1;
|
|
Packit Service |
d328f3 |
channel = nm_utils_wifi_find_next_channel (channel, direction, aband ? "a" : "bg");
|
|
Packit Service |
d328f3 |
gtk_spin_button_set_value (spin, channel);
|
|
Packit Service |
d328f3 |
freq = nm_utils_wifi_channel_to_freq (channel, aband ? "a" : "bg");
|
|
Packit Service |
d328f3 |
if (freq == -1) {
|
|
Packit Service |
d328f3 |
g_warning ("%s: invalid channel %d!", __func__, channel);
|
|
Packit Service |
d328f3 |
gtk_spin_button_set_value (spin, 0);
|
|
Packit Service |
d328f3 |
goto out;
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
/* Set spin button to zero to go to "default" from the lowest channel */
|
|
Packit Service |
d328f3 |
if (direction == -1 && priv->last_channel == channel) {
|
|
Packit Service |
d328f3 |
buf = g_strdup_printf (_("default"));
|
|
Packit Service |
d328f3 |
gtk_spin_button_set_value (spin, 0);
|
|
Packit Service |
d328f3 |
channel = 0;
|
|
Packit Service |
d328f3 |
} else
|
|
Packit Service |
d328f3 |
buf = g_strdup_printf (_("%u (%u MHz)"), channel, freq);
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
priv->last_channel = channel;
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
if (strcmp (buf, gtk_entry_get_text (GTK_ENTRY (spin))))
|
|
Packit Service |
d328f3 |
gtk_entry_set_text (GTK_ENTRY (spin), buf);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
out:
|
|
Packit Service |
d328f3 |
g_free (buf);
|
|
Packit Service |
d328f3 |
return 1;
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
static void
|
|
Packit Service |
d328f3 |
band_value_changed_cb (GtkComboBox *box, gpointer user_data)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
CEPageWifi *self = CE_PAGE_WIFI (user_data);
|
|
Packit Service |
d328f3 |
CEPageWifiPrivate *priv = CE_PAGE_WIFI_GET_PRIVATE (self);
|
|
Packit Service |
d328f3 |
gboolean sensitive;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
priv->last_channel = 0;
|
|
Packit Service |
d328f3 |
gtk_spin_button_set_value (priv->channel, 0);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
switch (gtk_combo_box_get_active (GTK_COMBO_BOX (box))) {
|
|
Packit Service |
d328f3 |
case 1: /* A */
|
|
Packit Service |
d328f3 |
case 2: /* B/G */
|
|
Packit Service |
d328f3 |
sensitive = TRUE;
|
|
Packit Service |
d328f3 |
break;
|
|
Packit Service |
d328f3 |
default:
|
|
Packit Service |
d328f3 |
sensitive = FALSE;
|
|
Packit Service |
d328f3 |
break;
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
gtk_widget_set_sensitive (GTK_WIDGET (priv->channel), sensitive);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
ce_page_changed (CE_PAGE (self));
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
static void
|
|
Packit Service |
d328f3 |
mode_combo_changed_cb (GtkComboBox *combo,
|
|
Packit Service |
d328f3 |
gpointer user_data)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
CEPageWifi *self = CE_PAGE_WIFI (user_data);
|
|
Packit Service |
d328f3 |
CEPageWifiPrivate *priv = CE_PAGE_WIFI_GET_PRIVATE (self);
|
|
Packit Service |
d328f3 |
CEPage *parent = CE_PAGE (self);
|
|
Packit Service |
d328f3 |
GtkWidget *widget_band_label, *widget_chan_label, *widget_bssid_label;
|
|
Packit Service |
d328f3 |
gboolean show_freq = TRUE;
|
|
Packit Service |
d328f3 |
gboolean show_bssid = TRUE;
|
|
Packit Service |
d328f3 |
gboolean hotspot = FALSE;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
switch (gtk_combo_box_get_active (GTK_COMBO_BOX (combo))) {
|
|
Packit Service |
d328f3 |
case 1: /* hotspot */
|
|
Packit Service |
d328f3 |
hotspot = TRUE;
|
|
Packit Service |
d328f3 |
/* fall through */
|
|
Packit Service |
d328f3 |
case 2: /* adhoc */
|
|
Packit Service |
d328f3 |
/* BSSID is random and is created by kernel for Ad-Hoc networks
|
|
Packit Service |
d328f3 |
* http://lxr.linux.no/linux+v3.7.6/net/mac80211/ibss.c#L685
|
|
Packit Service |
d328f3 |
* For AP-mode, the BSSID is the MAC address of the device.
|
|
Packit Service |
d328f3 |
*/
|
|
Packit Service |
d328f3 |
show_bssid = FALSE;
|
|
Packit Service |
d328f3 |
break;
|
|
Packit Service |
d328f3 |
default: /* infrastructure */
|
|
Packit Service |
d328f3 |
break;
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
nm_connection_editor_inter_page_set_value (parent->editor,
|
|
Packit Service |
d328f3 |
INTER_PAGE_CHANGE_WIFI_MODE,
|
|
Packit Service |
d328f3 |
GUINT_TO_POINTER (hotspot));
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
widget_band_label = GTK_WIDGET (gtk_builder_get_object (parent->builder, "wifi_band_label"));
|
|
Packit Service |
d328f3 |
widget_chan_label = GTK_WIDGET (gtk_builder_get_object (parent->builder, "wifi_channel_label"));
|
|
Packit Service |
d328f3 |
widget_bssid_label = GTK_WIDGET (gtk_builder_get_object (parent->builder, "wifi_bssid_label"));
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
gtk_widget_set_visible (widget_band_label, show_freq);
|
|
Packit Service |
d328f3 |
gtk_widget_set_sensitive (widget_band_label, show_freq);
|
|
Packit Service |
d328f3 |
gtk_widget_set_visible (GTK_WIDGET (priv->band), show_freq);
|
|
Packit Service |
d328f3 |
gtk_widget_set_sensitive (GTK_WIDGET (priv->band), show_freq);
|
|
Packit Service |
d328f3 |
gtk_widget_set_visible (widget_chan_label, show_freq);
|
|
Packit Service |
d328f3 |
gtk_widget_set_sensitive (widget_chan_label, show_freq);
|
|
Packit Service |
d328f3 |
gtk_widget_set_visible (GTK_WIDGET (priv->channel), show_freq);
|
|
Packit Service |
d328f3 |
gtk_widget_set_sensitive (GTK_WIDGET (priv->channel), show_freq);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
gtk_widget_set_visible (widget_bssid_label, show_bssid);
|
|
Packit Service |
d328f3 |
gtk_widget_set_sensitive (widget_bssid_label, show_bssid);
|
|
Packit Service |
d328f3 |
gtk_widget_set_visible (GTK_WIDGET (priv->bssid), show_bssid);
|
|
Packit Service |
d328f3 |
gtk_widget_set_sensitive (GTK_WIDGET (priv->bssid), show_bssid);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
ce_page_changed (CE_PAGE (self));
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
static void
|
|
Packit Service |
d328f3 |
populate_ui (CEPageWifi *self)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
CEPageWifiPrivate *priv = CE_PAGE_WIFI_GET_PRIVATE (self);
|
|
Packit Service |
d328f3 |
NMSettingWireless *setting = priv->setting;
|
|
Packit Service |
d328f3 |
GBytes *ssid;
|
|
Packit Service |
d328f3 |
const char *mode;
|
|
Packit Service |
d328f3 |
const char *band;
|
|
Packit Service |
d328f3 |
int band_idx = 0;
|
|
Packit Service |
d328f3 |
int rate_def;
|
|
Packit Service |
d328f3 |
int tx_power_def;
|
|
Packit Service |
d328f3 |
int mtu_def;
|
|
Packit Service |
d328f3 |
char *utf8_ssid;
|
|
Packit Service |
d328f3 |
const char *s_ifname, *s_mac, *s_bssid;
|
|
Packit Service |
d328f3 |
GPtrArray *bssid_array;
|
|
Packit Service |
d328f3 |
char **bssid_list;
|
|
Packit Service |
d328f3 |
guint32 idx;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
rate_def = ce_get_property_default (NM_SETTING (setting), NM_SETTING_WIRELESS_RATE);
|
|
Packit Service |
d328f3 |
ce_spin_automatic_val (priv->mtu, rate_def);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
tx_power_def = ce_get_property_default (NM_SETTING (setting), NM_SETTING_WIRELESS_TX_POWER);
|
|
Packit Service |
d328f3 |
ce_spin_automatic_val (priv->mtu, tx_power_def);
|
|
Packit Service |
d328f3 |
g_signal_connect_swapped (priv->tx_power, "value-changed", G_CALLBACK (ce_page_changed), self);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
mtu_def = ce_get_property_default (NM_SETTING (setting), NM_SETTING_WIRELESS_MTU);
|
|
Packit Service |
d328f3 |
ce_spin_automatic_val (priv->mtu, mtu_def);
|
|
Packit Service |
d328f3 |
g_signal_connect_swapped (priv->mtu, "value-changed", G_CALLBACK (ce_page_changed), self);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
ssid = nm_setting_wireless_get_ssid (setting);
|
|
Packit Service |
d328f3 |
mode = nm_setting_wireless_get_mode (setting);
|
|
Packit Service |
d328f3 |
band = nm_setting_wireless_get_band (setting);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
if (ssid)
|
|
Packit Service |
d328f3 |
utf8_ssid = nm_utils_ssid_to_utf8 (g_bytes_get_data (ssid, NULL),
|
|
Packit Service |
d328f3 |
g_bytes_get_size (ssid));
|
|
Packit Service |
d328f3 |
else
|
|
Packit Service |
d328f3 |
utf8_ssid = g_strdup ("");
|
|
Packit Service |
d328f3 |
gtk_entry_set_text (priv->ssid, utf8_ssid);
|
|
Packit Service |
d328f3 |
g_signal_connect_swapped (priv->ssid, "changed", G_CALLBACK (ce_page_changed), self);
|
|
Packit Service |
d328f3 |
g_free (utf8_ssid);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
/* Default to Infrastructure */
|
|
Packit Service |
d328f3 |
gtk_combo_box_set_active (priv->mode, 0);
|
|
Packit Service |
d328f3 |
if (!g_strcmp0 (mode, "ap"))
|
|
Packit Service |
d328f3 |
gtk_combo_box_set_active (priv->mode, 1);
|
|
Packit Service |
d328f3 |
if (!g_strcmp0 (mode, "adhoc"))
|
|
Packit Service |
d328f3 |
gtk_combo_box_set_active (priv->mode, 2);
|
|
Packit Service |
d328f3 |
mode_combo_changed_cb (priv->mode, self);
|
|
Packit Service |
d328f3 |
g_signal_connect (priv->mode, "changed", G_CALLBACK (mode_combo_changed_cb), self);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
g_signal_connect_object (priv->channel, "output",
|
|
Packit Service |
d328f3 |
G_CALLBACK (channel_spin_output_cb),
|
|
Packit Service |
d328f3 |
self,
|
|
Packit Service |
d328f3 |
0);
|
|
Packit Service |
d328f3 |
g_signal_connect_object (priv->channel, "input",
|
|
Packit Service |
d328f3 |
G_CALLBACK (channel_spin_input_cb),
|
|
Packit Service |
d328f3 |
self,
|
|
Packit Service |
d328f3 |
0);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
gtk_widget_set_sensitive (GTK_WIDGET (priv->channel), FALSE);
|
|
Packit Service |
d328f3 |
if (band) {
|
|
Packit Service |
d328f3 |
if (!strcmp (band, "a")) {
|
|
Packit Service |
d328f3 |
band_idx = 1;
|
|
Packit Service |
d328f3 |
gtk_widget_set_sensitive (GTK_WIDGET (priv->channel), TRUE);
|
|
Packit Service |
d328f3 |
} else if (!strcmp (band, "bg")) {
|
|
Packit Service |
d328f3 |
band_idx = 2;
|
|
Packit Service |
d328f3 |
gtk_widget_set_sensitive (GTK_WIDGET (priv->channel), TRUE);
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
gtk_combo_box_set_active (priv->band, band_idx);
|
|
Packit Service |
d328f3 |
g_signal_connect (priv->band, "changed",
|
|
Packit Service |
d328f3 |
G_CALLBACK (band_value_changed_cb),
|
|
Packit Service |
d328f3 |
self);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
/* Update the channel _after_ the band has been set so that it gets
|
|
Packit Service |
d328f3 |
* the right values */
|
|
Packit Service |
d328f3 |
priv->last_channel = nm_setting_wireless_get_channel (setting);
|
|
Packit Service |
d328f3 |
gtk_spin_button_set_value (priv->channel, (gdouble) priv->last_channel);
|
|
Packit Service |
d328f3 |
g_signal_connect_swapped (priv->channel, "value-changed", G_CALLBACK (ce_page_changed), self);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
/* BSSID */
|
|
Packit Service |
d328f3 |
bssid_array = g_ptr_array_new ();
|
|
Packit Service |
d328f3 |
for (idx = 0; idx < nm_setting_wireless_get_num_seen_bssids (setting); idx++)
|
|
Packit Service |
d328f3 |
g_ptr_array_add (bssid_array, g_strdup (nm_setting_wireless_get_seen_bssid (setting, idx)));
|
|
Packit Service |
d328f3 |
g_ptr_array_add (bssid_array, NULL);
|
|
Packit Service |
d328f3 |
bssid_list = (char **) g_ptr_array_free (bssid_array, FALSE);
|
|
Packit Service |
d328f3 |
s_bssid = nm_setting_wireless_get_bssid (setting);
|
|
Packit Service |
d328f3 |
ce_page_setup_mac_combo (CE_PAGE (self), GTK_COMBO_BOX (priv->bssid),
|
|
Packit Service |
d328f3 |
s_bssid, bssid_list);
|
|
Packit Service |
d328f3 |
g_strfreev (bssid_list);
|
|
Packit Service |
d328f3 |
g_signal_connect_swapped (priv->bssid, "changed", G_CALLBACK (ce_page_changed), self);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
/* Device MAC address */
|
|
Packit Service |
d328f3 |
s_ifname = nm_connection_get_interface_name (CE_PAGE (self)->connection);
|
|
Packit Service |
d328f3 |
s_mac = nm_setting_wireless_get_mac_address (setting);
|
|
Packit Service |
d328f3 |
ce_page_setup_device_combo (CE_PAGE (self), GTK_COMBO_BOX (priv->device_combo),
|
|
Packit Service |
d328f3 |
NM_TYPE_DEVICE_WIFI, s_ifname,
|
|
Packit Service |
d328f3 |
s_mac, NM_DEVICE_WIFI_PERMANENT_HW_ADDRESS);
|
|
Packit Service |
d328f3 |
g_signal_connect_swapped (priv->device_combo, "changed", G_CALLBACK (ce_page_changed), self);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
/* Cloned MAC address */
|
|
Packit Service |
d328f3 |
s_mac = nm_setting_wireless_get_cloned_mac_address (setting);
|
|
Packit Service |
d328f3 |
ce_page_setup_cloned_mac_combo (priv->cloned_mac, s_mac);
|
|
Packit Service |
d328f3 |
g_signal_connect_swapped (priv->cloned_mac, "changed", G_CALLBACK (ce_page_changed), self);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
gtk_spin_button_set_value (priv->rate, (gdouble) nm_setting_wireless_get_rate (setting));
|
|
Packit Service |
d328f3 |
gtk_spin_button_set_value (priv->tx_power, (gdouble) nm_setting_wireless_get_tx_power (setting));
|
|
Packit Service |
d328f3 |
gtk_spin_button_set_value (priv->mtu, (gdouble) nm_setting_wireless_get_mtu (setting));
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
static void
|
|
Packit Service |
d328f3 |
finish_setup (CEPageWifi *self, gpointer user_data)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
CEPage *parent = CE_PAGE (self);
|
|
Packit Service |
d328f3 |
GtkWidget *widget;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
populate_ui (self);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "wifi_tx_power_label"));
|
|
Packit Service |
d328f3 |
gtk_widget_hide (widget);
|
|
Packit Service |
d328f3 |
widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "wifi_tx_power_hbox"));
|
|
Packit Service |
d328f3 |
gtk_widget_hide (widget);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "wifi_rate_label"));
|
|
Packit Service |
d328f3 |
gtk_widget_hide (widget);
|
|
Packit Service |
d328f3 |
widget = GTK_WIDGET (gtk_builder_get_object (parent->builder, "wifi_rate_hbox"));
|
|
Packit Service |
d328f3 |
gtk_widget_hide (widget);
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
CEPage *
|
|
Packit Service |
d328f3 |
ce_page_wifi_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 |
CEPageWifi *self;
|
|
Packit Service |
d328f3 |
CEPageWifiPrivate *priv;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
g_return_val_if_fail (NM_IS_CONNECTION (connection), NULL);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
self = CE_PAGE_WIFI (ce_page_new (CE_TYPE_PAGE_WIFI,
|
|
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-wifi.ui",
|
|
Packit Service |
d328f3 |
"WifiPage",
|
|
Packit Service |
d328f3 |
_("Wi-Fi")));
|
|
Packit Service |
d328f3 |
if (!self) {
|
|
Packit Service |
d328f3 |
g_set_error_literal (error, NMA_ERROR, NMA_ERROR_GENERIC, _("Could not load Wi-Fi user interface."));
|
|
Packit Service |
d328f3 |
return NULL;
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
wifi_private_init (self);
|
|
Packit Service |
d328f3 |
priv = CE_PAGE_WIFI_GET_PRIVATE (self);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
priv->setting = nm_connection_get_setting_wireless (connection);
|
|
Packit Service |
d328f3 |
if (!priv->setting) {
|
|
Packit Service |
d328f3 |
priv->setting = NM_SETTING_WIRELESS (nm_setting_wireless_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 |
return CE_PAGE (self);
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
GBytes *
|
|
Packit Service |
d328f3 |
ce_page_wifi_get_ssid (CEPageWifi *self)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
CEPageWifiPrivate *priv;
|
|
Packit Service |
d328f3 |
const char *txt_ssid;
|
|
Packit Service |
d328f3 |
GBytes *ssid;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
g_return_val_if_fail (CE_IS_PAGE_WIFI (self), NULL);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
priv = CE_PAGE_WIFI_GET_PRIVATE (self);
|
|
Packit Service |
d328f3 |
txt_ssid = gtk_entry_get_text (priv->ssid);
|
|
Packit Service |
d328f3 |
if (!txt_ssid || !strlen (txt_ssid))
|
|
Packit Service |
d328f3 |
return NULL;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
ssid = g_bytes_new (txt_ssid, strlen (txt_ssid));
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
return ssid;
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
static void
|
|
Packit Service |
d328f3 |
ui_to_setting (CEPageWifi *self)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
CEPageWifiPrivate *priv = CE_PAGE_WIFI_GET_PRIVATE (self);
|
|
Packit Service |
d328f3 |
NMSettingConnection *s_con;
|
|
Packit Service |
d328f3 |
GBytes *ssid;
|
|
Packit Service |
d328f3 |
const char *bssid = NULL;
|
|
Packit Service |
d328f3 |
char *ifname = NULL;
|
|
Packit Service |
d328f3 |
char *device_mac = NULL;
|
|
Packit Service |
d328f3 |
char *cloned_mac;
|
|
Packit Service |
d328f3 |
const char *mode;
|
|
Packit Service |
d328f3 |
const char *band;
|
|
Packit Service |
d328f3 |
GtkWidget *entry;
|
|
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 != NULL);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
ssid = ce_page_wifi_get_ssid (self);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
switch (gtk_combo_box_get_active (priv->mode)) {
|
|
Packit Service |
d328f3 |
case 1:
|
|
Packit Service |
d328f3 |
mode = "ap";
|
|
Packit Service |
d328f3 |
break;
|
|
Packit Service |
d328f3 |
case 2:
|
|
Packit Service |
d328f3 |
mode = "adhoc";
|
|
Packit Service |
d328f3 |
break;
|
|
Packit Service |
d328f3 |
default:
|
|
Packit Service |
d328f3 |
mode = "infrastructure";
|
|
Packit Service |
d328f3 |
break;
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
switch (gtk_combo_box_get_active (priv->band)) {
|
|
Packit Service |
d328f3 |
case 1:
|
|
Packit Service |
d328f3 |
band = "a";
|
|
Packit Service |
d328f3 |
break;
|
|
Packit Service |
d328f3 |
case 2:
|
|
Packit Service |
d328f3 |
band = "bg";
|
|
Packit Service |
d328f3 |
break;
|
|
Packit Service |
d328f3 |
case 0:
|
|
Packit Service |
d328f3 |
default:
|
|
Packit Service |
d328f3 |
band = NULL;
|
|
Packit Service |
d328f3 |
break;
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
entry = gtk_bin_get_child (GTK_BIN (priv->bssid));
|
|
Packit Service |
d328f3 |
/* BSSID is only valid for infrastructure */
|
|
Packit Service |
d328f3 |
if (entry && mode && strcmp (mode, "infrastructure") == 0)
|
|
Packit Service |
d328f3 |
bssid = gtk_entry_get_text (GTK_ENTRY (entry));
|
|
Packit Service |
d328f3 |
entry = gtk_bin_get_child (GTK_BIN (priv->device_combo));
|
|
Packit Service |
d328f3 |
if (entry)
|
|
Packit Service |
d328f3 |
ce_page_device_entry_get (GTK_ENTRY (entry), ARPHRD_ETHER, TRUE, &ifname, &device_mac, NULL, NULL);
|
|
Packit Service |
d328f3 |
cloned_mac = ce_page_cloned_mac_get (priv->cloned_mac);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
g_object_set (s_con,
|
|
Packit Service |
d328f3 |
NM_SETTING_CONNECTION_INTERFACE_NAME, ifname,
|
|
Packit Service |
d328f3 |
NULL);
|
|
Packit Service |
d328f3 |
g_object_set (priv->setting,
|
|
Packit Service |
d328f3 |
NM_SETTING_WIRELESS_SSID, ssid,
|
|
Packit Service |
d328f3 |
NM_SETTING_WIRELESS_BSSID, bssid && *bssid ? bssid : NULL,
|
|
Packit Service |
d328f3 |
NM_SETTING_WIRELESS_MAC_ADDRESS, device_mac,
|
|
Packit Service |
d328f3 |
NM_SETTING_WIRELESS_CLONED_MAC_ADDRESS, cloned_mac && *cloned_mac ? cloned_mac : NULL,
|
|
Packit Service |
d328f3 |
NM_SETTING_WIRELESS_MODE, mode,
|
|
Packit Service |
d328f3 |
NM_SETTING_WIRELESS_BAND, band,
|
|
Packit Service |
d328f3 |
NM_SETTING_WIRELESS_CHANNEL, gtk_spin_button_get_value_as_int (priv->channel),
|
|
Packit Service |
d328f3 |
NM_SETTING_WIRELESS_RATE, gtk_spin_button_get_value_as_int (priv->rate),
|
|
Packit Service |
d328f3 |
NM_SETTING_WIRELESS_TX_POWER, gtk_spin_button_get_value_as_int (priv->tx_power),
|
|
Packit Service |
d328f3 |
NM_SETTING_WIRELESS_MTU, gtk_spin_button_get_value_as_int (priv->mtu),
|
|
Packit Service |
d328f3 |
NULL);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
g_bytes_unref (ssid);
|
|
Packit Service |
d328f3 |
g_free (ifname);
|
|
Packit Service |
d328f3 |
g_free (device_mac);
|
|
Packit Service |
d328f3 |
g_free (cloned_mac);
|
|
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 |
CEPageWifi *self = CE_PAGE_WIFI (page);
|
|
Packit Service |
d328f3 |
CEPageWifiPrivate *priv = CE_PAGE_WIFI_GET_PRIVATE (self);
|
|
Packit Service |
d328f3 |
gboolean success;
|
|
Packit Service |
d328f3 |
GtkWidget *entry;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
entry = gtk_bin_get_child (GTK_BIN (priv->bssid));
|
|
Packit Service |
d328f3 |
if (entry) {
|
|
Packit Service |
d328f3 |
if (!ce_page_mac_entry_valid (GTK_ENTRY (entry), ARPHRD_ETHER, _("bssid"), error))
|
|
Packit Service |
d328f3 |
return FALSE;
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
entry = gtk_bin_get_child (GTK_BIN (priv->device_combo));
|
|
Packit Service |
d328f3 |
if (entry) {
|
|
Packit Service |
d328f3 |
if (!ce_page_device_entry_get (GTK_ENTRY (entry), ARPHRD_ETHER, TRUE, NULL, NULL, _("Wi-Fi device"), error))
|
|
Packit Service |
d328f3 |
return FALSE;
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
if (!ce_page_cloned_mac_combo_valid (priv->cloned_mac, ARPHRD_ETHER, _("cloned MAC"), error))
|
|
Packit Service |
d328f3 |
return FALSE;
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
ui_to_setting (self);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
success = nm_setting_verify (NM_SETTING (priv->setting), NULL, error);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
return success;
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
static void
|
|
Packit Service |
d328f3 |
ce_page_wifi_init (CEPageWifi *self)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
}
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
static void
|
|
Packit Service |
d328f3 |
ce_page_wifi_class_init (CEPageWifiClass *wifi_class)
|
|
Packit Service |
d328f3 |
{
|
|
Packit Service |
d328f3 |
GObjectClass *object_class = G_OBJECT_CLASS (wifi_class);
|
|
Packit Service |
d328f3 |
CEPageClass *parent_class = CE_PAGE_CLASS (wifi_class);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
g_type_class_add_private (object_class, sizeof (CEPageWifiPrivate));
|
|
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 |
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
void
|
|
Packit Service |
d328f3 |
wifi_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 *s_wifi;
|
|
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 |
_("Wi-Fi connection %d"),
|
|
Packit Service |
d328f3 |
NM_SETTING_WIRELESS_SETTING_NAME,
|
|
Packit Service |
d328f3 |
TRUE,
|
|
Packit Service |
d328f3 |
client);
|
|
Packit Service |
d328f3 |
s_wifi = nm_setting_wireless_new ();
|
|
Packit Service |
d328f3 |
g_object_set (s_wifi, NM_SETTING_WIRELESS_MODE, "infrastructure", NULL);
|
|
Packit Service |
d328f3 |
nm_connection_add_setting (connection, s_wifi);
|
|
Packit Service |
d328f3 |
|
|
Packit Service |
d328f3 |
(*result_func) (FUNC_TAG_PAGE_NEW_CONNECTION_RESULT_CALL, connection, FALSE, NULL, user_data);
|
|
Packit Service |
d328f3 |
}
|