On 18.01.2017 18:44, Thomas Haller wrote:
> On Wed, 2017-01-18 at 17:32 +0100, Simon Fels wrote:
>> ---
>> libnm-core/nm-setting-wireless.c | 85
>> ++++++++++++++++++++++++++++++++++++++++
>> libnm-core/nm-setting-wireless.h | 47 ++++++++++++++++++++++
>> libnm/libnm.ver | 3 ++
>> man/NetworkManager.conf.xml | 4 ++
>> 4 files changed, 139 insertions(+)
>>
>> diff --git a/libnm-core/nm-setting-wireless.c b/libnm-core/nm-
>> setting-wireless.c
>> index 1d129f6..a2ed849 100644
>> --- a/libnm-core/nm-setting-wireless.c
>> +++ b/libnm-core/nm-setting-wireless.c
>> @@ -63,6 +63,8 @@ typedef struct {
>> gboolean hidden;
>> guint32 powersave;
>> NMSettingMacRandomization mac_address_randomization;
>> + guint32 wowl;
>> + char *wowl_password;
>> } NMSettingWirelessPrivate;
>>
>> enum {
>> @@ -83,6 +85,8 @@ enum {
>> PROP_HIDDEN,
>> PROP_POWERSAVE,
>> PROP_MAC_ADDRESS_RANDOMIZATION,
>> + PROP_WAKE_ON_WLAN,
>> + PROP_WAKE_ON_WLAN_PASSWORD,
>>
>> LAST_PROP
>> };
>> @@ -939,6 +943,43 @@ nm_setting_wireless_get_security
>> (NMSetting *setting,
>> return NULL;
>> }
>>
>> +/**
>> + * nm_setting_wireless_get_wake_on_wlan:
>> + * @setting: the #NMSettingWireless
>> + *
>> + * Returns the Wake-on-WLAN options enabled for the connection
>> + *
>> + * Returns: the Wake-on-WLAN options
>> + *
>> + * Since: 1.6
>> + */
>> +NMSettingWirelessWakeOnWLan
>> +nm_setting_wireless_get_wake_on_wlan (NMSettingWireless *setting)
>> +{
>> + g_return_val_if_fail (NM_IS_SETTING_WIRELESS (setting),
>> NM_SETTING_WIRELESS_WAKE_ON_WLAN_NONE);
>> +
>> + return NM_SETTING_WIRELESS_GET_PRIVATE (setting)->wowl;
>> +}
>> +
>> +/**
>> + * nm_setting_wired_get_wake_on_lan_password:
>> + * @setting: the #NMSettingWireless
>> + *
>> + * Returns the Wake-on-WLAN password. This only applies to
>> + * %NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC.
>> + *
>> + * Returns: the Wake-on-WLAN setting password, or %NULL if there is
>> no password.
>> + *
>> + * Since: 1.6
>> + */
>> +const char *
>> +nm_setting_wireless_get_wake_on_wlan_password (NMSettingWireless
>> *setting)
>> +{
>> + g_return_val_if_fail (NM_IS_SETTING_WIRELESS (setting),
>> NULL);
>> +
>> + return NM_SETTING_WIRELESS_GET_PRIVATE (setting)-
>>> wowl_password;
>> +}
>> +
>> static void
>> clear_blacklist_item (char **item_p)
>> {
>> @@ -1051,6 +1092,13 @@ set_property (GObject *object, guint prop_id,
>> case PROP_MAC_ADDRESS_RANDOMIZATION:
>> priv->mac_address_randomization = g_value_get_uint
>> (value);
>> break;
>> + case PROP_WAKE_ON_WLAN:
>> + priv->wowl = g_value_get_uint (value);
>> + break;
>> + case PROP_WAKE_ON_WLAN_PASSWORD:
>> + g_free (priv->wowl_password);
>> + priv->wowl_password = g_value_dup_string (value);
>> + break;
>> default:
>> G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id,
>> pspec);
>> break;
>> @@ -1113,6 +1161,12 @@ get_property (GObject *object, guint prop_id,
>> case PROP_MAC_ADDRESS_RANDOMIZATION:
>> g_value_set_uint (value,
>> nm_setting_wireless_get_mac_address_randomization (setting));
>> break;
>> + case PROP_WAKE_ON_WLAN:
>> + g_value_set_uint (value,
>> nm_setting_wireless_get_wake_on_wlan (setting));
>> + break;
>> + case PROP_WAKE_ON_WLAN_PASSWORD:
>> + g_value_set_string (value,
>> nm_setting_wireless_get_wake_on_wlan_password (setting));
>> + break;
>> default:
>> G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id,
>> pspec);
>> break;
>> @@ -1623,4 +1677,35 @@ nm_setting_wireless_class_init
>> (NMSettingWirelessClass *setting_wireless_class)
>> _nm_setting_class_add_dbus_only_property (setting_class,
>> "security",
>> G_VARIANT_TYPE_STR
>> ING,
>> nm_setting_wireles
>> s_get_security, NULL);
>> +
>> + /**
>> + * NMSettingWireless:wake-on-wlan:
>> + *
>> + * The #NMSettingWirelessWakeOnWLan options to enable. Not
>> all devices support all options.
>> + *
>> + * Since: 1.2
>> + **/
>> + g_object_class_install_property
>> + (object_class, PROP_WAKE_ON_WLAN,
>> + g_param_spec_uint
>> (NM_SETTING_WIRELESS_WAKE_ON_WLAN, "", "",
>> + 0, G_MAXUINT32,
>> NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT,
>> + G_PARAM_CONSTRUCT |
>> + G_PARAM_READWRITE |
>> + G_PARAM_STATIC_STRINGS));
>> +
>> + /**
>> + * NMSettingWireless:wake-on-wlan-password:
>> + *
>> + * If specified, the password used with magic-packet-based
>> + * Wake-on-LAN, represented as a MAC address. If %NULL,
>> + * no password will be required.
>> + *
>> + * Since: 1.2
>
> should be Since: 1.8
Ok.
>> + **/
>> + g_object_class_install_property
>> + (object_class, PROP_WAKE_ON_WLAN_PASSWORD,
>> + g_param_spec_string
>> (NM_SETTING_WIRELESS_WAKE_ON_WLAN_PASSWORD, "", "",
>> + NULL,
>> + G_PARAM_READWRITE |
>> + G_PARAM_STATIC_STRINGS));
>> }
>> diff --git a/libnm-core/nm-setting-wireless.h b/libnm-core/nm-
>> setting-wireless.h
>> index 35fa79c..adbfe48 100644
>> --- a/libnm-core/nm-setting-wireless.h
>> +++ b/libnm-core/nm-setting-wireless.h
>> @@ -41,6 +41,48 @@ G_BEGIN_DECLS
>>
>> #define NM_SETTING_WIRELESS_SETTING_NAME "802-11-wireless"
>>
>> +/**
>> + * NMSettingWirelessWakeOnWLan:
>> + * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_NONE: Wake-on-WLAN disabled
>> + * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY: Wake on any activity
>> + * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT: Wake on disconnect
>> + * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC: Wake on magic packet
>> + * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_GTK_REKEY_FAILURE: Wake on GTK
>> rekey failure
>> + * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_EAP_IDENTITY_REQUEST: Wake on
>> EAP identity request
>> + * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_4WAY_HANDSHAKE: Wake on 4way
>> hanshake
>> + * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_RFKILL_RELEASE: Wake on rfkill
>> release
>> + * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_ALL: Wake on all events. This
>> does not
>> + * include the exclusive flags
>> @NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT or
>> + * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE.
>> + * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT: Use the default value
>> + * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE: Don't change configured
>> settings
>> + * @NM_SETTING_WIRELESS_WAKE_ON_WLAN_EXCLUSIVE_FLAGS: Mask of flags
>> that are
>> + * incompatible with other flags
>> + *
>> + * Options for #NMSettingWireless:wake-on-wlan. Note that not all
>> options
>> + * are supported by all devices.
>> + *
>> + * Since: 1.2
>> + */
>> +typedef enum { /*< flags >*/
>> + NM_SETTING_WIRELESS_WAKE_ON_WLAN_NONE = 0,
>> /*< skip >*/
>> + NM_SETTING_WIRELESS_WAKE_ON_WLAN_ANY = (1
>> << 1),
>> + NM_SETTING_WIRELESS_WAKE_ON_WLAN_DISCONNECT = (1
>> << 2),
>> + NM_SETTING_WIRELESS_WAKE_ON_WLAN_MAGIC = (1
>> << 3),
>> + NM_SETTING_WIRELESS_WAKE_ON_WLAN_GTK_REKEY_FAILURE = (1
>> << 4),
>> + NM_SETTING_WIRELESS_WAKE_ON_WLAN_EAP_IDENTITY_REQUEST = (1
>> << 5),
>> + NM_SETTING_WIRELESS_WAKE_ON_WLAN_4WAY_HANDSHAKE = (1
>> << 6),
>> + NM_SETTING_WIRELESS_WAKE_ON_WLAN_RFKILL_RELEASE = (1
>> << 7),
>> + NM_SETTING_WIRELESS_WAKE_ON_WLAN_TCP = (1
>> << 8),
>> + _NM_SETTING_WIRELESS_WAKE_ON_WLAN_NUM, /*< skip >*/
>> + NM_SETTING_WIRELESS_WAKE_ON_WLAN_LAST =
>> _NM_SETTING_WIRELESS_WAKE_ON_WLAN_NUM - 1, /*< skip >*/
>> + NM_SETTING_WIRELESS_WAKE_ON_WLAN_ALL =
>> ((NM_SETTING_WIRELESS_WAKE_ON_WLAN_LAST << 1) - 1) - (1 << 0
>> /*DEFAULT*/), /*< skip >*/
>> +
>> + NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT = (1
>> << 0),
>> + NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE = (1
>> << 15),
>> + NM_SETTING_WIRELESS_WAKE_ON_WLAN_EXCLUSIVE_FLAGS =
>> NM_SETTING_WIRELESS_WAKE_ON_WLAN_DEFAULT |
>> NM_SETTING_WIRELESS_WAKE_ON_WLAN_IGNORE, /*< skip >*/
>> +} NMSettingWirelessWakeOnWLan;
>> +
>> #define NM_SETTING_WIRELESS_SSID "ssid"
>> #define NM_SETTING_WIRELESS_MODE "mode"
>> #define NM_SETTING_WIRELESS_BAND "band"
>> @@ -57,6 +99,8 @@ G_BEGIN_DECLS
>> #define NM_SETTING_WIRELESS_HIDDEN "hidden"
>> #define NM_SETTING_WIRELESS_POWERSAVE "powersave"
>> #define NM_SETTING_WIRELESS_MAC_ADDRESS_RANDOMIZATION "mac-
>> address-randomization"
>> +#define NM_SETTING_WIRELESS_WAKE_ON_WLAN "wake-on-wlan"
>> +#define NM_SETTING_WIRELESS_WAKE_ON_WLAN_PASSWORD "wake-on-wlan-
>> password"
>>
>> /**
>> * NM_SETTING_WIRELESS_MODE_ADHOC:
>> @@ -164,6 +208,9 @@
>> gboolean nm_setting_wireless_ap_security_compatible
>> (NMSettingWireless
>> NM8021
>> 1ApSecurityFlags ap_rsn,
>> NM8021
>> 1Mode ap_mode);
>>
>> +NMSettingWirelessWakeOnWLan nm_setting_wireless_get_wake_on_wlan
>> (NMSettingWireless *setting);
>> +const char
>> * nm_setting_wireless_get_wake_on_wlan_password
>> (NMSettingWireless *setting);
>
> needs NM_AVAILABLE_IN_1_8
OK
>> +
>> G_END_DECLS
>>
>> #endif /* __NM_SETTING_WIRELESS_H__ */
>> diff --git a/libnm/libnm.ver b/libnm/libnm.ver
>> index d0562e2..1e603bf 100644
>> --- a/libnm/libnm.ver
>> +++ b/libnm/libnm.ver
>> @@ -1139,6 +1139,9 @@ global:
>> nm_setting_802_1x_get_phase2_client_cert_uri;
>> nm_setting_802_1x_get_private_key_uri;
>> nm_setting_802_1x_get_phase2_private_key_uri;
>> + nm_setting_wireless_get_wake_on_wlan;
>> + nm_setting_wireless_get_wake_on_wlan_password;
>> + nm_setting_wireless_wake_on_wlan_get_type;
>
> "nm-1-6" just branched off from "master". So, no
> new API can be added to libnm_1_6_0.
> The symbols need to be added to a new "libnm_1_8_0" section.
Ok, didn't saw yet that 1.6 is branched off. Will change to libnm_1_8_0
> Do you wish for upstream to backport this API? How far?
> As said, backporting API is a pain.
No, we don't need this backported. Introducing those methods with 1.8 is
absolutely fine.
>
>
>> nm_utils_is_json_object;
>> nm_utils_version;
>> nm_utils_is_valid_iface_name;
>> diff --git a/man/NetworkManager.conf.xml
>> b/man/NetworkManager.conf.xml
>> index 8c93ac4..1906278 100644
>> --- a/man/NetworkManager.conf.xml
>> +++ b/man/NetworkManager.conf.xml
>> @@ -671,6 +671,10 @@ ipv6.ip6-privacy=0
>> <listitem><para>If left unspecified, the default value
>> "<literal>ignore</literal>" will be
>> used.</para></listitem>
>> </varlistentry>
>> + <varlistentry>
>> + <term><varname>wifi.wake-on-wlan</varname></term>
>> + <listitem><para>If left unspecified, the global default
>> value will be used </para></listitem>
>
> let's drop the extra description. Some entries have additional
> description if the global default is more complex and warrants
> explanation.
OK
regards,
Simon
_______________________________________________
networkmanager-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/networkmanager-list