summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2021-05-10 22:44:41 +0200
committerThomas Haller <thaller@redhat.com>2021-05-12 13:43:36 +0200
commit166c458411d5e7827efbb3ccc91f3d13e36da7d1 (patch)
treec5d2556d77893230a36c25a7b61c89f01e5fbcf8
parenta21714b82131230c54cd29657b42efef39319984 (diff)
downloadNetworkManager-166c458411d5e7827efbb3ccc91f3d13e36da7d1.tar.gz
ifcfg-rh: refactor common parts of write_wired_setting()/write_wired_for_virtual()
-rw-r--r--src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c155
1 files changed, 77 insertions, 78 deletions
diff --git a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c
index 3d82167c9c..a7d11babc5 100644
--- a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c
+++ b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-writer.c
@@ -1077,27 +1077,18 @@ write_hostname_setting(NMConnection *connection, shvarFile *ifcfg)
svSetValueInt64_cond(ifcfg, "HOSTNAME_ONLY_FROM_DEFAULT", t != NM_TERNARY_DEFAULT, t);
}
-static gboolean
-write_wired_setting(NMConnection *connection, shvarFile *ifcfg, GError **error)
+static void
+write_wired_setting_impl(NMSettingWired *s_wired, shvarFile *ifcfg, gboolean is_virtual)
{
- NMSettingWired * s_wired;
const char *const *s390_subchannels;
guint32 mtu;
guint32 num_opts;
guint32 i;
const char *const *macaddr_blacklist;
- s_wired = nm_connection_get_setting_wired(connection);
- if (!s_wired) {
- g_set_error(error,
- NM_SETTINGS_ERROR,
- NM_SETTINGS_ERROR_FAILED,
- "Missing '%s' setting",
- NM_SETTING_WIRED_SETTING_NAME);
- return FALSE;
- }
-
- svSetValueStr(ifcfg, "HWADDR", nm_setting_wired_get_mac_address(s_wired));
+ svSetValue(ifcfg,
+ "HWADDR",
+ nm_setting_wired_get_mac_address(s_wired) ?: (is_virtual ? "" : NULL));
svSetValueStr(ifcfg, "MACADDR", nm_setting_wired_get_cloned_mac_address(s_wired));
@@ -1105,78 +1096,104 @@ write_wired_setting(NMConnection *connection, shvarFile *ifcfg, GError **error)
"GENERATE_MAC_ADDRESS_MASK",
nm_setting_wired_get_generate_mac_address_mask(s_wired));
- macaddr_blacklist = nm_setting_wired_get_mac_address_blacklist(s_wired);
- if (macaddr_blacklist[0]) {
- gs_free char *blacklist_str = NULL;
+ if (!is_virtual) {
+ macaddr_blacklist = nm_setting_wired_get_mac_address_blacklist(s_wired);
+ if (macaddr_blacklist[0]) {
+ gs_free char *blacklist_str = NULL;
- blacklist_str = g_strjoinv(" ", (char **) macaddr_blacklist);
- svSetValueStr(ifcfg, "HWADDR_BLACKLIST", blacklist_str);
+ blacklist_str = g_strjoinv(" ", (char **) macaddr_blacklist);
+ svSetValueStr(ifcfg, "HWADDR_BLACKLIST", blacklist_str);
+ }
}
mtu = nm_setting_wired_get_mtu(s_wired);
svSetValueInt64_cond(ifcfg, "MTU", mtu != 0, mtu);
- s390_subchannels = nm_setting_wired_get_s390_subchannels(s_wired);
+ if (!is_virtual) {
+ s390_subchannels = nm_setting_wired_get_s390_subchannels(s_wired);
- {
- gs_free char *tmp = NULL;
- gsize len = NM_PTRARRAY_LEN(s390_subchannels);
+ {
+ gs_free char *tmp = NULL;
+ gsize len = NM_PTRARRAY_LEN(s390_subchannels);
- if (len == 2) {
- tmp = g_strdup_printf("%s,%s", s390_subchannels[0], s390_subchannels[1]);
- } else if (len == 3) {
- tmp = g_strdup_printf("%s,%s,%s",
- s390_subchannels[0],
- s390_subchannels[1],
- s390_subchannels[2]);
- }
+ if (len == 2) {
+ tmp = g_strdup_printf("%s,%s", s390_subchannels[0], s390_subchannels[1]);
+ } else if (len == 3) {
+ tmp = g_strdup_printf("%s,%s,%s",
+ s390_subchannels[0],
+ s390_subchannels[1],
+ s390_subchannels[2]);
+ }
- svSetValueStr(ifcfg, "SUBCHANNELS", tmp);
- }
+ svSetValueStr(ifcfg, "SUBCHANNELS", tmp);
+ }
- svSetValueStr(ifcfg, "NETTYPE", nm_setting_wired_get_s390_nettype(s_wired));
+ svSetValueStr(ifcfg, "NETTYPE", nm_setting_wired_get_s390_nettype(s_wired));
- svSetValueStr(ifcfg, "PORTNAME", nm_setting_wired_get_s390_option_by_key(s_wired, "portname"));
+ svSetValueStr(ifcfg,
+ "PORTNAME",
+ nm_setting_wired_get_s390_option_by_key(s_wired, "portname"));
- svSetValueStr(ifcfg, "CTCPROT", nm_setting_wired_get_s390_option_by_key(s_wired, "ctcprot"));
+ svSetValueStr(ifcfg,
+ "CTCPROT",
+ nm_setting_wired_get_s390_option_by_key(s_wired, "ctcprot"));
- num_opts = nm_setting_wired_get_num_s390_options(s_wired);
- if (s390_subchannels && num_opts) {
- nm_auto_free_gstring GString *tmp = NULL;
+ num_opts = nm_setting_wired_get_num_s390_options(s_wired);
+ if (s390_subchannels && num_opts) {
+ nm_auto_free_gstring GString *tmp = NULL;
- for (i = 0; i < num_opts; i++) {
- const char *s390_key, *s390_val;
+ for (i = 0; i < num_opts; i++) {
+ const char *s390_key, *s390_val;
- nm_setting_wired_get_s390_option(s_wired, i, &s390_key, &s390_val);
+ nm_setting_wired_get_s390_option(s_wired, i, &s390_key, &s390_val);
- /* portname is handled separately */
- if (NM_IN_STRSET(s390_key, "portname", "ctcprot"))
- continue;
+ /* portname is handled separately */
+ if (NM_IN_STRSET(s390_key, "portname", "ctcprot"))
+ continue;
- if (strchr(s390_key, '=')) {
- /* this key cannot be expressed. But after all, it's not valid anyway
+ if (strchr(s390_key, '=')) {
+ /* this key cannot be expressed. But after all, it's not valid anyway
* and the connection shouldn't even verify. */
- continue;
- }
+ continue;
+ }
- if (!tmp)
- tmp = g_string_sized_new(30);
- else
- g_string_append_c(tmp, ' ');
- nm_utils_escaped_tokens_escape_gstr(s390_key, NM_ASCII_SPACES, tmp);
- g_string_append_c(tmp, '=');
- nm_utils_escaped_tokens_escape_gstr(s390_val, NM_ASCII_SPACES, tmp);
+ if (!tmp)
+ tmp = g_string_sized_new(30);
+ else
+ g_string_append_c(tmp, ' ');
+ nm_utils_escaped_tokens_escape_gstr(s390_key, NM_ASCII_SPACES, tmp);
+ g_string_append_c(tmp, '=');
+ nm_utils_escaped_tokens_escape_gstr(s390_val, NM_ASCII_SPACES, tmp);
+ }
+ if (tmp)
+ svSetValueStr(ifcfg, "OPTIONS", tmp->str);
}
- if (tmp)
- svSetValueStr(ifcfg, "OPTIONS", tmp->str);
}
- svSetValueStr(ifcfg, "TYPE", TYPE_ETHERNET);
+ if (!is_virtual)
+ svSetValueStr(ifcfg, "TYPE", TYPE_ETHERNET);
svSetValueTernary(ifcfg,
"ACCEPT_ALL_MAC_ADDRESSES",
nm_setting_wired_get_accept_all_mac_addresses(s_wired));
+}
+
+static gboolean
+write_wired_setting(NMConnection *connection, shvarFile *ifcfg, GError **error)
+{
+ NMSettingWired *s_wired;
+
+ s_wired = nm_connection_get_setting_wired(connection);
+ if (!s_wired) {
+ g_set_error(error,
+ NM_SETTINGS_ERROR,
+ NM_SETTINGS_ERROR_FAILED,
+ "Missing '%s' setting",
+ NM_SETTING_WIRED_SETTING_NAME);
+ return FALSE;
+ }
+ write_wired_setting_impl(s_wired, ifcfg, FALSE);
return TRUE;
}
@@ -1184,30 +1201,12 @@ static gboolean
write_wired_for_virtual(NMConnection *connection, shvarFile *ifcfg)
{
NMSettingWired *s_wired;
- const char * device_mac;
- const char * cloned_mac;
- guint32 mtu;
s_wired = nm_connection_get_setting_wired(connection);
if (!s_wired)
return FALSE;
- device_mac = nm_setting_wired_get_mac_address(s_wired);
- svSetValue(ifcfg, "HWADDR", device_mac ?: "");
-
- cloned_mac = nm_setting_wired_get_cloned_mac_address(s_wired);
- svSetValueStr(ifcfg, "MACADDR", cloned_mac);
-
- svSetValueStr(ifcfg,
- "GENERATE_MAC_ADDRESS_MASK",
- nm_setting_wired_get_generate_mac_address_mask(s_wired));
-
- svSetValueTernary(ifcfg,
- "ACCEPT_ALL_MAC_ADDRESSES",
- nm_setting_wired_get_accept_all_mac_addresses(s_wired));
-
- mtu = nm_setting_wired_get_mtu(s_wired);
- svSetValueInt64_cond(ifcfg, "MTU", mtu != 0, mtu);
+ write_wired_setting_impl(s_wired, ifcfg, TRUE);
return TRUE;
}