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

Reply via email to