mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-07 11:58:12 +02:00
ifcfg-rh: preserve existence of wired setting
Currently the plugin doesn't preserve the existence of a wired setting
because the writer saves only variables with non-default values and,
especially, the reader always creates the setting.
Fix this; now the writer writes HWADDR even if empty when the setting
is present; the reader creates the setting when at least one property
is found.
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/166
https://bugzilla.redhat.com/show_bug.cgi?id=1703960
(cherry picked from commit d6a51ced40)
This commit is contained in:
parent
e14cc0d424
commit
bb5038defc
7 changed files with 158 additions and 79 deletions
|
|
@ -693,6 +693,8 @@ _nm_g_slice_free_fcn_define (16)
|
||||||
* @NM_UTILS_ERROR_CONNECTION_AVAILABLE_TEMPORARY: the profile is currently not
|
* @NM_UTILS_ERROR_CONNECTION_AVAILABLE_TEMPORARY: the profile is currently not
|
||||||
* available/compatible with the device, but this may be only temporary.
|
* available/compatible with the device, but this may be only temporary.
|
||||||
*
|
*
|
||||||
|
* @NM_UTILS_ERROR_SETTING_MISSING: the setting is missing
|
||||||
|
*
|
||||||
* @NM_UTILS_ERROR_INVALID_ARGUMENT: invalid argument.
|
* @NM_UTILS_ERROR_INVALID_ARGUMENT: invalid argument.
|
||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
|
@ -715,6 +717,8 @@ typedef enum {
|
||||||
NM_UTILS_ERROR_CONNECTION_AVAILABLE_UNMANAGED_DEVICE,
|
NM_UTILS_ERROR_CONNECTION_AVAILABLE_UNMANAGED_DEVICE,
|
||||||
NM_UTILS_ERROR_CONNECTION_AVAILABLE_TEMPORARY,
|
NM_UTILS_ERROR_CONNECTION_AVAILABLE_TEMPORARY,
|
||||||
|
|
||||||
|
NM_UTILS_ERROR_SETTING_MISSING,
|
||||||
|
|
||||||
} NMUtilsError;
|
} NMUtilsError;
|
||||||
|
|
||||||
#define NM_UTILS_ERROR (nm_utils_error_quark ())
|
#define NM_UTILS_ERROR (nm_utils_error_quark ())
|
||||||
|
|
|
||||||
|
|
@ -4369,9 +4369,11 @@ parse_ethtool_options (shvarFile *ifcfg, NMConnection *connection)
|
||||||
gboolean autoneg = FALSE;
|
gboolean autoneg = FALSE;
|
||||||
guint32 speed = 0;
|
guint32 speed = 0;
|
||||||
const char *duplex = NULL;
|
const char *duplex = NULL;
|
||||||
|
gboolean wired_found = FALSE;
|
||||||
|
|
||||||
ethtool_opts = svGetValue (ifcfg, "ETHTOOL_OPTS", ðtool_opts_free);
|
ethtool_opts = svGetValue (ifcfg, "ETHTOOL_OPTS", ðtool_opts_free);
|
||||||
if (ethtool_opts) {
|
if (ethtool_opts) {
|
||||||
|
wired_found = TRUE;
|
||||||
/* WAKE_ON_LAN_IGNORE is inferred from a specified but empty ETHTOOL_OPTS */
|
/* WAKE_ON_LAN_IGNORE is inferred from a specified but empty ETHTOOL_OPTS */
|
||||||
if (!ethtool_opts[0])
|
if (!ethtool_opts[0])
|
||||||
wol_flags = NM_SETTING_WIRED_WAKE_ON_LAN_IGNORE;
|
wol_flags = NM_SETTING_WIRED_WAKE_ON_LAN_IGNORE;
|
||||||
|
|
@ -4395,7 +4397,9 @@ parse_ethtool_options (shvarFile *ifcfg, NMConnection *connection)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ETHTOOL_WAKE_ON_LAN = ignore overrides WoL settings in ETHTOOL_OPTS */
|
/* ETHTOOL_WAKE_ON_LAN = ignore overrides WoL settings in ETHTOOL_OPTS */
|
||||||
tmp = svGetValueStr (ifcfg, "ETHTOOL_WAKE_ON_LAN", &wol_value_free);
|
tmp = svGetValue (ifcfg, "ETHTOOL_WAKE_ON_LAN", &wol_value_free);
|
||||||
|
if (tmp)
|
||||||
|
wired_found = TRUE;
|
||||||
if (nm_streq0 (tmp, "ignore"))
|
if (nm_streq0 (tmp, "ignore"))
|
||||||
wol_flags = NM_SETTING_WIRED_WAKE_ON_LAN_IGNORE;
|
wol_flags = NM_SETTING_WIRED_WAKE_ON_LAN_IGNORE;
|
||||||
else if (tmp)
|
else if (tmp)
|
||||||
|
|
@ -4408,6 +4412,10 @@ parse_ethtool_options (shvarFile *ifcfg, NMConnection *connection)
|
||||||
}
|
}
|
||||||
|
|
||||||
s_wired = nm_connection_get_setting_wired (connection);
|
s_wired = nm_connection_get_setting_wired (connection);
|
||||||
|
if (!s_wired && wired_found) {
|
||||||
|
s_wired = (NMSettingWired *) nm_setting_wired_new ();
|
||||||
|
nm_connection_add_setting (connection, NM_SETTING (s_wired));
|
||||||
|
}
|
||||||
if (s_wired) {
|
if (s_wired) {
|
||||||
g_object_set (s_wired,
|
g_object_set (s_wired,
|
||||||
NM_SETTING_WIRED_WAKE_ON_LAN, wol_flags,
|
NM_SETTING_WIRED_WAKE_ON_LAN, wol_flags,
|
||||||
|
|
@ -4433,38 +4441,43 @@ make_wired_setting (shvarFile *ifcfg,
|
||||||
gs_unref_object NMSettingWired *s_wired = NULL;
|
gs_unref_object NMSettingWired *s_wired = NULL;
|
||||||
const char *cvalue;
|
const char *cvalue;
|
||||||
gs_free char *value = NULL;
|
gs_free char *value = NULL;
|
||||||
char *nettype;
|
gboolean found = FALSE;
|
||||||
|
|
||||||
s_wired = NM_SETTING_WIRED (nm_setting_wired_new ());
|
s_wired = NM_SETTING_WIRED (nm_setting_wired_new ());
|
||||||
|
|
||||||
value = svGetValueStr_cp (ifcfg, "MTU");
|
cvalue = svGetValue (ifcfg, "MTU", &value);
|
||||||
if (value) {
|
if (cvalue) {
|
||||||
int mtu;
|
int mtu;
|
||||||
|
|
||||||
mtu = _nm_utils_ascii_str_to_int64 (value, 0, 0, 65535, -1);
|
mtu = _nm_utils_ascii_str_to_int64 (cvalue, 0, 0, 65535, -1);
|
||||||
if (mtu >= 0)
|
if (mtu >= 0)
|
||||||
g_object_set (s_wired, NM_SETTING_WIRED_MTU, (guint) mtu, NULL);
|
g_object_set (s_wired, NM_SETTING_WIRED_MTU, (guint) mtu, NULL);
|
||||||
else
|
else
|
||||||
PARSE_WARNING ("invalid MTU '%s'", value);
|
PARSE_WARNING ("invalid MTU '%s'", cvalue);
|
||||||
nm_clear_g_free (&value);
|
nm_clear_g_free (&value);
|
||||||
|
found = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
value = svGetValueStr_cp (ifcfg, "HWADDR");
|
value = svGetValue_cp (ifcfg, "HWADDR");
|
||||||
if (value) {
|
if (value) {
|
||||||
|
if (value[0] != '\0') {
|
||||||
value = g_strstrip (value);
|
value = g_strstrip (value);
|
||||||
g_object_set (s_wired, NM_SETTING_WIRED_MAC_ADDRESS, value, NULL);
|
g_object_set (s_wired, NM_SETTING_WIRED_MAC_ADDRESS, value, NULL);
|
||||||
|
}
|
||||||
nm_clear_g_free (&value);
|
nm_clear_g_free (&value);
|
||||||
|
found = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
value = svGetValueStr_cp (ifcfg, "SUBCHANNELS");
|
cvalue = svGetValue (ifcfg, "SUBCHANNELS", &value);
|
||||||
if (value) {
|
if (cvalue) {
|
||||||
const char *p = value;
|
if (cvalue[0] != '\0') {
|
||||||
|
const char *p = cvalue;
|
||||||
gboolean success = TRUE;
|
gboolean success = TRUE;
|
||||||
|
|
||||||
/* basic sanity checks */
|
/* basic sanity checks */
|
||||||
while (*p) {
|
while (*p) {
|
||||||
if (!g_ascii_isxdigit (*p) && (*p != ',') && (*p != '.')) {
|
if (!g_ascii_isxdigit (*p) && (*p != ',') && (*p != '.')) {
|
||||||
PARSE_WARNING ("invalid SUBCHANNELS '%s'", value);
|
PARSE_WARNING ("invalid SUBCHANNELS '%s'", cvalue);
|
||||||
success = FALSE;
|
success = FALSE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -4475,44 +4488,53 @@ make_wired_setting (shvarFile *ifcfg,
|
||||||
gs_free const char **chans = NULL;
|
gs_free const char **chans = NULL;
|
||||||
guint32 num_chans;
|
guint32 num_chans;
|
||||||
|
|
||||||
chans = nm_utils_strsplit_set (value, ",");
|
chans = nm_utils_strsplit_set (cvalue, ",");
|
||||||
num_chans = NM_PTRARRAY_LEN (chans);
|
num_chans = NM_PTRARRAY_LEN (chans);
|
||||||
if (num_chans < 2 || num_chans > 3) {
|
if (num_chans < 2 || num_chans > 3) {
|
||||||
PARSE_WARNING ("invalid SUBCHANNELS '%s' (%u channels, 2 or 3 expected)",
|
PARSE_WARNING ("invalid SUBCHANNELS '%s' (%u channels, 2 or 3 expected)",
|
||||||
value, (unsigned) NM_PTRARRAY_LEN (chans));
|
cvalue, (unsigned) NM_PTRARRAY_LEN (chans));
|
||||||
} else
|
} else
|
||||||
g_object_set (s_wired, NM_SETTING_WIRED_S390_SUBCHANNELS, chans, NULL);
|
g_object_set (s_wired, NM_SETTING_WIRED_S390_SUBCHANNELS, chans, NULL);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
nm_clear_g_free (&value);
|
||||||
|
found = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
cvalue = svGetValue (ifcfg, "PORTNAME", &value);
|
||||||
|
if (cvalue) {
|
||||||
|
if (cvalue[0] != '\0')
|
||||||
|
nm_setting_wired_add_s390_option (s_wired, "portname", cvalue);
|
||||||
|
found = TRUE;
|
||||||
nm_clear_g_free (&value);
|
nm_clear_g_free (&value);
|
||||||
}
|
}
|
||||||
|
|
||||||
value = svGetValueStr_cp (ifcfg, "PORTNAME");
|
cvalue = svGetValue (ifcfg, "CTCPROT", &value);
|
||||||
if (value) {
|
if (cvalue) {
|
||||||
nm_setting_wired_add_s390_option (s_wired, "portname", value);
|
if (cvalue[0] != '\0')
|
||||||
|
nm_setting_wired_add_s390_option (s_wired, "ctcprot", cvalue);
|
||||||
nm_clear_g_free (&value);
|
nm_clear_g_free (&value);
|
||||||
|
found = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
value = svGetValueStr_cp (ifcfg, "CTCPROT");
|
cvalue = svGetValue (ifcfg, "NETTYPE", &value);
|
||||||
if (value) {
|
if (cvalue) {
|
||||||
nm_setting_wired_add_s390_option (s_wired, "ctcprot", value);
|
if (NM_IN_STRSET (cvalue, "qeth", "lcs", "ctc"))
|
||||||
nm_clear_g_free (&value);
|
g_object_set (s_wired, NM_SETTING_WIRED_S390_NETTYPE, cvalue, NULL);
|
||||||
}
|
|
||||||
|
|
||||||
nettype = svGetValueStr_cp (ifcfg, "NETTYPE");
|
|
||||||
if (nettype) {
|
|
||||||
if (!strcmp (nettype, "qeth") || !strcmp (nettype, "lcs") || !strcmp (nettype, "ctc"))
|
|
||||||
g_object_set (s_wired, NM_SETTING_WIRED_S390_NETTYPE, nettype, NULL);
|
|
||||||
else
|
else
|
||||||
PARSE_WARNING ("unknown s390 NETTYPE '%s'", nettype);
|
PARSE_WARNING ("unknown s390 NETTYPE '%s'", cvalue);
|
||||||
g_free (nettype);
|
nm_clear_g_free (&value);
|
||||||
|
found = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
value = svGetValueStr_cp (ifcfg, "OPTIONS");
|
cvalue = svGetValue (ifcfg, "OPTIONS", &value);
|
||||||
if (value) {
|
if (cvalue)
|
||||||
|
found = TRUE;
|
||||||
|
if (cvalue && cvalue[0]) {
|
||||||
gs_free const char **options = NULL;
|
gs_free const char **options = NULL;
|
||||||
gsize i;
|
gsize i;
|
||||||
|
|
||||||
options = nm_utils_strsplit_set_with_empty (value, " ");
|
options = nm_utils_strsplit_set_with_empty (cvalue, " ");
|
||||||
for (i = 0; options && options[i]; i++) {
|
for (i = 0; options && options[i]; i++) {
|
||||||
const char *line = options[i];
|
const char *line = options[i];
|
||||||
const char *equals;
|
const char *equals;
|
||||||
|
|
@ -4526,20 +4548,33 @@ make_wired_setting (shvarFile *ifcfg,
|
||||||
if (!valid)
|
if (!valid)
|
||||||
PARSE_WARNING ("invalid s390 OPTION '%s'", line);
|
PARSE_WARNING ("invalid s390 OPTION '%s'", line);
|
||||||
}
|
}
|
||||||
nm_clear_g_free (&value);
|
found = TRUE;
|
||||||
}
|
}
|
||||||
|
nm_clear_g_free (&value);
|
||||||
|
|
||||||
|
cvalue = svGetValueStr (ifcfg, "MACADDR", &value);
|
||||||
|
if (cvalue) {
|
||||||
|
if (cvalue[0] != '\0') {
|
||||||
g_object_set (s_wired,
|
g_object_set (s_wired,
|
||||||
NM_SETTING_WIRED_CLONED_MAC_ADDRESS,
|
NM_SETTING_WIRED_CLONED_MAC_ADDRESS,
|
||||||
svGetValueStr (ifcfg, "MACADDR", &value),
|
cvalue,
|
||||||
NULL);
|
NULL);
|
||||||
|
}
|
||||||
nm_clear_g_free (&value);
|
nm_clear_g_free (&value);
|
||||||
|
found = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
cvalue = svGetValueStr (ifcfg, "GENERATE_MAC_ADDRESS_MASK", &value);
|
||||||
|
if (cvalue) {
|
||||||
|
if (cvalue[0] != '\0') {
|
||||||
g_object_set (s_wired,
|
g_object_set (s_wired,
|
||||||
NM_SETTING_WIRED_GENERATE_MAC_ADDRESS_MASK,
|
NM_SETTING_WIRED_GENERATE_MAC_ADDRESS_MASK,
|
||||||
svGetValueStr (ifcfg, "GENERATE_MAC_ADDRESS_MASK", &value),
|
cvalue,
|
||||||
NULL);
|
NULL);
|
||||||
|
}
|
||||||
nm_clear_g_free (&value);
|
nm_clear_g_free (&value);
|
||||||
|
found = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
cvalue = svGetValueStr (ifcfg, "HWADDR_BLACKLIST", &value);
|
cvalue = svGetValueStr (ifcfg, "HWADDR_BLACKLIST", &value);
|
||||||
if (cvalue) {
|
if (cvalue) {
|
||||||
|
|
@ -4548,20 +4583,31 @@ make_wired_setting (shvarFile *ifcfg,
|
||||||
strv = transform_hwaddr_blacklist (cvalue);
|
strv = transform_hwaddr_blacklist (cvalue);
|
||||||
g_object_set (s_wired, NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST, strv, NULL);
|
g_object_set (s_wired, NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST, strv, NULL);
|
||||||
nm_clear_g_free (&value);
|
nm_clear_g_free (&value);
|
||||||
|
found = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
value = svGetValueStr_cp (ifcfg, "KEY_MGMT");
|
cvalue = svGetValue (ifcfg, "KEY_MGMT", &value);
|
||||||
if (value) {
|
if (cvalue)
|
||||||
if (!strcmp (value, "IEEE8021X")) {
|
found = TRUE;
|
||||||
*s_8021x = fill_8021x (ifcfg, file, value, FALSE, error);
|
if (cvalue && cvalue[0] != '\0') {
|
||||||
|
if (!strcmp (cvalue, "IEEE8021X")) {
|
||||||
|
*s_8021x = fill_8021x (ifcfg, file, cvalue, FALSE, error);
|
||||||
if (!*s_8021x)
|
if (!*s_8021x)
|
||||||
return NULL;
|
return NULL;
|
||||||
} else {
|
} else {
|
||||||
g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION,
|
g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION,
|
||||||
"Unknown wired KEY_MGMT type '%s'", value);
|
"Unknown wired KEY_MGMT type '%s'", cvalue);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
nm_clear_g_free (&value);
|
nm_clear_g_free (&value);
|
||||||
|
|
||||||
|
if (!found) {
|
||||||
|
g_set_error (error,
|
||||||
|
NM_UTILS_ERROR,
|
||||||
|
NM_UTILS_ERROR_SETTING_MISSING,
|
||||||
|
"The setting is missing.");
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (NMSetting *) g_steal_pointer (&s_wired);
|
return (NMSetting *) g_steal_pointer (&s_wired);
|
||||||
|
|
@ -4576,6 +4622,7 @@ wired_connection_from_ifcfg (const char *file,
|
||||||
NMSetting *con_setting = NULL;
|
NMSetting *con_setting = NULL;
|
||||||
NMSetting *wired_setting = NULL;
|
NMSetting *wired_setting = NULL;
|
||||||
NMSetting8021x *s_8021x = NULL;
|
NMSetting8021x *s_8021x = NULL;
|
||||||
|
GError *local = NULL;
|
||||||
|
|
||||||
g_return_val_if_fail (file != NULL, NULL);
|
g_return_val_if_fail (file != NULL, NULL);
|
||||||
g_return_val_if_fail (ifcfg != NULL, NULL);
|
g_return_val_if_fail (ifcfg != NULL, NULL);
|
||||||
|
|
@ -4591,11 +4638,15 @@ wired_connection_from_ifcfg (const char *file,
|
||||||
}
|
}
|
||||||
nm_connection_add_setting (connection, con_setting);
|
nm_connection_add_setting (connection, con_setting);
|
||||||
|
|
||||||
wired_setting = make_wired_setting (ifcfg, file, &s_8021x, error);
|
wired_setting = make_wired_setting (ifcfg, file, &s_8021x, &local);
|
||||||
if (!wired_setting) {
|
if (local && !g_error_matches (local, NM_UTILS_ERROR, NM_UTILS_ERROR_SETTING_MISSING)) {
|
||||||
|
g_propagate_error (error, local);
|
||||||
g_object_unref (connection);
|
g_object_unref (connection);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
g_clear_error (&local);
|
||||||
|
|
||||||
|
if (wired_setting)
|
||||||
nm_connection_add_setting (connection, wired_setting);
|
nm_connection_add_setting (connection, wired_setting);
|
||||||
|
|
||||||
if (s_8021x)
|
if (s_8021x)
|
||||||
|
|
@ -4827,6 +4878,7 @@ bond_connection_from_ifcfg (const char *file,
|
||||||
NMSetting *bond_setting = NULL;
|
NMSetting *bond_setting = NULL;
|
||||||
NMSetting *wired_setting = NULL;
|
NMSetting *wired_setting = NULL;
|
||||||
NMSetting8021x *s_8021x = NULL;
|
NMSetting8021x *s_8021x = NULL;
|
||||||
|
GError *local = NULL;
|
||||||
|
|
||||||
g_return_val_if_fail (file != NULL, NULL);
|
g_return_val_if_fail (file != NULL, NULL);
|
||||||
g_return_val_if_fail (ifcfg != NULL, NULL);
|
g_return_val_if_fail (ifcfg != NULL, NULL);
|
||||||
|
|
@ -4849,11 +4901,15 @@ bond_connection_from_ifcfg (const char *file,
|
||||||
}
|
}
|
||||||
nm_connection_add_setting (connection, bond_setting);
|
nm_connection_add_setting (connection, bond_setting);
|
||||||
|
|
||||||
wired_setting = make_wired_setting (ifcfg, file, &s_8021x, error);
|
wired_setting = make_wired_setting (ifcfg, file, &s_8021x, &local);
|
||||||
if (!wired_setting) {
|
if (local && !g_error_matches (local, NM_UTILS_ERROR, NM_UTILS_ERROR_SETTING_MISSING)) {
|
||||||
|
g_propagate_error (error, local);
|
||||||
g_object_unref (connection);
|
g_object_unref (connection);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
g_clear_error (&local);
|
||||||
|
|
||||||
|
if (wired_setting)
|
||||||
nm_connection_add_setting (connection, wired_setting);
|
nm_connection_add_setting (connection, wired_setting);
|
||||||
|
|
||||||
if (s_8021x)
|
if (s_8021x)
|
||||||
|
|
@ -4930,6 +4986,7 @@ team_connection_from_ifcfg (const char *file,
|
||||||
NMSetting *team_setting = NULL;
|
NMSetting *team_setting = NULL;
|
||||||
NMSetting *wired_setting = NULL;
|
NMSetting *wired_setting = NULL;
|
||||||
NMSetting8021x *s_8021x = NULL;
|
NMSetting8021x *s_8021x = NULL;
|
||||||
|
GError *local = NULL;
|
||||||
|
|
||||||
g_return_val_if_fail (file != NULL, NULL);
|
g_return_val_if_fail (file != NULL, NULL);
|
||||||
g_return_val_if_fail (ifcfg != NULL, NULL);
|
g_return_val_if_fail (ifcfg != NULL, NULL);
|
||||||
|
|
@ -4952,11 +5009,15 @@ team_connection_from_ifcfg (const char *file,
|
||||||
}
|
}
|
||||||
nm_connection_add_setting (connection, team_setting);
|
nm_connection_add_setting (connection, team_setting);
|
||||||
|
|
||||||
wired_setting = make_wired_setting (ifcfg, file, &s_8021x, error);
|
wired_setting = make_wired_setting (ifcfg, file, &s_8021x, &local);
|
||||||
if (!wired_setting) {
|
if (local && !g_error_matches (local, NM_UTILS_ERROR, NM_UTILS_ERROR_SETTING_MISSING)) {
|
||||||
|
g_propagate_error (error, local);
|
||||||
g_object_unref (connection);
|
g_object_unref (connection);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
g_clear_error (&local);
|
||||||
|
|
||||||
|
if (wired_setting)
|
||||||
nm_connection_add_setting (connection, wired_setting);
|
nm_connection_add_setting (connection, wired_setting);
|
||||||
|
|
||||||
if (s_8021x)
|
if (s_8021x)
|
||||||
|
|
@ -5207,6 +5268,7 @@ bridge_connection_from_ifcfg (const char *file,
|
||||||
NMSetting *bridge_setting = NULL;
|
NMSetting *bridge_setting = NULL;
|
||||||
NMSetting *wired_setting = NULL;
|
NMSetting *wired_setting = NULL;
|
||||||
NMSetting8021x *s_8021x = NULL;
|
NMSetting8021x *s_8021x = NULL;
|
||||||
|
GError *local = NULL;
|
||||||
|
|
||||||
g_return_val_if_fail (file != NULL, NULL);
|
g_return_val_if_fail (file != NULL, NULL);
|
||||||
g_return_val_if_fail (ifcfg != NULL, NULL);
|
g_return_val_if_fail (ifcfg != NULL, NULL);
|
||||||
|
|
@ -5229,11 +5291,15 @@ bridge_connection_from_ifcfg (const char *file,
|
||||||
}
|
}
|
||||||
nm_connection_add_setting (connection, bridge_setting);
|
nm_connection_add_setting (connection, bridge_setting);
|
||||||
|
|
||||||
wired_setting = make_wired_setting (ifcfg, file, &s_8021x, error);
|
wired_setting = make_wired_setting (ifcfg, file, &s_8021x, &local);
|
||||||
if (!wired_setting) {
|
if (local && !g_error_matches (local, NM_UTILS_ERROR, NM_UTILS_ERROR_SETTING_MISSING)) {
|
||||||
|
g_propagate_error (error, local);
|
||||||
g_object_unref (connection);
|
g_object_unref (connection);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
g_clear_error (&local);
|
||||||
|
|
||||||
|
if (wired_setting)
|
||||||
nm_connection_add_setting (connection, wired_setting);
|
nm_connection_add_setting (connection, wired_setting);
|
||||||
|
|
||||||
if (s_8021x)
|
if (s_8021x)
|
||||||
|
|
@ -5486,6 +5552,7 @@ vlan_connection_from_ifcfg (const char *file,
|
||||||
NMSetting *wired_setting = NULL;
|
NMSetting *wired_setting = NULL;
|
||||||
NMSetting *vlan_setting = NULL;
|
NMSetting *vlan_setting = NULL;
|
||||||
NMSetting8021x *s_8021x = NULL;
|
NMSetting8021x *s_8021x = NULL;
|
||||||
|
GError *local = NULL;
|
||||||
|
|
||||||
g_return_val_if_fail (file != NULL, NULL);
|
g_return_val_if_fail (file != NULL, NULL);
|
||||||
g_return_val_if_fail (ifcfg != NULL, NULL);
|
g_return_val_if_fail (ifcfg != NULL, NULL);
|
||||||
|
|
@ -5508,11 +5575,15 @@ vlan_connection_from_ifcfg (const char *file,
|
||||||
}
|
}
|
||||||
nm_connection_add_setting (connection, vlan_setting);
|
nm_connection_add_setting (connection, vlan_setting);
|
||||||
|
|
||||||
wired_setting = make_wired_setting (ifcfg, file, &s_8021x, error);
|
wired_setting = make_wired_setting (ifcfg, file, &s_8021x, &local);
|
||||||
if (!wired_setting) {
|
if (local && !g_error_matches (local, NM_UTILS_ERROR, NM_UTILS_ERROR_SETTING_MISSING)) {
|
||||||
|
g_propagate_error (error, local);
|
||||||
g_object_unref (connection);
|
g_object_unref (connection);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
g_clear_error (&local);
|
||||||
|
|
||||||
|
if (wired_setting)
|
||||||
nm_connection_add_setting (connection, wired_setting);
|
nm_connection_add_setting (connection, wired_setting);
|
||||||
|
|
||||||
if (s_8021x)
|
if (s_8021x)
|
||||||
|
|
|
||||||
|
|
@ -1302,7 +1302,7 @@ write_wired_for_virtual (NMConnection *connection, shvarFile *ifcfg)
|
||||||
has_wired = TRUE;
|
has_wired = TRUE;
|
||||||
|
|
||||||
device_mac = nm_setting_wired_get_mac_address (s_wired);
|
device_mac = nm_setting_wired_get_mac_address (s_wired);
|
||||||
svSetValueStr (ifcfg, "HWADDR", device_mac);
|
svSetValue (ifcfg, "HWADDR", device_mac ?: "");
|
||||||
|
|
||||||
cloned_mac = nm_setting_wired_get_cloned_mac_address (s_wired);
|
cloned_mac = nm_setting_wired_get_cloned_mac_address (s_wired);
|
||||||
svSetValueStr (ifcfg, "MACADDR", cloned_mac);
|
svSetValueStr (ifcfg, "MACADDR", cloned_mac);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
BONDING_OPTS="downdelay=5 miimon=100 mode=balance-rr updelay=10"
|
BONDING_OPTS="downdelay=5 miimon=100 mode=balance-rr updelay=10"
|
||||||
TYPE=Bond
|
TYPE=Bond
|
||||||
BONDING_MASTER=yes
|
BONDING_MASTER=yes
|
||||||
|
HWADDR=
|
||||||
PROXY_METHOD=none
|
PROXY_METHOD=none
|
||||||
BROWSER_ONLY=no
|
BROWSER_ONLY=no
|
||||||
BOOTPROTO=none
|
BOOTPROTO=none
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ VLAN_ID=444
|
||||||
REORDER_HDR=yes
|
REORDER_HDR=yes
|
||||||
GVRP=no
|
GVRP=no
|
||||||
MVRP=no
|
MVRP=no
|
||||||
|
HWADDR=
|
||||||
PROXY_METHOD=none
|
PROXY_METHOD=none
|
||||||
BROWSER_ONLY=no
|
BROWSER_ONLY=no
|
||||||
BOOTPROTO=dhcp
|
BOOTPROTO=dhcp
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ VLAN_FLAGS=LOOSE_BINDING
|
||||||
MVRP=no
|
MVRP=no
|
||||||
VLAN_INGRESS_PRIORITY_MAP=0:1,2:5
|
VLAN_INGRESS_PRIORITY_MAP=0:1,2:5
|
||||||
VLAN_EGRESS_PRIORITY_MAP=3:1,12:3,14:7
|
VLAN_EGRESS_PRIORITY_MAP=3:1,12:3,14:7
|
||||||
|
HWADDR=
|
||||||
PROXY_METHOD=none
|
PROXY_METHOD=none
|
||||||
BROWSER_ONLY=no
|
BROWSER_ONLY=no
|
||||||
BOOTPROTO=none
|
BOOTPROTO=none
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ VLAN_ID=142
|
||||||
REORDER_HDR=yes
|
REORDER_HDR=yes
|
||||||
GVRP=no
|
GVRP=no
|
||||||
MVRP=no
|
MVRP=no
|
||||||
|
HWADDR=
|
||||||
NAME=team-slave-enp31s0f1-142
|
NAME=team-slave-enp31s0f1-142
|
||||||
UUID=74f435bb-ede4-415a-9d48-f580b60eba04
|
UUID=74f435bb-ede4-415a-9d48-f580b60eba04
|
||||||
DEVICE=enp31s0f1-142
|
DEVICE=enp31s0f1-142
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue