mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-20 04:40:04 +01:00
release: bump version to 1.53.1 (development)
This commit is contained in:
commit
bf1a8ce5d4
15 changed files with 3500 additions and 2599 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -84,6 +84,9 @@ test-*.trs
|
|||
/data/org.freedesktop.NetworkManager.policy.in
|
||||
/data/nm-sudo.service
|
||||
/data/nm-priv-helper.service
|
||||
/data/NetworkManager-config-initrd.service
|
||||
/data/NetworkManager-initrd.service
|
||||
/data/NetworkManager-wait-online-initrd.service
|
||||
|
||||
/docs/api/version.xml
|
||||
/docs/api/settings-spec.html
|
||||
|
|
|
|||
17
NEWS
17
NEWS
|
|
@ -1,3 +1,15 @@
|
|||
=============================================
|
||||
NetworkManager-1.54
|
||||
Overview of changes since NetworkManager-1.52
|
||||
=============================================
|
||||
|
||||
This is a snapshot of NetworkManager development. The API is
|
||||
subject to change and not guaranteed to be compatible with
|
||||
the later release.
|
||||
USE AT YOUR OWN RISK. NOT RECOMMENDED FOR PRODUCTION USE!
|
||||
|
||||
* Added systemd services to provide networking in the initrd.
|
||||
|
||||
=============================================
|
||||
NetworkManager-1.52
|
||||
Overview of changes since NetworkManager-1.50
|
||||
|
|
@ -33,11 +45,6 @@ Overview of changes since NetworkManager-1.50
|
|||
caching resolver. If dnsconfd plugin is enabled and ipvX.routed-dns is
|
||||
set to -1 then adding routes is by default enabled.
|
||||
* Add "shared" method to the IPv6 configuration options in nmtui.
|
||||
* Fix a bug that prevented the activation of bond and bridge's ports in some cases
|
||||
* Fix a bug that prevented the activation of OVS interfaces in some cases
|
||||
* Fix MTPCP endpoint creation for IPv4 with DAD and IPv6 tentative addresses
|
||||
* Fix some VPN routes not being added to the table specified in ipv4/6.routing-table.
|
||||
This fix allow to use policy routing to mitigate Tunnelvision attacks.
|
||||
|
||||
=============================================
|
||||
NetworkManager-1.50
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@
|
|||
|
||||
%global real_version_major %(printf '%s' '%{real_version}' | sed -n 's/^\\([1-9][0-9]*\\.[0-9][0-9]*\\)\\.[0-9][0-9]*$/\\1/p')
|
||||
|
||||
%global systemd_units NetworkManager.service NetworkManager-wait-online.service NetworkManager-dispatcher.service nm-priv-helper.service
|
||||
%global systemd_units NetworkManager.service NetworkManager-wait-online.service NetworkManager-dispatcher.service nm-priv-helper.service NetworkManager-config-initrd.service NetworkManager-initrd.service NetworkManager-wait-online-initrd.service
|
||||
|
||||
%global systemd_units_cloud_setup nm-cloud-setup.service nm-cloud-setup.timer
|
||||
|
||||
|
|
@ -829,7 +829,7 @@ if [ $1 -eq 0 ]; then
|
|||
# Don't kill networking entirely just on package remove
|
||||
#/bin/systemctl stop NetworkManager.service >/dev/null 2>&1 || :
|
||||
fi
|
||||
%systemd_preun NetworkManager-wait-online.service NetworkManager-dispatcher.service nm-priv-helper.service
|
||||
%systemd_preun NetworkManager-wait-online.service NetworkManager-dispatcher.service nm-priv-helper.service NetworkManager-config-initrd.service NetworkManager-initrd.service NetworkManager-wait-online-initrd.service
|
||||
|
||||
|
||||
%if %{with ifcfg_rh}
|
||||
|
|
@ -927,6 +927,9 @@ fi
|
|||
%{_unitdir}/NetworkManager-wait-online.service
|
||||
%{_unitdir}/NetworkManager-dispatcher.service
|
||||
%{_unitdir}/nm-priv-helper.service
|
||||
%{_unitdir}/NetworkManager-config-initrd.service
|
||||
%{_unitdir}/NetworkManager-initrd.service
|
||||
%{_unitdir}/NetworkManager-wait-online-initrd.service
|
||||
%dir %{_datadir}/doc/NetworkManager/examples
|
||||
%{_datadir}/doc/NetworkManager/examples/server.conf
|
||||
%if %{with ifcfg_warning} || %{with ifcfg_migrate}
|
||||
|
|
|
|||
27
data/NetworkManager-config-initrd.service.in
Normal file
27
data/NetworkManager-config-initrd.service.in
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
[Unit]
|
||||
Description=NetworkManager Configuration (initrd)
|
||||
DefaultDependencies=no
|
||||
Wants=systemd-journald.socket
|
||||
After=systemd-journald.socket
|
||||
Before=systemd-udevd.service systemd-udev-trigger.service
|
||||
ConditionPathExists=/etc/initrd-release
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStartPre=/bin/sh -c "rm -f /run/NetworkManager/system-connections/*"
|
||||
ExecStart=/bin/sh -c "@libexecdir@/nm-initrd-generator -- $(cat /proc/cmdline)"
|
||||
ExecStartPost=/bin/sh -c ' \
|
||||
for i in /{usr/lib,run,etc}/NetworkManager/system-connections/*; do \
|
||||
[ -f "$i" ] || continue; \
|
||||
mkdir -p /run/NetworkManager/initrd; \
|
||||
: > /run/NetworkManager/initrd/neednet; \
|
||||
break; \
|
||||
done; \
|
||||
if [ -s /run/NetworkManager/initrd/hostname ]; then \
|
||||
cat /run/NetworkManager/initrd/hostname > /proc/sys/kernel/hostname; \
|
||||
fi \
|
||||
'
|
||||
RemainAfterExit=yes
|
||||
|
||||
[Install]
|
||||
WantedBy=initrd.target
|
||||
32
data/NetworkManager-initrd.service.in
Normal file
32
data/NetworkManager-initrd.service.in
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
[Unit]
|
||||
Description=NetworkManager (initrd)
|
||||
DefaultDependencies=no
|
||||
Wants=systemd-udev-trigger.service network.target
|
||||
After=systemd-udev-trigger.service network-pre.target dbus.service NetworkManager-config-initrd.service
|
||||
Before=network.target
|
||||
BindsTo=dbus.service
|
||||
ConditionPathExists=/etc/initrd-release
|
||||
ConditionPathExists=/run/NetworkManager/initrd/neednet
|
||||
ConditionPathExistsGlob=|/usr/lib/NetworkManager/system-connections/*
|
||||
ConditionPathExistsGlob=|/run/NetworkManager/system-connections/*
|
||||
ConditionPathExistsGlob=|/etc/NetworkManager/system-connections/*
|
||||
|
||||
[Service]
|
||||
Type=dbus
|
||||
BusName=org.freedesktop.NetworkManager
|
||||
ExecReload=/usr/bin/busctl call org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager Reload u 0
|
||||
ExecStart=@sbindir@/NetworkManager
|
||||
# NM doesn't want systemd to kill its children for it
|
||||
KillMode=process
|
||||
Environment=NM_CONFIG_ENABLE_TAG=initrd
|
||||
Restart=on-failure
|
||||
ProtectSystem=true
|
||||
ProtectHome=read-only
|
||||
|
||||
[Install]
|
||||
WantedBy=initrd.target
|
||||
# We want to enable NetworkManager-wait-online-initrd.service whenever this
|
||||
# service is enabled. NetworkManager-wait-online-initrd.service has
|
||||
# WantedBy=network-online.target, so enabling it only has an effect if
|
||||
# network-online.target itself is enabled or pulled in by some other unit.
|
||||
Also=NetworkManager-config-initrd.service NetworkManager-wait-online-initrd.service
|
||||
26
data/NetworkManager-wait-online-initrd.service.in
Normal file
26
data/NetworkManager-wait-online-initrd.service.in
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
[Unit]
|
||||
Description=NetworkManager Wait Online (initrd)
|
||||
DefaultDependencies=no
|
||||
Requires=NetworkManager-initrd.service
|
||||
After=NetworkManager-initrd.service
|
||||
Before=network-online.target
|
||||
ConditionPathExists=/etc/initrd-release
|
||||
ConditionPathExists=/run/NetworkManager/initrd/neednet
|
||||
|
||||
[Service]
|
||||
# `nm-online -s` waits until the point when NetworkManager logs
|
||||
# "startup complete". That is when startup actions are settled and
|
||||
# devices and profiles reached a conclusive activated or deactivated
|
||||
# state. It depends on which profiles are configured to autoconnect and
|
||||
# also depends on profile settings like ipv4.may-fail/ipv6.may-fail,
|
||||
# which affect when a profile is considered fully activated.
|
||||
# Check NetworkManager logs to find out why wait-online takes a certain
|
||||
# time.
|
||||
|
||||
Type=oneshot
|
||||
ExecStart=@bindir@/nm-online -s -q
|
||||
RemainAfterExit=yes
|
||||
Environment=NM_ONLINE_TIMEOUT=3600
|
||||
|
||||
[Install]
|
||||
WantedBy=initrd.target network-online.target
|
||||
|
|
@ -13,6 +13,9 @@ if install_systemdunitdir
|
|||
'NetworkManager.service',
|
||||
'nm-priv-helper.service',
|
||||
'NetworkManager-wait-online.service',
|
||||
'NetworkManager-config-initrd.service',
|
||||
'NetworkManager-initrd.service',
|
||||
'NetworkManager-wait-online-initrd.service',
|
||||
]
|
||||
|
||||
foreach service: services
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ project(
|
|||
# NOTE: When incrementing version also add corresponding
|
||||
# NM_VERSION_x_y_z macros in
|
||||
# "src/libnm-core-public/nm-version-macros.h.in"
|
||||
version: '1.52.0',
|
||||
version: '1.53.1',
|
||||
license: 'GPL2+',
|
||||
default_options: [
|
||||
'buildtype=debugoptimized',
|
||||
|
|
|
|||
|
|
@ -218,10 +218,22 @@ receive_ra(struct ndp *ndp, struct ndp_msg *msg, gpointer user_data)
|
|||
|
||||
/* Address */
|
||||
if (r_plen == 64 && ndp_msg_opt_prefix_flag_auto_addr_conf(msg, offset)) {
|
||||
const guint32 valid_time = ndp_msg_opt_prefix_valid_time(msg, offset);
|
||||
const guint32 preferred_time =
|
||||
NM_MIN(ndp_msg_opt_prefix_preferred_time(msg, offset), valid_time);
|
||||
const NMNDiscAddress address = {
|
||||
const guint32 valid_time = ndp_msg_opt_prefix_valid_time(msg, offset);
|
||||
const guint32 preferred_time = ndp_msg_opt_prefix_preferred_time(msg, offset);
|
||||
NMNDiscAddress address;
|
||||
|
||||
/*
|
||||
* RFC 4862 Section 5.5.3 states:
|
||||
* c) If the preferred lifetime is greater than the valid lifetime,
|
||||
* silently ignore the Prefix Information option. A node MAY wish to
|
||||
* log a system management error in this case.
|
||||
*/
|
||||
if (preferred_time > valid_time) {
|
||||
_LOGW("skipping PIO - preferred lifetime > valid lifetime");
|
||||
continue;
|
||||
}
|
||||
|
||||
address = (NMNDiscAddress) {
|
||||
.address = r_network,
|
||||
.expiry_msec = _nm_ndisc_lifetime_to_expiry(now_msec, valid_time),
|
||||
.expiry_preferred_msec = _nm_ndisc_lifetime_to_expiry(now_msec, preferred_time),
|
||||
|
|
|
|||
|
|
@ -1419,6 +1419,9 @@ _check_and_add_domain(GPtrArray **p_arr, const char *domain)
|
|||
if (domain[0] == '.' || strstr(domain, ".."))
|
||||
return FALSE;
|
||||
|
||||
if (!g_utf8_validate(domain, -1, NULL))
|
||||
return FALSE;
|
||||
|
||||
len = strlen(domain);
|
||||
if (domain[len - 1] == '.') {
|
||||
copy = g_strndup(domain, len - 1);
|
||||
|
|
|
|||
|
|
@ -2211,8 +2211,10 @@ device_state_changed(NMDevice *device,
|
|||
con_v = nm_settings_connection_get_last_secret_agent_version_id(sett_conn);
|
||||
if (con_v == 0 || con_v == nm_agent_manager_get_agent_version_id(priv->agent_mgr)) {
|
||||
_LOGD(LOGD_DEVICE,
|
||||
"block-autoconnect: connection '%s' now blocked from autoconnect due to "
|
||||
"no secrets",
|
||||
"block-autoconnect: connection[" NM_HASH_OBFUSCATE_PTR_FMT
|
||||
"] (%s) now blocked from "
|
||||
"autoconnect due to no secrets",
|
||||
NM_HASH_OBFUSCATE_PTR(sett_conn),
|
||||
nm_settings_connection_get_id(sett_conn));
|
||||
nm_settings_connection_autoconnect_blocked_reason_set(
|
||||
sett_conn,
|
||||
|
|
@ -2230,10 +2232,10 @@ device_state_changed(NMDevice *device,
|
|||
* be marked as blocked when it fails with dependency-failed.
|
||||
*/
|
||||
_LOGD(LOGD_DEVICE,
|
||||
"block-autoconnect: connection[%p] (%s) now blocked from autoconnect due to "
|
||||
"failed "
|
||||
"dependency",
|
||||
sett_conn,
|
||||
"block-autoconnect: connection[" NM_HASH_OBFUSCATE_PTR_FMT
|
||||
"] (%s) now blocked "
|
||||
"from autoconnect due to failed dependency",
|
||||
NM_HASH_OBFUSCATE_PTR(sett_conn),
|
||||
nm_settings_connection_get_id(sett_conn));
|
||||
nm_manager_devcon_autoconnect_blocked_reason_set(
|
||||
priv->manager,
|
||||
|
|
@ -2255,16 +2257,17 @@ device_state_changed(NMDevice *device,
|
|||
/* blocked */
|
||||
} else if (tries != NM_AUTOCONNECT_RETRIES_FOREVER) {
|
||||
_LOGD(LOGD_DEVICE,
|
||||
"autoconnect: connection[%p] (%s): failed to autoconnect; %u tries left",
|
||||
sett_conn,
|
||||
"autoconnect: connection[" NM_HASH_OBFUSCATE_PTR_FMT "] (%s): failed to "
|
||||
"autoconnect; %u tries left",
|
||||
NM_HASH_OBFUSCATE_PTR(sett_conn),
|
||||
nm_settings_connection_get_id(sett_conn),
|
||||
tries - 1u);
|
||||
_connection_autoconnect_retries_set(self, device, sett_conn, tries - 1u);
|
||||
} else {
|
||||
_LOGD(LOGD_DEVICE,
|
||||
"autoconnect: connection[%p] (%s) failed to autoconnect; infinite tries "
|
||||
"left",
|
||||
sett_conn,
|
||||
"autoconnect: connection[" NM_HASH_OBFUSCATE_PTR_FMT "] (%s) failed to "
|
||||
"autoconnect; infinite tries left",
|
||||
NM_HASH_OBFUSCATE_PTR(sett_conn),
|
||||
nm_settings_connection_get_id(sett_conn));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3510,9 +3510,9 @@ do_connection_down(const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons
|
|||
active = found_active_cons->pdata[i];
|
||||
|
||||
if (!nm_client_deactivate_connection(nmc->client, active, NULL, &error)) {
|
||||
nmc_print(_("Connection '%s' deactivation failed: %s\n"),
|
||||
nm_active_connection_get_id(active),
|
||||
error->message);
|
||||
nmc_printerr(_("Connection '%s' deactivation failed: %s\n"),
|
||||
nm_active_connection_get_id(active),
|
||||
error->message);
|
||||
g_clear_error(&error);
|
||||
|
||||
if (info) {
|
||||
|
|
@ -3999,8 +3999,8 @@ normalized_controller_for_port(const GPtrArray *connections,
|
|||
}
|
||||
|
||||
if (!out_controller) {
|
||||
nmc_print(_("Warning: controller='%s' doesn't refer to any existing profile.\n"),
|
||||
controller);
|
||||
nmc_printerr(_("Warning: controller='%s' doesn't refer to any existing profile.\n"),
|
||||
controller);
|
||||
out_controller = controller;
|
||||
if (out_type)
|
||||
*out_type = type;
|
||||
|
|
@ -6944,7 +6944,7 @@ load_history_cmds(const char *uuid)
|
|||
kf = g_key_file_new();
|
||||
if (!g_key_file_load_from_file(kf, filename, G_KEY_FILE_KEEP_COMMENTS, &err)) {
|
||||
if (g_error_matches(err, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_PARSE))
|
||||
nmc_print("Warning: %s parse error: %s\n", filename, err->message);
|
||||
nmc_printerr("Warning: %s parse error: %s\n", filename, err->message);
|
||||
g_key_file_free(kf);
|
||||
g_free(filename);
|
||||
return;
|
||||
|
|
@ -6983,7 +6983,7 @@ save_history_cmds(const char *uuid)
|
|||
if (!g_key_file_load_from_file(kf, filename, G_KEY_FILE_KEEP_COMMENTS, &error)) {
|
||||
if (!g_error_matches(error, G_FILE_ERROR, G_FILE_ERROR_NOENT)
|
||||
&& !g_error_matches(error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_NOT_FOUND)) {
|
||||
nmc_print("Warning: %s parse error: %s\n", filename, error->message);
|
||||
nmc_printerr("Warning: %s parse error: %s\n", filename, error->message);
|
||||
return;
|
||||
}
|
||||
g_clear_error(&error);
|
||||
|
|
@ -7256,7 +7256,7 @@ editor_main_help(const char *command)
|
|||
"is not saved, the user is asked to confirm the action.\n"));
|
||||
break;
|
||||
default:
|
||||
nmc_print(_("Unknown command: '%s'\n"), command);
|
||||
nmc_printerr(_("Unknown command: '%s'\n"), command);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -7393,7 +7393,7 @@ editor_sub_usage(const char *command)
|
|||
"is not saved, the user is asked to confirm the action.\n"));
|
||||
break;
|
||||
default:
|
||||
nmc_print(_("Unknown command: '%s'\n"), command);
|
||||
nmc_printerr(_("Unknown command: '%s'\n"), command);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -7477,7 +7477,7 @@ progress_activation_editor_cb(gpointer user_data)
|
|||
} else if (ac_state == NM_ACTIVE_CONNECTION_STATE_DEACTIVATED
|
||||
|| dev_state == NM_DEVICE_STATE_FAILED) {
|
||||
nmc_terminal_erase_line();
|
||||
nmc_print(_("Error: Connection activation failed.\n"));
|
||||
nmc_printerr(_("Error: Connection activation failed.\n"));
|
||||
goto finish;
|
||||
}
|
||||
|
||||
|
|
@ -7704,9 +7704,9 @@ property_edit_submenu(NmCli *nmc,
|
|||
prop_val_user,
|
||||
&tmp_err);
|
||||
if (!set_result) {
|
||||
nmc_print(_("Error: failed to set '%s' property: %s\n"),
|
||||
prop_name,
|
||||
tmp_err->message);
|
||||
nmc_printerr(_("Error: failed to set '%s' property: %s\n"),
|
||||
prop_name,
|
||||
tmp_err->message);
|
||||
g_clear_error(&tmp_err);
|
||||
}
|
||||
break;
|
||||
|
|
@ -7723,9 +7723,9 @@ property_edit_submenu(NmCli *nmc,
|
|||
NM_META_ACCESSOR_MODIFIER_SET,
|
||||
prop_val_user,
|
||||
&tmp_err)) {
|
||||
nmc_print(_("Error: failed to set '%s' property: %s\n"),
|
||||
prop_name,
|
||||
tmp_err->message);
|
||||
nmc_printerr(_("Error: failed to set '%s' property: %s\n"),
|
||||
prop_name,
|
||||
tmp_err->message);
|
||||
g_clear_error(&tmp_err);
|
||||
}
|
||||
break;
|
||||
|
|
@ -7738,7 +7738,7 @@ property_edit_submenu(NmCli *nmc,
|
|||
: NM_META_ACCESSOR_MODIFIER_SET),
|
||||
cmd_property_arg,
|
||||
&tmp_err)) {
|
||||
nmc_print(_("Error: %s\n"), tmp_err->message);
|
||||
nmc_printerr(_("Error: %s\n"), tmp_err->message);
|
||||
g_clear_error(&tmp_err);
|
||||
}
|
||||
break;
|
||||
|
|
@ -7757,7 +7757,7 @@ property_edit_submenu(NmCli *nmc,
|
|||
|| matches(cmd_property_arg, "all"))
|
||||
editor_show_connection(connection, nmc);
|
||||
else
|
||||
nmc_print(_("Unknown command argument: '%s'\n"), cmd_property_arg);
|
||||
nmc_printerr(_("Unknown command argument: '%s'\n"), cmd_property_arg);
|
||||
} else {
|
||||
gs_free char *prop_val = NULL;
|
||||
|
||||
|
|
@ -7785,7 +7785,7 @@ property_edit_submenu(NmCli *nmc,
|
|||
|
||||
case NMC_EDITOR_SUB_CMD_UNKNOWN:
|
||||
default:
|
||||
nmc_print(_("Unknown command: '%s'\n"), cmd_property_user);
|
||||
nmc_printerr(_("Unknown command: '%s'\n"), cmd_property_user);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -7863,7 +7863,7 @@ ask_check_setting(const NmcConfig *nmc_config,
|
|||
valid_settings_main,
|
||||
valid_settings_port,
|
||||
&err))) {
|
||||
nmc_print(_("Error: invalid setting name; %s\n"), err->message);
|
||||
nmc_printerr(_("Error: invalid setting name; %s\n"), err->message);
|
||||
g_clear_error(&err);
|
||||
}
|
||||
return setting_name;
|
||||
|
|
@ -7888,7 +7888,7 @@ ask_check_property(const NmcConfig *nmc_config,
|
|||
|
||||
prop_name = nmc_string_is_valid(prop_name_user, valid_props, &tmp_err);
|
||||
if (!prop_name)
|
||||
nmc_print(_("Error: property %s\n"), tmp_err->message);
|
||||
nmc_printerr(_("Error: property %s\n"), tmp_err->message);
|
||||
|
||||
return prop_name;
|
||||
}
|
||||
|
|
@ -8098,15 +8098,15 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
NM_META_ACCESSOR_MODIFIER_ADD,
|
||||
prop_val_user,
|
||||
&tmp_err)) {
|
||||
nmc_print(_("Error: failed to set '%s' property: %s\n"),
|
||||
prop_name,
|
||||
tmp_err->message);
|
||||
nmc_printerr(_("Error: failed to set '%s' property: %s\n"),
|
||||
prop_name,
|
||||
tmp_err->message);
|
||||
g_clear_error(&tmp_err);
|
||||
}
|
||||
} else {
|
||||
nmc_print(_("Error: no setting selected; valid are [%s]\n"),
|
||||
valid_settings_str);
|
||||
nmc_print(_("use 'goto <setting>' first, or 'set <setting>.<property>'\n"));
|
||||
nmc_printerr(_("Error: no setting selected; valid are [%s]\n"),
|
||||
valid_settings_str);
|
||||
nmc_printerr(_("use 'goto <setting>' first, or 'set <setting>.<property>'\n"));
|
||||
}
|
||||
} else {
|
||||
gs_free char *prop_name = NULL;
|
||||
|
|
@ -8126,9 +8126,10 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
valid_settings_port);
|
||||
ss = ss_created;
|
||||
if (!ss) {
|
||||
nmc_print(_("Error: invalid setting argument '%s'; valid are [%s]\n"),
|
||||
cmd_arg_s,
|
||||
valid_settings_str);
|
||||
nmc_printerr(
|
||||
_("Error: invalid setting argument '%s'; valid are [%s]\n"),
|
||||
cmd_arg_s,
|
||||
valid_settings_str);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -8136,14 +8137,14 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
if (menu_ctx.curr_setting)
|
||||
ss = menu_ctx.curr_setting;
|
||||
else {
|
||||
nmc_print(_("Error: missing setting for '%s' property\n"), cmd_arg_p);
|
||||
nmc_printerr(_("Error: missing setting for '%s' property\n"), cmd_arg_p);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
prop_name = is_property_valid(ss, cmd_arg_p, &tmp_err);
|
||||
if (!prop_name) {
|
||||
nmc_print(_("Error: invalid property: %s\n"), tmp_err->message);
|
||||
nmc_printerr(_("Error: invalid property: %s\n"), tmp_err->message);
|
||||
g_clear_error(&tmp_err);
|
||||
break;
|
||||
}
|
||||
|
|
@ -8173,9 +8174,9 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
: NM_META_ACCESSOR_MODIFIER_SET,
|
||||
cmd_arg_v,
|
||||
&tmp_err)) {
|
||||
nmc_print(_("Error: failed to set '%s' property: %s\n"),
|
||||
prop_name,
|
||||
tmp_err->message);
|
||||
nmc_printerr(_("Error: failed to set '%s' property: %s\n"),
|
||||
prop_name,
|
||||
tmp_err->message);
|
||||
g_clear_error(&tmp_err);
|
||||
}
|
||||
|
||||
|
|
@ -8206,7 +8207,7 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
|
||||
setting_info = nm_meta_setting_info_editor_find_by_name(setting_name, FALSE);
|
||||
if (!setting_info) {
|
||||
nmc_print(_("Error: unknown setting '%s'\n"), setting_name);
|
||||
nmc_printerr(_("Error: unknown setting '%s'\n"), setting_name);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -8278,13 +8279,14 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
NM_META_ACCESSOR_MODIFIER_SET,
|
||||
NULL,
|
||||
&tmp_err)) {
|
||||
nmc_print(_("Error: failed to remove value of '%s': %s\n"),
|
||||
prop_name,
|
||||
tmp_err->message);
|
||||
nmc_printerr(_("Error: failed to remove value of '%s': %s\n"),
|
||||
prop_name,
|
||||
tmp_err->message);
|
||||
g_clear_error(&tmp_err);
|
||||
}
|
||||
} else
|
||||
nmc_print(_("Error: no argument given; valid are [%s]\n"), valid_settings_str);
|
||||
nmc_printerr(_("Error: no argument given; valid are [%s]\n"),
|
||||
valid_settings_str);
|
||||
} else {
|
||||
NMSetting *ss = NULL;
|
||||
gboolean descr_all;
|
||||
|
|
@ -8306,9 +8308,10 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
nmc_print(_("Setting '%s' is not present in the connection.\n"),
|
||||
user_s);
|
||||
} else {
|
||||
nmc_print(_("Error: invalid setting argument '%s'; valid are [%s]\n"),
|
||||
user_s,
|
||||
valid_settings_str);
|
||||
nmc_printerr(
|
||||
_("Error: invalid setting argument '%s'; valid are [%s]\n"),
|
||||
user_s,
|
||||
valid_settings_str);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -8340,9 +8343,9 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
: NM_META_ACCESSOR_MODIFIER_SET,
|
||||
cmd_arg_v ? cmd_arg_v : NULL,
|
||||
&tmp_err)) {
|
||||
nmc_print(_("Error: failed to remove value of '%s': %s\n"),
|
||||
prop_name,
|
||||
tmp_err->message);
|
||||
nmc_printerr(_("Error: failed to remove value of '%s': %s\n"),
|
||||
prop_name,
|
||||
tmp_err->message);
|
||||
}
|
||||
} else {
|
||||
NMSetting *s_tmp;
|
||||
|
|
@ -8366,8 +8369,8 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
nmc_tab_completion.setting = NULL; /* for TAB completion */
|
||||
}
|
||||
} else {
|
||||
nmc_print(_("Error: %s properties, nor it is a setting name.\n"),
|
||||
tmp_err->message);
|
||||
nmc_printerr(_("Error: %s properties, nor it is a setting name.\n"),
|
||||
tmp_err->message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -8390,9 +8393,9 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
/* Show property description */
|
||||
print_property_description(menu_ctx.curr_setting, prop_name);
|
||||
} else {
|
||||
nmc_print(_("Error: no setting selected; valid are [%s]\n"),
|
||||
valid_settings_str);
|
||||
nmc_print(
|
||||
nmc_printerr(_("Error: no setting selected; valid are [%s]\n"),
|
||||
valid_settings_str);
|
||||
nmc_printerr(
|
||||
_("use 'goto <setting>' first, or 'describe <setting>.<property>'\n"));
|
||||
}
|
||||
} else {
|
||||
|
|
@ -8414,9 +8417,10 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
valid_settings_main,
|
||||
valid_settings_port);
|
||||
if (!ss) {
|
||||
nmc_print(_("Error: invalid setting argument '%s'; valid are [%s]\n"),
|
||||
user_s,
|
||||
valid_settings_str);
|
||||
nmc_printerr(
|
||||
_("Error: invalid setting argument '%s'; valid are [%s]\n"),
|
||||
user_s,
|
||||
valid_settings_str);
|
||||
break;
|
||||
}
|
||||
ss_free = ss;
|
||||
|
|
@ -8425,9 +8429,9 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
ss = menu_ctx.curr_setting;
|
||||
|
||||
if (!ss) {
|
||||
nmc_print(_("Error: no setting selected; valid are [%s]\n"),
|
||||
valid_settings_str);
|
||||
nmc_print(
|
||||
nmc_printerr(_("Error: no setting selected; valid are [%s]\n"),
|
||||
valid_settings_str);
|
||||
nmc_printerr(
|
||||
_("use 'goto <setting>' first, or 'describe <setting>.<property>'\n"));
|
||||
} else if (descr_all) {
|
||||
/* Show description for all properties */
|
||||
|
|
@ -8451,9 +8455,9 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
if (s_tmp)
|
||||
print_setting_description(s_tmp);
|
||||
else {
|
||||
nmc_print(_("Error: invalid property: %s, "
|
||||
"neither a valid setting name.\n"),
|
||||
tmp_err->message);
|
||||
nmc_printerr(_("Error: invalid property: %s, "
|
||||
"neither a valid setting name.\n"),
|
||||
tmp_err->message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -8481,13 +8485,13 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
valid_settings_port,
|
||||
NULL);
|
||||
if (!s_name) {
|
||||
nmc_print(_("Error: unknown setting: '%s'\n"), user_s);
|
||||
nmc_printerr(_("Error: unknown setting: '%s'\n"), user_s);
|
||||
break;
|
||||
}
|
||||
ss = nm_connection_get_setting_by_name(connection, s_name);
|
||||
if (!ss) {
|
||||
nmc_print(_("Error: '%s' setting not present in the connection\n"),
|
||||
s_name);
|
||||
nmc_printerr(_("Error: '%s' setting not present in the connection\n"),
|
||||
s_name);
|
||||
break;
|
||||
}
|
||||
} else
|
||||
|
|
@ -8518,9 +8522,9 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
/* Print the whole setting */
|
||||
editor_show_setting(s_tmp, nmc);
|
||||
} else
|
||||
nmc_print(_("Error: invalid property: %s%s\n"),
|
||||
err->message,
|
||||
cmd_arg_s ? "" : _(", neither a valid setting name"));
|
||||
nmc_printerr(_("Error: invalid property: %s%s\n"),
|
||||
err->message,
|
||||
cmd_arg_s ? "" : _(", neither a valid setting name"));
|
||||
g_clear_error(&err);
|
||||
}
|
||||
}
|
||||
|
|
@ -8536,7 +8540,7 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
case NMC_EDITOR_MAIN_CMD_VERIFY:
|
||||
/* Verify current setting or the whole connection */
|
||||
if (cmd_arg && !nm_streq(cmd_arg, "all") && !nm_streq(cmd_arg, "fix")) {
|
||||
nmc_print(_("Invalid verify option: %s\n"), cmd_arg);
|
||||
nmc_printerr(_("Invalid verify option: %s\n"), cmd_arg);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -8544,9 +8548,9 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
gs_free_error GError *tmp_err = NULL;
|
||||
|
||||
nm_setting_verify(menu_ctx.curr_setting, NULL, &tmp_err);
|
||||
nmc_print(_("Verify setting '%s': %s\n"),
|
||||
nm_setting_get_name(menu_ctx.curr_setting),
|
||||
tmp_err ? tmp_err->message : "OK");
|
||||
nmc_printerr(_("Verify setting '%s': %s\n"),
|
||||
nm_setting_get_name(menu_ctx.curr_setting),
|
||||
tmp_err ? tmp_err->message : "OK");
|
||||
} else {
|
||||
gs_free_error GError *tmp_err = NULL;
|
||||
gboolean fixed = TRUE;
|
||||
|
|
@ -8559,9 +8563,15 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
g_clear_error(&tmp_err);
|
||||
fixed = nm_connection_normalize(connection, NULL, &modified, &tmp_err);
|
||||
}
|
||||
nmc_print(_("Verify connection: %s\n"), tmp_err ? tmp_err->message : "OK");
|
||||
|
||||
if (tmp_err) {
|
||||
nmc_printerr(_("Verify connection: %s\n"), tmp_err->message);
|
||||
} else {
|
||||
nmc_print(_("Verify connection: %s\n"), "OK");
|
||||
}
|
||||
|
||||
if (!fixed)
|
||||
nmc_print(_("The error cannot be fixed automatically.\n"));
|
||||
nmc_printerr(_("The error cannot be fixed automatically.\n"));
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
@ -8581,7 +8591,7 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
else if (matches(cmd_arg, "persistent"))
|
||||
temporary = FALSE;
|
||||
else {
|
||||
nmc_print(_("Error: invalid argument '%s'\n"), cmd_arg);
|
||||
nmc_printerr(_("Error: invalid argument '%s'\n"), cmd_arg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -8638,20 +8648,20 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
g_source_destroy(source);
|
||||
|
||||
if (nmc_editor_error) {
|
||||
nmc_print(_("Error: Failed to save '%s' (%s) connection: %s\n"),
|
||||
nm_connection_get_id(connection),
|
||||
nm_connection_get_uuid(connection),
|
||||
nmc_editor_error->message);
|
||||
nmc_printerr(_("Error: Failed to save '%s' (%s) connection: %s\n"),
|
||||
nm_connection_get_id(connection),
|
||||
nm_connection_get_uuid(connection),
|
||||
nmc_editor_error->message);
|
||||
g_error_free(nmc_editor_error);
|
||||
} else if (timeout) {
|
||||
nmc_print(_("Error: Timeout saving '%s' (%s) connection\n"),
|
||||
nm_connection_get_id(connection),
|
||||
nm_connection_get_uuid(connection));
|
||||
nmc_printerr(_("Error: Timeout saving '%s' (%s) connection\n"),
|
||||
nm_connection_get_id(connection),
|
||||
nm_connection_get_uuid(connection));
|
||||
} else {
|
||||
nmc_print(!rem_con ? _("Connection '%s' (%s) successfully saved.\n")
|
||||
: _("Connection '%s' (%s) successfully updated.\n"),
|
||||
nm_connection_get_id(connection),
|
||||
nm_connection_get_uuid(connection));
|
||||
nmc_printerr(!rem_con ? _("Connection '%s' (%s) successfully saved.\n")
|
||||
: _("Connection '%s' (%s) successfully updated.\n"),
|
||||
nm_connection_get_id(connection),
|
||||
nm_connection_get_uuid(connection));
|
||||
|
||||
con_tmp = nm_client_get_connection_by_uuid(nmc->client,
|
||||
nm_connection_get_uuid(connection));
|
||||
|
|
@ -8683,9 +8693,9 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
nmc_editor_cb_called = FALSE;
|
||||
nmc_editor_error = NULL;
|
||||
} else {
|
||||
nmc_print(_("Error: connection verification failed: %s\n"),
|
||||
err1 ? err1->message : _("(unknown error)"));
|
||||
nmc_print(_("You may try running 'verify fix' to fix errors.\n"));
|
||||
nmc_printerr(_("Error: connection verification failed: %s\n"),
|
||||
err1 ? err1->message : _("(unknown error)"));
|
||||
nmc_printerr(_("You may try running 'verify fix' to fix errors.\n"));
|
||||
}
|
||||
|
||||
g_clear_error(&err1);
|
||||
|
|
@ -8708,11 +8718,11 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
|
||||
if (is_connection_dirty(connection, rem_con)) {
|
||||
/* TRANSLATORS: do not translate 'save', leave it as it is */
|
||||
nmc_print(_("Error: connection is not saved. Type 'save' first.\n"));
|
||||
nmc_printerr(_("Error: connection is not saved. Type 'save' first.\n"));
|
||||
break;
|
||||
}
|
||||
if (!nm_connection_verify(NM_CONNECTION(rem_con), &tmp_err)) {
|
||||
nmc_print(_("Error: connection is not valid: %s\n"), tmp_err->message);
|
||||
nmc_printerr(_("Error: connection is not valid: %s\n"), tmp_err->message);
|
||||
g_clear_error(&tmp_err);
|
||||
break;
|
||||
}
|
||||
|
|
@ -8728,7 +8738,7 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
NULL,
|
||||
activate_connection_editor_cb,
|
||||
&tmp_err)) {
|
||||
nmc_print(_("Error: Cannot activate connection: %s.\n"), tmp_err->message);
|
||||
nmc_printerr(_("Error: Cannot activate connection: %s.\n"), tmp_err->message);
|
||||
g_clear_error(&tmp_err);
|
||||
break;
|
||||
}
|
||||
|
|
@ -8737,10 +8747,10 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
g_main_context_iteration(NULL, TRUE);
|
||||
|
||||
if (nmc_editor_error) {
|
||||
nmc_print(_("Error: Failed to activate '%s' (%s) connection: %s\n"),
|
||||
nm_connection_get_id(connection),
|
||||
nm_connection_get_uuid(connection),
|
||||
nmc_editor_error->message);
|
||||
nmc_printerr(_("Error: Failed to activate '%s' (%s) connection: %s\n"),
|
||||
nm_connection_get_id(connection),
|
||||
nm_connection_get_uuid(connection),
|
||||
nmc_editor_error->message);
|
||||
g_error_free(nmc_editor_error);
|
||||
} else {
|
||||
nmc_readline(&nmc->nmc_config,
|
||||
|
|
@ -8779,7 +8789,7 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
GError *tmp_err = NULL;
|
||||
gboolean bb;
|
||||
if (!nmc_string_to_bool(cmd_arg_v ? g_strstrip(cmd_arg_v) : "", &bb, &tmp_err)) {
|
||||
nmc_print(_("Error: status-line: %s\n"), tmp_err->message);
|
||||
nmc_printerr(_("Error: status-line: %s\n"), tmp_err->message);
|
||||
g_clear_error(&tmp_err);
|
||||
} else
|
||||
nmc->editor_status_line = bb;
|
||||
|
|
@ -8787,7 +8797,7 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
GError *tmp_err = NULL;
|
||||
gboolean bb;
|
||||
if (!nmc_string_to_bool(cmd_arg_v ? g_strstrip(cmd_arg_v) : "", &bb, &tmp_err)) {
|
||||
nmc_print(_("Error: save-confirmation: %s\n"), tmp_err->message);
|
||||
nmc_printerr(_("Error: save-confirmation: %s\n"), tmp_err->message);
|
||||
g_clear_error(&tmp_err);
|
||||
} else
|
||||
nmc->editor_save_confirmation = bb;
|
||||
|
|
@ -8795,7 +8805,7 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
GError *tmp_err = NULL;
|
||||
gboolean bb;
|
||||
if (!nmc_string_to_bool(cmd_arg_v ? g_strstrip(cmd_arg_v) : "", &bb, &tmp_err)) {
|
||||
nmc_print(_("Error: show-secrets: %s\n"), tmp_err->message);
|
||||
nmc_printerr(_("Error: show-secrets: %s\n"), tmp_err->message);
|
||||
g_clear_error(&tmp_err);
|
||||
} else
|
||||
nmc->nmc_config_mutable.show_secrets = bb;
|
||||
|
|
@ -8811,9 +8821,9 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
nmc->editor_save_confirmation ? "yes" : "no",
|
||||
nmc->nmc_config.show_secrets ? "yes" : "no");
|
||||
} else
|
||||
nmc_print(_("Invalid configuration option '%s'; allowed [%s]\n"),
|
||||
cmd_arg_v ?: "",
|
||||
"status-line, save-confirmation, show-secrets");
|
||||
nmc_printerr(_("Invalid configuration option '%s'; allowed [%s]\n"),
|
||||
cmd_arg_v ?: "",
|
||||
"status-line, save-confirmation, show-secrets");
|
||||
|
||||
break;
|
||||
|
||||
|
|
@ -8827,7 +8837,7 @@ editor_menu_main(NmCli *nmc, NMConnection *connection, const char *connection_ty
|
|||
|
||||
case NMC_EDITOR_MAIN_CMD_UNKNOWN:
|
||||
default:
|
||||
nmc_print(_("Unknown command: '%s'\n"), cmd_user);
|
||||
nmc_printerr(_("Unknown command: '%s'\n"), cmd_user);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -9075,10 +9085,11 @@ do_connection_edit(const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons
|
|||
connection_type = nm_setting_connection_get_connection_type(s_con);
|
||||
|
||||
if (type)
|
||||
nmc_print(_("Warning: editing existing connection '%s'; 'type' argument is ignored\n"),
|
||||
nm_connection_get_id(connection));
|
||||
nmc_printerr(
|
||||
_("Warning: editing existing connection '%s'; 'type' argument is ignored\n"),
|
||||
nm_connection_get_id(connection));
|
||||
if (con_name)
|
||||
nmc_print(
|
||||
nmc_printerr(
|
||||
_("Warning: editing existing connection '%s'; 'con-name' argument is ignored\n"),
|
||||
nm_connection_get_id(connection));
|
||||
|
||||
|
|
@ -9106,9 +9117,9 @@ do_connection_edit(const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons
|
|||
gs_free char *type_ask = NULL;
|
||||
|
||||
if (!type)
|
||||
nmc_print(_("Valid connection types: %s\n"), tmp_str);
|
||||
nmc_printerr(_("Valid connection types: %s\n"), tmp_str);
|
||||
else
|
||||
nmc_print(_("Error: invalid connection type; %s\n"), err1->message);
|
||||
nmc_printerr(_("Error: invalid connection type; %s\n"), err1->message);
|
||||
g_clear_error(&err1);
|
||||
|
||||
type_ask = nmc_readline(&nmc->nmc_config, EDITOR_PROMPT_CON_TYPE);
|
||||
|
|
|
|||
|
|
@ -933,7 +933,7 @@ do_general_hostname(const NMCCommand *cmd, NmCli *nmc, int argc, const char *con
|
|||
|
||||
hostname = *argv;
|
||||
if (next_arg(nmc, &argc, &argv, NULL) == 0)
|
||||
nmc_print("Warning: ignoring extra garbage after '%s' hostname\n", hostname);
|
||||
nmc_printerr("Warning: ignoring extra garbage after '%s' hostname\n", hostname);
|
||||
|
||||
nmc->should_wait++;
|
||||
nm_client_save_hostname_async(nmc->client, hostname, NULL, save_hostname_cb, nmc);
|
||||
|
|
|
|||
|
|
@ -246,10 +246,11 @@ wireless_band_channel_changed_cb(GObject *object, GParamSpec *pspec, gpointer us
|
|||
|
||||
mode = nm_setting_wireless_get_mode(NM_SETTING_WIRELESS(object));
|
||||
if (!mode || !*mode || strcmp(mode, NM_SETTING_WIRELESS_MODE_INFRA) == 0) {
|
||||
nmc_print(_("Warning: %s.%s set to '%s', but it might be ignored in infrastructure mode\n"),
|
||||
nm_setting_get_name(NM_SETTING(s_wireless)),
|
||||
g_param_spec_get_name(pspec),
|
||||
value);
|
||||
nmc_printerr(
|
||||
_("Warning: %s.%s set to '%s', but it might be ignored in infrastructure mode\n"),
|
||||
nm_setting_get_name(NM_SETTING(s_wireless)),
|
||||
g_param_spec_get_name(pspec),
|
||||
value);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -266,9 +267,9 @@ connection_controller_changed_cb(GObject *object, GParamSpec *pspec, gpointer us
|
|||
s_ipv4 = nm_connection_get_setting_by_name(connection, NM_SETTING_IP4_CONFIG_SETTING_NAME);
|
||||
s_ipv6 = nm_connection_get_setting_by_name(connection, NM_SETTING_IP6_CONFIG_SETTING_NAME);
|
||||
if (s_ipv4 || s_ipv6) {
|
||||
nmc_print(_("Warning: setting %s.%s requires removing ipv4 and ipv6 settings\n"),
|
||||
nm_setting_get_name(NM_SETTING(s_con)),
|
||||
g_param_spec_get_name(pspec));
|
||||
nmc_printerr(_("Warning: setting %s.%s requires removing ipv4 and ipv6 settings\n"),
|
||||
nm_setting_get_name(NM_SETTING(s_con)),
|
||||
g_param_spec_get_name(pspec));
|
||||
tmp_str = nmc_get_user_input(_("Do you want to remove them? [yes] "));
|
||||
if (!tmp_str || matches(tmp_str, "yes")) {
|
||||
if (s_ipv4)
|
||||
|
|
@ -376,8 +377,8 @@ _set_fcn_precheck_connection_secondaries(NMClient *client,
|
|||
if (nm_utils_is_uuid(*iter)) {
|
||||
con = nmc_find_connection(connections, "uuid", *iter, NULL, FALSE);
|
||||
if (!con) {
|
||||
nmc_print(_("Warning: %s is not an UUID of any existing connection profile\n"),
|
||||
*iter);
|
||||
nmc_printerr(_("Warning: %s is not an UUID of any existing connection profile\n"),
|
||||
*iter);
|
||||
} else {
|
||||
/* Currently, NM only supports VPN connections as secondaries */
|
||||
if (!nm_connection_is_type(con, NM_SETTING_VPN_SETTING_NAME)) {
|
||||
|
|
@ -434,13 +435,13 @@ _env_warn_fcn_handle(
|
|||
|
||||
switch (warn_level) {
|
||||
case NM_META_ENV_WARN_LEVEL_WARN:
|
||||
nmc_print(_("Warning: %s\n"), m);
|
||||
nmc_printerr(_("Warning: %s\n"), m);
|
||||
return;
|
||||
case NM_META_ENV_WARN_LEVEL_INFO:
|
||||
nmc_print(_("Info: %s\n"), m);
|
||||
return;
|
||||
}
|
||||
nmc_print(_("Error: %s\n"), m);
|
||||
nmc_printerr(_("Error: %s\n"), m);
|
||||
}
|
||||
|
||||
static NMDevice *const *
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue