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 networkmanager-list@gnome.org https://mail.gnome.org/mailman/listinfo/networkmanager-list