mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-09 04:48:10 +02:00
merge: branch 'bg/link-setting-ifcfg'
Deprecate the ifcfg-rh setting plugin https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1570
This commit is contained in:
commit
7e2f2174ab
9 changed files with 61 additions and 30 deletions
|
|
@ -172,10 +172,9 @@ AC_SUBST(nmrundir, '${runstatedir}'/$PACKAGE, [NetworkManager runtime state dire
|
||||||
AC_CHECK_FUNCS([__secure_getenv secure_getenv])
|
AC_CHECK_FUNCS([__secure_getenv secure_getenv])
|
||||||
|
|
||||||
# Alternative configuration plugins
|
# Alternative configuration plugins
|
||||||
AC_ARG_ENABLE(ifcfg-rh, AS_HELP_STRING([--enable-ifcfg-rh], [enable ifcfg-rh configuration plugin (Fedora/RHEL)]))
|
AC_ARG_ENABLE(ifcfg-rh, AS_HELP_STRING([--enable-ifcfg-rh], [enable ifcfg-rh configuration plugin (Fedora/RHEL) (deprecated)]))
|
||||||
AC_ARG_ENABLE(ifupdown, AS_HELP_STRING([--enable-ifupdown], [enable ifupdown configuration plugin (Debian/Ubuntu)]))
|
AC_ARG_ENABLE(ifupdown, AS_HELP_STRING([--enable-ifupdown], [enable ifupdown configuration plugin (Debian/Ubuntu)]))
|
||||||
# Default alternative plugins by distribution
|
# Default alternative plugins by distribution
|
||||||
AS_IF([test -z "$enable_ifcfg_rh" -a -d /etc/sysconfig/network-scripts], enable_ifcfg_rh=yes)
|
|
||||||
AS_IF([test -z "$enable_ifupdown" -a -f /etc/debian_version], enable_ifupdown=yes)
|
AS_IF([test -z "$enable_ifupdown" -a -f /etc/debian_version], enable_ifupdown=yes)
|
||||||
# Otherwise, plugins default to "no"
|
# Otherwise, plugins default to "no"
|
||||||
AS_IF([test -z "$enable_ifcfg_rh"], enable_ifcfg_rh=no)
|
AS_IF([test -z "$enable_ifcfg_rh"], enable_ifcfg_rh=no)
|
||||||
|
|
|
||||||
|
|
@ -1646,9 +1646,9 @@ enable=nm-version-min:1.3,nm-version-min:1.2.6,nm-version-min:1.0.16
|
||||||
<term><varname>ifcfg-rh</varname></term>
|
<term><varname>ifcfg-rh</varname></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
This plugin is used on the Fedora and Red Hat Enterprise
|
This plugin is now deprecated; it can be used on the
|
||||||
Linux distributions to read and write configuration from
|
Fedora and Red Hat Enterprise Linux distributions to read
|
||||||
the standard
|
and write configuration from the standard
|
||||||
<filename>/etc/sysconfig/network-scripts/ifcfg-*</filename>
|
<filename>/etc/sysconfig/network-scripts/ifcfg-*</filename>
|
||||||
files. It currently supports reading Ethernet, Wi-Fi,
|
files. It currently supports reading Ethernet, Wi-Fi,
|
||||||
InfiniBand, VLAN, Bond, Bridge, and Team connections.
|
InfiniBand, VLAN, Bond, Bridge, and Team connections.
|
||||||
|
|
|
||||||
|
|
@ -334,7 +334,7 @@ DEVICETYPE=TeamPort
|
||||||
|
|
||||||
<xsl:template match="setting">
|
<xsl:template match="setting">
|
||||||
<xsl:variable name="setting_name" select="../@name"/>
|
<xsl:variable name="setting_name" select="../@name"/>
|
||||||
<xsl:variable name="unsupported" select="'802-11-olpc-mesh, adsl, bluetooth, cdma, dummy, generic, gsm, ip-tunnel, macsec, macvlan, ppp, pppoe, serial, tun, vpn, vxlan, wimax'"/>
|
<xsl:variable name="unsupported" select="'6lowpan, 802-11-olpc-mesh, adsl, bluetooth, cdma, dummy, generic, gsm, ip-tunnel, link, loopback, macsec, macvlan, ovs-bridge, ovs-dpdk, ovs-interface, ovs-patch, ovs-port, ppp, pppoe, serial, tun, veth, vpn, vrf, vxlan, wifi-p2p, wimax, wireguard, wpan'"/>
|
||||||
<xsl:if test="not (contains(concat(' ', $unsupported, ','), concat(' ', @name, ',')))">
|
<xsl:if test="not (contains(concat(' ', $unsupported, ','), concat(' ', @name, ',')))">
|
||||||
<table>
|
<table>
|
||||||
<title><xsl:value-of select="@name"/> setting</title>
|
<title><xsl:value-of select="@name"/> setting</title>
|
||||||
|
|
|
||||||
|
|
@ -289,11 +289,6 @@ glib_dep = declare_dependency(
|
||||||
)
|
)
|
||||||
|
|
||||||
enable_ifcfg_rh = get_option('ifcfg_rh')
|
enable_ifcfg_rh = get_option('ifcfg_rh')
|
||||||
if enable_ifcfg_rh == 'auto'
|
|
||||||
enable_ifcfg_rh = (run_command('test', '-e', '/etc/sysconfig/network-scripts').returncode() == 0)
|
|
||||||
else
|
|
||||||
enable_ifcfg_rh = (enable_ifcfg_rh != 'false')
|
|
||||||
endif
|
|
||||||
|
|
||||||
enable_ifupdown = get_option('ifupdown')
|
enable_ifupdown = get_option('ifupdown')
|
||||||
if enable_ifupdown == 'auto'
|
if enable_ifupdown == 'auto'
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ option('ebpf', type: 'combo', choices: ['auto', 'true', 'false'], description: '
|
||||||
|
|
||||||
# configuration plugins
|
# configuration plugins
|
||||||
option('config_plugins_default', type: 'string', value: '', description: 'Default configuration option for main.plugins setting, used as fallback if the configuration option is unset')
|
option('config_plugins_default', type: 'string', value: '', description: 'Default configuration option for main.plugins setting, used as fallback if the configuration option is unset')
|
||||||
option('ifcfg_rh', type: 'combo', choices: ['auto', 'true', 'false'], value: 'auto', description: 'enable ifcfg-rh configuration plugin (Fedora/RHEL)')
|
option('ifcfg_rh', type: 'boolean', value: false, description: 'enable ifcfg-rh configuration plugin (Fedora/RHEL) (deprecated)')
|
||||||
option('ifupdown', type: 'combo', choices:['auto', 'true', 'false'], value: 'auto', description: 'enable ifupdown configuration plugin (Debian/Ubuntu)')
|
option('ifupdown', type: 'combo', choices:['auto', 'true', 'false'], value: 'auto', description: 'enable ifupdown configuration plugin (Debian/Ubuntu)')
|
||||||
|
|
||||||
# handlers for resolv.conf
|
# handlers for resolv.conf
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,7 @@ typedef struct {
|
||||||
GHashTable *unmanaged_specs;
|
GHashTable *unmanaged_specs;
|
||||||
GHashTable *unrecognized_specs;
|
GHashTable *unrecognized_specs;
|
||||||
|
|
||||||
|
gboolean warned;
|
||||||
} NMSIfcfgRHPluginPrivate;
|
} NMSIfcfgRHPluginPrivate;
|
||||||
|
|
||||||
struct _NMSIfcfgRHPlugin {
|
struct _NMSIfcfgRHPlugin {
|
||||||
|
|
@ -177,6 +178,8 @@ nm_assert_self(NMSIfcfgRHPlugin *self, gboolean unhandled_specs_consistent)
|
||||||
static NMSIfcfgRHStorage *
|
static NMSIfcfgRHStorage *
|
||||||
_load_file(NMSIfcfgRHPlugin *self, const char *filename, GError **error)
|
_load_file(NMSIfcfgRHPlugin *self, const char *filename, GError **error)
|
||||||
{
|
{
|
||||||
|
NMSIfcfgRHPluginPrivate *priv = NMS_IFCFG_RH_PLUGIN_GET_PRIVATE(self);
|
||||||
|
NMSIfcfgRHStorage *ret = NULL;
|
||||||
gs_unref_object NMConnection *connection = NULL;
|
gs_unref_object NMConnection *connection = NULL;
|
||||||
gs_free_error GError *load_error = NULL;
|
gs_free_error GError *load_error = NULL;
|
||||||
gs_free char *unhandled_spec = NULL;
|
gs_free char *unhandled_spec = NULL;
|
||||||
|
|
@ -224,16 +227,23 @@ _load_file(NMSIfcfgRHPlugin *self, const char *filename, GError **error)
|
||||||
nm_assert_not_reached();
|
nm_assert_not_reached();
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return nms_ifcfg_rh_storage_new_unhandled(self,
|
|
||||||
|
ret = nms_ifcfg_rh_storage_new_unhandled(self, filename, unmanaged_spec, unrecognized_spec);
|
||||||
|
} else {
|
||||||
|
ret = nms_ifcfg_rh_storage_new_connection(self,
|
||||||
filename,
|
filename,
|
||||||
unmanaged_spec,
|
g_steal_pointer(&connection),
|
||||||
unrecognized_spec);
|
&st.st_mtim);
|
||||||
}
|
}
|
||||||
|
|
||||||
return nms_ifcfg_rh_storage_new_connection(self,
|
if (!priv->warned) {
|
||||||
filename,
|
nm_log_info(_NMLOG_DOMAIN,
|
||||||
g_steal_pointer(&connection),
|
"Warning: the ifcfg-rh plugin is deprecated, please migrate connections "
|
||||||
&st.st_mtim);
|
"to the keyfile format using \"nmcli connection migrate\".");
|
||||||
|
priv->warned = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
||||||
|
|
@ -61,6 +61,24 @@
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void
|
||||||
|
set_error_unsupported(GError **error,
|
||||||
|
NMConnection *connection,
|
||||||
|
const char *name,
|
||||||
|
gboolean is_setting)
|
||||||
|
{
|
||||||
|
g_set_error(error,
|
||||||
|
NM_SETTINGS_ERROR,
|
||||||
|
NM_SETTINGS_ERROR_NOT_SUPPORTED_BY_PLUGIN,
|
||||||
|
"The ifcfg-rh plugin doesn't support %s '%s'. If you are modifying an existing "
|
||||||
|
"connection profile saved in ifcfg-rh format, please migrate the connection to "
|
||||||
|
"keyfile using 'nmcli connection migrate %s' or via the Update2() D-Bus API "
|
||||||
|
"and try again.",
|
||||||
|
is_setting ? "setting" : "property",
|
||||||
|
name,
|
||||||
|
nm_connection_get_uuid(connection));
|
||||||
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
save_secret_flags(shvarFile *ifcfg, const char *key, NMSettingSecretFlags flags)
|
save_secret_flags(shvarFile *ifcfg, const char *key, NMSettingSecretFlags flags)
|
||||||
{
|
{
|
||||||
|
|
@ -3488,6 +3506,11 @@ do_write_construct(NMConnection *connection,
|
||||||
write_sriov_setting(connection, ifcfg);
|
write_sriov_setting(connection, ifcfg);
|
||||||
write_tc_setting(connection, ifcfg);
|
write_tc_setting(connection, ifcfg);
|
||||||
|
|
||||||
|
if (_nm_connection_get_setting(connection, NM_TYPE_SETTING_LINK)) {
|
||||||
|
set_error_unsupported(error, connection, "link", TRUE);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
route_path_is_svformat = utils_has_route_file_new_syntax(route_path);
|
route_path_is_svformat = utils_has_route_file_new_syntax(route_path);
|
||||||
|
|
||||||
has_complex_routes_v4 = utils_has_complex_routes(ifcfg_name, AF_INET);
|
has_complex_routes_v4 = utils_has_complex_routes(ifcfg_name, AF_INET);
|
||||||
|
|
|
||||||
|
|
@ -51,11 +51,10 @@
|
||||||
#include "nm-setting-match.h"
|
#include "nm-setting-match.h"
|
||||||
#include "nm-setting-olpc-mesh.h"
|
#include "nm-setting-olpc-mesh.h"
|
||||||
#include "nm-setting-ovs-bridge.h"
|
#include "nm-setting-ovs-bridge.h"
|
||||||
#include "nm-setting-ovs-interface.h"
|
|
||||||
#include "nm-setting-ovs-dpdk.h"
|
#include "nm-setting-ovs-dpdk.h"
|
||||||
|
#include "nm-setting-ovs-interface.h"
|
||||||
#include "nm-setting-ovs-patch.h"
|
#include "nm-setting-ovs-patch.h"
|
||||||
#include "nm-setting-ovs-port.h"
|
#include "nm-setting-ovs-port.h"
|
||||||
#include "nm-setting-wifi-p2p.h"
|
|
||||||
#include "nm-setting-ppp.h"
|
#include "nm-setting-ppp.h"
|
||||||
#include "nm-setting-pppoe.h"
|
#include "nm-setting-pppoe.h"
|
||||||
#include "nm-setting-proxy.h"
|
#include "nm-setting-proxy.h"
|
||||||
|
|
@ -71,6 +70,7 @@
|
||||||
#include "nm-setting-vpn.h"
|
#include "nm-setting-vpn.h"
|
||||||
#include "nm-setting-vrf.h"
|
#include "nm-setting-vrf.h"
|
||||||
#include "nm-setting-vxlan.h"
|
#include "nm-setting-vxlan.h"
|
||||||
|
#include "nm-setting-wifi-p2p.h"
|
||||||
#include "nm-setting-wimax.h"
|
#include "nm-setting-wimax.h"
|
||||||
#include "nm-setting-wired.h"
|
#include "nm-setting-wired.h"
|
||||||
#include "nm-setting-wireguard.h"
|
#include "nm-setting-wireguard.h"
|
||||||
|
|
|
||||||
|
|
@ -253,6 +253,9 @@ GQuark nm_secret_agent_error_quark(void);
|
||||||
* @NM_SETTINGS_ERROR_VERSION_ID_MISMATCH: The profile's VersionId mismatched
|
* @NM_SETTINGS_ERROR_VERSION_ID_MISMATCH: The profile's VersionId mismatched
|
||||||
* and the update is rejected. See the "version-id" argument to Update2()
|
* and the update is rejected. See the "version-id" argument to Update2()
|
||||||
* method. Since 1.44.
|
* method. Since 1.44.
|
||||||
|
* @NM_SETTINGS_ERROR_NOT_SUPPORTED_BY_PLUGIN: the requested operation is not
|
||||||
|
* supported by the settings plugin currently in use for the specified object.
|
||||||
|
* Since: 1.44.
|
||||||
*
|
*
|
||||||
* Errors related to the settings/persistent configuration interface of
|
* Errors related to the settings/persistent configuration interface of
|
||||||
* NetworkManager.
|
* NetworkManager.
|
||||||
|
|
@ -262,15 +265,16 @@ GQuark nm_secret_agent_error_quark(void);
|
||||||
* D-Bus errors in that namespace.
|
* D-Bus errors in that namespace.
|
||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
NM_SETTINGS_ERROR_FAILED = 0, /*< nick=Failed >*/
|
NM_SETTINGS_ERROR_FAILED = 0, /*< nick=Failed >*/
|
||||||
NM_SETTINGS_ERROR_PERMISSION_DENIED, /*< nick=PermissionDenied >*/
|
NM_SETTINGS_ERROR_PERMISSION_DENIED, /*< nick=PermissionDenied >*/
|
||||||
NM_SETTINGS_ERROR_NOT_SUPPORTED, /*< nick=NotSupported >*/
|
NM_SETTINGS_ERROR_NOT_SUPPORTED, /*< nick=NotSupported >*/
|
||||||
NM_SETTINGS_ERROR_INVALID_CONNECTION, /*< nick=InvalidConnection >*/
|
NM_SETTINGS_ERROR_INVALID_CONNECTION, /*< nick=InvalidConnection >*/
|
||||||
NM_SETTINGS_ERROR_READ_ONLY_CONNECTION, /*< nick=ReadOnlyConnection >*/
|
NM_SETTINGS_ERROR_READ_ONLY_CONNECTION, /*< nick=ReadOnlyConnection >*/
|
||||||
NM_SETTINGS_ERROR_UUID_EXISTS, /*< nick=UuidExists >*/
|
NM_SETTINGS_ERROR_UUID_EXISTS, /*< nick=UuidExists >*/
|
||||||
NM_SETTINGS_ERROR_INVALID_HOSTNAME, /*< nick=InvalidHostname >*/
|
NM_SETTINGS_ERROR_INVALID_HOSTNAME, /*< nick=InvalidHostname >*/
|
||||||
NM_SETTINGS_ERROR_INVALID_ARGUMENTS, /*< nick=InvalidArguments >*/
|
NM_SETTINGS_ERROR_INVALID_ARGUMENTS, /*< nick=InvalidArguments >*/
|
||||||
NM_SETTINGS_ERROR_VERSION_ID_MISMATCH, /*< nick=VersionIdMismatch >*/
|
NM_SETTINGS_ERROR_VERSION_ID_MISMATCH, /*< nick=VersionIdMismatch >*/
|
||||||
|
NM_SETTINGS_ERROR_NOT_SUPPORTED_BY_PLUGIN, /*< nick=NotSupportedByPlugin >*/
|
||||||
} NMSettingsError;
|
} NMSettingsError;
|
||||||
|
|
||||||
GQuark nm_settings_error_quark(void);
|
GQuark nm_settings_error_quark(void);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue