summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2023-03-14 09:18:10 +0100
committerThomas Haller <thaller@redhat.com>2023-03-15 17:06:10 +0100
commit8a12713568c51e34a218113d25e81ca671e5f1d9 (patch)
tree2ea66f54ad7e36b54332d84e841408704c6d7bc7
parent209d48513ca01ec6030d357d654e86130802bf9b (diff)
ifcfg-rh: fix preserving hostname setting in reader
The writer already got this right, to always ensure that at least one hostname key is set iff the hostname setting is present.
-rw-r--r--src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c
index f46783f5e3..a784662fd3 100644
--- a/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c
+++ b/src/core/settings/plugins/ifcfg-rh/nms-ifcfg-rh-reader.c
@@ -2683,16 +2683,25 @@ make_hostname_setting(shvarFile *ifcfg)
NMTernary from_dns_lookup;
NMTernary only_from_default;
int priority;
+ gboolean has_setting = FALSE;
priority = svGetValueInt64(ifcfg, "HOSTNAME_PRIORITY", 10, G_MININT32, G_MAXINT32, 0);
+ if (!has_setting && errno != ENOKEY)
+ has_setting = TRUE;
+
+ from_dhcp = svGetValueTernary(ifcfg, "HOSTNAME_FROM_DHCP");
+ if (!has_setting && errno != ENOKEY)
+ has_setting = TRUE;
+
+ from_dns_lookup = svGetValueTernary(ifcfg, "HOSTNAME_FROM_DNS_LOOKUP");
+ if (!has_setting && errno != ENOKEY)
+ has_setting = TRUE;
- from_dhcp = svGetValueTernary(ifcfg, "HOSTNAME_FROM_DHCP");
- from_dns_lookup = svGetValueTernary(ifcfg, "HOSTNAME_FROM_DNS_LOOKUP");
only_from_default = svGetValueTernary(ifcfg, "HOSTNAME_ONLY_FROM_DEFAULT");
+ if (!has_setting && errno != ENOKEY)
+ has_setting = TRUE;
- /* Create the setting when at least one key is not default*/
- if (priority == 0 && from_dhcp == NM_TERNARY_DEFAULT && from_dns_lookup == NM_TERNARY_DEFAULT
- && only_from_default == NM_TERNARY_DEFAULT)
+ if (!has_setting)
return NULL;
setting = nm_setting_hostname_new();