diff --git a/slurm/slurm.h.in b/slurm/slurm.h.in
index 0e2e902e08e4dd089d1098d24238daeb10288094..b48f4260d546cf702150caefd02390ff017fb143 100644
--- a/slurm/slurm.h.in
+++ b/slurm/slurm.h.in
@@ -2639,6 +2639,8 @@ typedef struct reservation_name_msg {
 #define CTL_CONF_ASRU           0x00000008 /* AllowSpecResourcesUsage */
 #define CTL_CONF_PAM            0x00000010 /* UsePam */
 #define CTL_CONF_WCKEY          0x00000020 /* TrackWCKey */
+#define CTL_CONF_IPV4_ENABLED	0x00000040 /* IPv4 is enabled */
+#define CTL_CONF_IPV6_ENABLED	0x00000080 /* IPv6 is enabled */
 
 #define LOG_FMT_ISO8601_MS      0
 #define LOG_FMT_ISO8601         1
diff --git a/src/common/read_config.c b/src/common/read_config.c
index 031bfac85dcd9841706fd4b40179c07376dc9f37..a73c07ed6fb0952e36091597229923e01e5835ed 100644
--- a/src/common/read_config.c
+++ b/src/common/read_config.c
@@ -3586,6 +3586,20 @@ static int _validate_and_set_defaults(slurm_conf_t *conf,
 	(void) s_p_get_string(&conf->comm_params, "CommunicationParameters",
 			      hashtbl);
 
+	/*
+	 * IPv4 on by default, can be disabled.
+	 * IPv6 off by default, can be turned on.
+	 */
+	conf->conf_flags |= CTL_CONF_IPV4_ENABLED;
+	if (xstrcasestr(slurm_conf.comm_params, "EnableIPv6"))
+		conf->conf_flags |= CTL_CONF_IPV6_ENABLED;
+	if (xstrcasestr(slurm_conf.comm_params, "DisableIPv4"))
+		conf->conf_flags &= ~CTL_CONF_IPV4_ENABLED;
+
+	if (!(conf->conf_flags & CTL_CONF_IPV4_ENABLED) &&
+	    !(conf->conf_flags & CTL_CONF_IPV6_ENABLED))
+		fatal("Both IPv4 and IPv6 support disabled, cannot communicate");
+
 	if (!s_p_get_string(&conf->core_spec_plugin, "CoreSpecPlugin",
 	    hashtbl)) {
 		conf->core_spec_plugin =
diff --git a/src/slurmdbd/read_config.c b/src/slurmdbd/read_config.c
index a1d5da447cfbd5a15be860693eccf7c5398694fc..7c232b41b8a4910e34714923768f1421d3ebac70 100644
--- a/src/slurmdbd/read_config.c
+++ b/src/slurmdbd/read_config.c
@@ -240,6 +240,21 @@ extern int read_slurmdbd_conf(void)
 			       "CommitDelay", tbl);
 		s_p_get_string(&slurm_conf.comm_params,
 			       "CommunicationParameters", tbl);
+
+		/*
+		 * IPv4 on by default, can be disabled.
+		 * IPv6 off by default, can be turned on.
+		 */
+		slurm_conf.conf_flags |= CTL_CONF_IPV4_ENABLED;
+		if (xstrcasestr(slurm_conf.comm_params, "EnableIPv6"))
+			slurm_conf.conf_flags |= CTL_CONF_IPV6_ENABLED;
+		if (xstrcasestr(slurm_conf.comm_params, "DisableIPv4"))
+			slurm_conf.conf_flags &= ~CTL_CONF_IPV4_ENABLED;
+
+		if (!(slurm_conf.conf_flags & CTL_CONF_IPV4_ENABLED) &&
+		    !(slurm_conf.conf_flags & CTL_CONF_IPV6_ENABLED))
+			fatal("Both IPv4 and IPv6 support disabled, cannot communicate");
+
 		s_p_get_string(&slurmdbd_conf->dbd_backup,
 			       "DbdBackupHost", tbl);
 		s_p_get_string(&slurmdbd_conf->dbd_host, "DbdHost", tbl);