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);