mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-26 00:40:08 +01:00
merge: improve handling of wake-on-lan property (rh #1260584)
https://bugzilla.redhat.com/show_bug.cgi?id=1260584
This commit is contained in:
commit
2b129cd8da
3 changed files with 33 additions and 13 deletions
|
|
@ -1558,9 +1558,16 @@ nmc_property_wired_get_wake_on_lan (NMSetting *setting, NmcPropertyGetType get_t
|
|||
{
|
||||
NMSettingWired *s_wired = NM_SETTING_WIRED (setting);
|
||||
NMSettingWiredWakeOnLan wol;
|
||||
char *tmp, *str;
|
||||
|
||||
wol = nm_setting_wired_get_wake_on_lan (s_wired);
|
||||
return nm_utils_enum_to_str (nm_setting_wired_wake_on_lan_get_type (), wol);
|
||||
tmp = nm_utils_enum_to_str (nm_setting_wired_wake_on_lan_get_type (), wol);
|
||||
if (get_type == NMC_PROPERTY_GET_PARSABLE)
|
||||
str = g_strdup_printf ("%s", tmp && *tmp ? tmp : "none");
|
||||
else
|
||||
str = g_strdup_printf ("%d (%s)", wol, tmp && *tmp ? tmp : "none");
|
||||
g_free (tmp);
|
||||
return str;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
|
@ -1570,16 +1577,27 @@ nmc_property_wired_set_wake_on_lan (NMSetting *setting, const char *prop,
|
|||
NMSettingWiredWakeOnLan wol;
|
||||
gs_free char *err_token = NULL;
|
||||
gboolean ret;
|
||||
long int t;
|
||||
|
||||
ret = nm_utils_enum_from_str (nm_setting_wired_wake_on_lan_get_type (), val,
|
||||
(int *) &wol, &err_token);
|
||||
if (nmc_string_to_int_base (val, 0, TRUE, 0, NM_SETTING_WIRED_WAKE_ON_LAN_ALL, &t))
|
||||
wol = (NMSettingWiredWakeOnLan) t;
|
||||
else {
|
||||
ret = nm_utils_enum_from_str (nm_setting_wired_wake_on_lan_get_type (), val,
|
||||
(int *) &wol, &err_token);
|
||||
|
||||
if (!ret) {
|
||||
g_set_error (error, 1, 0, _("invalid option '%s', use a combination of %s or 'default'"),
|
||||
err_token,
|
||||
nm_utils_enum_to_str (nm_setting_wired_wake_on_lan_get_type (),
|
||||
NM_SETTING_WIRED_WAKE_ON_LAN_ALL));
|
||||
return FALSE;
|
||||
if (!ret) {
|
||||
if ( g_ascii_strcasecmp (err_token, "none") == 0
|
||||
|| g_ascii_strcasecmp (err_token, "disable") == 0
|
||||
|| g_ascii_strcasecmp (err_token, "disabled") == 0)
|
||||
wol = NM_SETTING_WIRED_WAKE_ON_LAN_NONE;
|
||||
else {
|
||||
g_set_error (error, 1, 0, _("invalid option '%s', use a combination of [%s] or 'default' or 'none'"),
|
||||
err_token,
|
||||
nm_utils_enum_to_str (nm_setting_wired_wake_on_lan_get_type (),
|
||||
NM_SETTING_WIRED_WAKE_ON_LAN_ALL));
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (NM_FLAGS_HAS (wol, NM_SETTING_WIRED_WAKE_ON_LAN_DEFAULT) &&
|
||||
|
|
|
|||
|
|
@ -4030,7 +4030,7 @@ char *nm_utils_enum_to_str (GType type, int value)
|
|||
break;
|
||||
|
||||
if (!first)
|
||||
g_string_append_c (str, ',');
|
||||
g_string_append (str, ", ");
|
||||
g_string_append (str, flags_value->value_nick);
|
||||
|
||||
value &= ~flags_value->value;
|
||||
|
|
@ -4089,7 +4089,7 @@ gboolean nm_utils_enum_from_str (GType type, const char *str,
|
|||
gs_strfreev char **strv = NULL;
|
||||
int i;
|
||||
|
||||
strv = g_strsplit (stripped, ",", 0);
|
||||
strv = g_strsplit_set (stripped, " \t,", 0);
|
||||
for (i = 0; strv[i]; i++) {
|
||||
if (!strv[i][0])
|
||||
continue;
|
||||
|
|
|
|||
|
|
@ -4679,12 +4679,12 @@ static void test_nm_utils_enum (void)
|
|||
test_nm_utils_enum_to_str_do (meta_flags, NM_TEST_GENERAL_META_FLAGS_BAZ, "baz");
|
||||
test_nm_utils_enum_to_str_do (meta_flags, NM_TEST_GENERAL_META_FLAGS_FOO |
|
||||
NM_TEST_GENERAL_META_FLAGS_BAR |
|
||||
NM_TEST_GENERAL_META_FLAGS_BAZ, "foo,bar,baz");
|
||||
NM_TEST_GENERAL_META_FLAGS_BAZ, "foo, bar, baz");
|
||||
|
||||
test_nm_utils_enum_to_str_do (color_flags, NM_TEST_GENERAL_COLOR_FLAGS_RED, "red");
|
||||
test_nm_utils_enum_to_str_do (color_flags, NM_TEST_GENERAL_COLOR_FLAGS_WHITE, "");
|
||||
test_nm_utils_enum_to_str_do (color_flags, NM_TEST_GENERAL_COLOR_FLAGS_RED |
|
||||
NM_TEST_GENERAL_COLOR_FLAGS_GREEN, "red,green");
|
||||
NM_TEST_GENERAL_COLOR_FLAGS_GREEN, "red, green");
|
||||
|
||||
test_nm_utils_enum_from_str_do (bool_enum, "", FALSE, 0, NULL);
|
||||
test_nm_utils_enum_from_str_do (bool_enum, " ", FALSE, 0, NULL);
|
||||
|
|
@ -4698,6 +4698,8 @@ static void test_nm_utils_enum (void)
|
|||
test_nm_utils_enum_from_str_do (meta_flags, "foo", TRUE, NM_TEST_GENERAL_META_FLAGS_FOO, NULL);
|
||||
test_nm_utils_enum_from_str_do (meta_flags, "foo,baz", TRUE, NM_TEST_GENERAL_META_FLAGS_FOO |
|
||||
NM_TEST_GENERAL_META_FLAGS_BAZ, NULL);
|
||||
test_nm_utils_enum_from_str_do (meta_flags, "foo, baz", TRUE, NM_TEST_GENERAL_META_FLAGS_FOO |
|
||||
NM_TEST_GENERAL_META_FLAGS_BAZ, NULL);
|
||||
test_nm_utils_enum_from_str_do (meta_flags, "foo,,bar", TRUE, NM_TEST_GENERAL_META_FLAGS_FOO |
|
||||
NM_TEST_GENERAL_META_FLAGS_BAR, NULL);
|
||||
test_nm_utils_enum_from_str_do (meta_flags, "foo,baz,quux,bar", FALSE, 0, "quux");
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue