On Wed, 2017-01-18 at 17:32 +0100, Simon Fels wrote:
> ---
>  clients/cli/settings.c | 66
> +++++++++++++++++++++++++++++++++++++++++++++++++-
>  1 file changed, 65 insertions(+), 1 deletion(-)
> 
> diff --git a/clients/cli/settings.c b/clients/cli/settings.c
> index 40cf975..7cb2d3e 100644
> --- a/clients/cli/settings.c
> +++ b/clients/cli/settings.c
> @@ -214,6 +214,8 @@ NmcOutputField nmc_fields_setting_wireless[] = {
>       SETTING_FIELD
> (NM_SETTING_WIRELESS_SEEN_BSSIDS),               /* 14 */
>       SETTING_FIELD
> (NM_SETTING_WIRELESS_HIDDEN),                    /* 15 */
>       SETTING_FIELD
> (NM_SETTING_WIRELESS_POWERSAVE),                 /* 16 */
> +     SETTING_FIELD
> (NM_SETTING_WIRELESS_WAKE_ON_WLAN),              /* 17 */
> +     SETTING_FIELD
> (NM_SETTING_WIRELESS_WAKE_ON_WLAN_PASSWORD),     /* 18 */
>       {NULL, NULL, 0, NULL, FALSE, FALSE, 0}
>  };
>  #define NMC_FIELDS_SETTING_WIRELESS_ALL     "name"","\
> @@ -232,7 +234,10 @@ NmcOutputField nmc_fields_setting_wireless[] = {
>                                              NM_SETTING_WIRELESS_MTU"
> ,"\
>                                              NM_SETTING_WIRELESS_SEEN
> _BSSIDS","\
>                                              NM_SETTING_WIRELESS_HIDD
> EN"," \
> -                                            NM_SETTING_WIRELESS_POWE
> RSAVE
> +                                            NM_SETTING_WIRELESS_POWE
> RSAVE"," \
> +                                            NM_SETTING_WIRELESS_WAKE
> _ON_WLAN"," \
> +                                            NM_SETTING_WIRELESS_WAKE
> _ON_WLAN_PASSWORD
> +
>  
>  /* Available fields for NM_SETTING_WIRELESS_SECURITY_SETTING_NAME */
>  NmcOutputField nmc_fields_setting_wireless_security[] = {
> @@ -2088,6 +2093,24 @@
> nmc_property_wireless_get_mac_address_randomization (NMSetting
> *setting, NmcProp
>               return g_strdup_printf (_("unknown"));
>  }
>  
> +static char *
> +nmc_property_wireless_get_wake_on_wlan (NMSetting *setting,
> NmcPropertyGetType get_type)
> +{
> +     NMSettingWireless *s_wireless = NM_SETTING_WIRELESS
> (setting);
> +     NMSettingWirelessWakeOnWLan wowl;
> +     gs_free char *str = NULL;
> +     char *ret;
> +
> +     wowl = nm_setting_wireless_get_wake_on_wlan (s_wireless);
> +     str = nm_utils_enum_to_str
> (nm_setting_wireless_wake_on_wlan_get_type (), wowl);
> +
> +     if (get_type == NMC_PROPERTY_GET_PARSABLE) {
> +             ret = str;
> +             str = NULL;
> +             return ret;

return g_steal_pointer (&str);
?

> +     } else
> +             return g_strdup_printf ("%s (%u)", str, wowl);

let's cast "wowl" to (guint)? Yes, it is correct as-is on probably
every architecture we support. Just to be explicit about it.

> +}
>  
>  /* --- NM_SETTING_WIRELESS_SECURITY_SETTING_NAME property get
> functions --- */
>  DEFINE_GETTER (nmc_property_wifi_sec_get_key_mgmt,
> NM_SETTING_WIRELESS_SECURITY_KEY_MGMT)
> @@ -5469,6 +5492,39 @@
> nmc_property_wireless_set_mac_address_randomization (NMSetting
> *setting,
>       return TRUE;
>  }
>  
> +static gboolean
> +nmc_property_wireless_set_wake_on_wlan (NMSetting *setting, const
> char *prop, const char *val, GError **error)

in a follow up, we really need to refactor all this code-duplication
(but fine for now).

> +{
> +     NMSettingWirelessWakeOnWLan wowl;
> +     gs_free const char **options = NULL;
> +     gs_free char *options_str = NULL;
> +     long int t;
> +     gboolean ret;
> +
> +     if (nmc_string_to_int_base (val, 0, TRUE,
> +                                 NM_SETTING_WIRELESS_WAKE_ON_WLAN
> _DEFAULT,
> +                                 NM_SETTING_WIRELESS_WAKE_ON_WLAN
> _LAST,
> +                                 &t))
> +             wowl = (NMSettingWirelessWakeOnWLan) t;
> +     else {
> +             ret = nm_utils_enum_from_str
> (nm_setting_wireless_wake_on_wlan_get_type (),
> +                                           val,
> +                                           (int *) &wowl,

> +                                           NULL);
> +             if (!ret) {
> +                     options = nm_utils_enum_get_values
> (nm_setting_wireless_wake_on_wlan_get_type (),
> +                                                         NM_SETTI
> NG_WIRELESS_WAKE_ON_WLAN_DEFAULT,
> +                                                         NM_SETTI
> NG_WIRELESS_WAKE_ON_WLAN_LAST);
> +                     options_str = g_strjoinv (",", (char **)
> options);
> +                     g_set_error (error, 1, 0, _("invalid option
> '%s', use one of [%s]"), val, options_str);
> +                     return FALSE;
> +             }
> +     }
> +
> +     g_object_set (setting, prop, (guint) wowl, NULL);
> +     return TRUE;
> +}
> +
>  /* --- NM_SETTING_WIRELESS_SECURITY_SETTING_NAME property setter
> functions --- */
>  /* 'key-mgmt' */
>  static const char *wifi_sec_valid_key_mgmts[] = { "none",
> "ieee8021x", "wpa-none", "wpa-psk", "wpa-eap", NULL };
> @@ -7707,6 +7763,13 @@ nmc_properties_init (void)
>                           NULL,
>                           NULL,
>                           NULL);
> +     nmc_add_prop_funcs (GLUE (WIRELESS, WAKE_ON_WLAN),
> +                         nmc_property_wireless_get_wake_on_wlan,
> +                         nmc_property_wireless_set_wake_on_wlan,
> +                         NULL,
> +                         NULL,
> +                         NULL,
> +                         NULL);
>  
>       /* Add editable properties for
> NM_SETTING_WIRELESS_SECURITY_SETTING_NAME */
>       nmc_add_prop_funcs (GLUE (WIRELESS_SECURITY, KEY_MGMT),
> @@ -8657,6 +8720,7 @@ setting_wireless_details (NMSetting *setting,
> NmCli *nmc,  const char *one_prop,
>       set_val_str (arr, 14, nmc_property_wireless_get_seen_bssids
> (setting, NMC_PROPERTY_GET_PRETTY));
>       set_val_str (arr, 15, nmc_property_wireless_get_hidden
> (setting, NMC_PROPERTY_GET_PRETTY));
>       set_val_str (arr, 16, nmc_property_wireless_get_powersave
> (setting, NMC_PROPERTY_GET_PRETTY));
> +     set_val_str (arr, 17, nmc_property_wireless_get_wake_on_wlan
> (setting, NMC_PROPERTY_GET_PRETTY));
>       g_ptr_array_add (nmc->output_data, arr);
>  
>       print_data (nmc);  /* Print all data */

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
networkmanager-list mailing list
networkmanager-list@gnome.org
https://mail.gnome.org/mailman/listinfo/networkmanager-list

Reply via email to