blob: e4e0dc8474b738fc0a2c4e46ab08f11cdfcc282e [file] [log] [blame]
/*****************************************************************************\
* src/slurmd/common/slurmstepd_init.c - slurmstepd initialization code
*****************************************************************************
* Copyright (C) 2005 The Regents of the University of California.
* Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
* Written by Danny Auble <da@llnl.gov>
* CODE-OCEC-09-009. All rights reserved.
*
* This file is part of Slurm, a resource management program.
* For details, see <https://slurm.schedmd.com/>.
* Please also read the included file: DISCLAIMER.
*
* Slurm is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* In addition, as a special exception, the copyright holders give permission
* to link the code of portions of this program with the OpenSSL library under
* certain conditions as described in each individual source file, and
* distribute linked combinations including the two. You must obey the GNU
* General Public License in all respects for all of the code used other than
* OpenSSL. If you modify file(s) with this exception, you may extend this
* exception to your version of the file(s), but you are not obligated to do
* so. If you do not wish to do so, delete this exception statement from your
* version. If you delete this exception statement from all source files in
* the program, then also delete it here.
*
* Slurm is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along
* with Slurm; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
\*****************************************************************************/
#include "src/slurmd/common/slurmstepd_init.h"
#include "src/common/read_config.h"
#include "src/common/xmalloc.h"
#include "src/common/xstring.h"
/* Assume that the slurmd and slurmstepd are the same version level when slurmd
* starts slurmstepd, so we do not need to support different protocol versions
* for the different message formats. */
extern void pack_slurmd_conf_lite(slurmd_conf_t *conf, buf_t *buffer)
{
xassert(conf != NULL);
pack16(SLURM_PROTOCOL_VERSION, buffer);
packstr(conf->hostname, buffer);
pack16(conf->cpus, buffer);
pack16(conf->boards, buffer);
pack16(conf->sockets, buffer);
pack16(conf->cores, buffer);
pack16(conf->threads, buffer);
pack16(conf->actual_threads, buffer);
packstr(conf->cpu_spec_list, buffer);
pack16(conf->core_spec_cnt, buffer);
pack64(conf->mem_spec_limit, buffer);
pack64(conf->conf_memory_size, buffer);
pack16(conf->block_map_size, buffer);
pack16_array(conf->block_map, conf->block_map_size, buffer);
pack16_array(conf->block_map_inv, conf->block_map_size, buffer);
packstr(conf->conffile, buffer);
packstr(conf->spooldir, buffer);
packstr(conf->node_name, buffer);
packstr(conf->logfile, buffer);
pack32(conf->debug_level, buffer);
pack32(conf->syslog_debug, buffer);
packstr(conf->stepd_loc, buffer);
packbool(conf->daemonize, buffer);
packstr(conf->node_topo_addr, buffer);
packstr(conf->node_topo_pattern, buffer);
pack16(conf->port, buffer);
}
extern int unpack_slurmd_conf_lite_no_alloc(slurmd_conf_t *conf, buf_t *buffer)
{
uint32_t uint32_tmp;
uint16_t protocol_version;
safe_unpack16(&protocol_version, buffer);
/*
* No cross-version support is required here. slurmd and slurmstepd
* must always be on the same release.
*/
if (protocol_version >= SLURM_PROTOCOL_VERSION) {
safe_unpackstr(&conf->hostname, buffer);
safe_unpack16(&conf->cpus, buffer);
safe_unpack16(&conf->boards, buffer);
safe_unpack16(&conf->sockets, buffer);
safe_unpack16(&conf->cores, buffer);
safe_unpack16(&conf->threads, buffer);
safe_unpack16(&conf->actual_threads, buffer);
safe_unpackstr(&conf->cpu_spec_list, buffer);
safe_unpack16(&conf->core_spec_cnt, buffer);
safe_unpack64(&conf->mem_spec_limit, buffer);
safe_unpack64(&conf->conf_memory_size, buffer);
safe_unpack16(&conf->block_map_size, buffer);
safe_unpack16_array(&conf->block_map, &uint32_tmp, buffer);
safe_unpack16_array(&conf->block_map_inv, &uint32_tmp, buffer);
safe_unpackstr(&conf->conffile, buffer);
safe_unpackstr(&conf->spooldir, buffer);
safe_unpackstr(&conf->node_name, buffer);
safe_unpackstr(&conf->logfile, buffer);
safe_unpack32(&conf->debug_level, buffer);
safe_unpack32(&conf->syslog_debug, buffer);
safe_unpackstr(&conf->stepd_loc, buffer);
safe_unpackbool(&conf->daemonize, buffer);
safe_unpackstr(&conf->node_topo_addr, buffer);
safe_unpackstr(&conf->node_topo_pattern, buffer);
safe_unpack16(&conf->port, buffer);
}
return SLURM_SUCCESS;
unpack_error:
error("unpack_error in unpack_slurmd_conf_lite_no_alloc: %m");
xfree(conf->hostname);
xfree(conf->cpu_spec_list);
xfree(conf->conffile);
xfree(conf->spooldir);
xfree(conf->node_name);
xfree(conf->logfile);
xfree(conf->node_topo_addr);
xfree(conf->node_topo_pattern);
return SLURM_ERROR;
}
/*
* Assume that the slurmd and slurmstepd are the same version level when slurmd
* starts slurmstepd, so we do not need to support different protocol versions
* for the different message formats.
*/
extern void pack_slurm_conf_lite(buf_t *buffer)
{
/* last_update */
/* accounting_storage_tres */
pack16(slurm_conf.accounting_storage_enforce, buffer);
/* accounting_storage_backup_host */
/* accounting_storage_ext_host */
/* accounting_storage_host */
packstr(slurm_conf.accounting_storage_params, buffer);
/* accounting_storage_pass */
/* accounting_storage_port */
packstr(slurm_conf.accounting_storage_type, buffer);
/* acct_gather_conf */
packstr(slurm_conf.acct_gather_energy_type, buffer);
packstr(slurm_conf.acct_gather_profile_type, buffer);
packstr(slurm_conf.acct_gather_interconnect_type, buffer);
packstr(slurm_conf.acct_gather_filesystem_type, buffer);
pack16(slurm_conf.acct_gather_node_freq, buffer);
packstr(slurm_conf.authalttypes, buffer);
packstr(slurm_conf.authinfo, buffer);
packstr(slurm_conf.authalt_params, buffer);
packstr(slurm_conf.authtype, buffer);
/* batch_start_timeout */
/* bb_type */
/* bcast_exclude */
/* bcast_parameters */
/* boot_time */
/* cgroup_conf */
/* cli_filter_plugins */
packstr(slurm_conf.cluster_name, buffer);
packstr(slurm_conf.comm_params, buffer);
/* complete_wait */
pack32(slurm_conf.conf_flags, buffer);
packstr_array(slurm_conf.control_addr, slurm_conf.control_cnt, buffer);
/* control_cnt */
/* *control_machine */
pack32(slurm_conf.cpu_freq_def, buffer);
pack32(slurm_conf.cpu_freq_govs, buffer);
packstr(slurm_conf.cred_type, buffer);
pack64(slurm_conf.debug_flags, buffer);
/* def_mem_per_cpu */
/* dependency_params */
/* eio_timeout */
/* enforce_part_limits */
packstr_array(slurm_conf.epilog, slurm_conf.epilog_cnt, buffer);
/* epilog_msg_time */
/* epilog_slurmctld */
/* epilog_timeout */
/* fed_params */
/* first_job_id */
/* fs_dampening_factor */
/* get_env_timeout */
packstr(slurm_conf.gres_plugins, buffer);
/* group_time */
/* group_force */
packstr(slurm_conf.gpu_freq_def, buffer);
packstr(slurm_conf.hash_plugin, buffer);
/* hash_val */
/* health_check_interval */
/* health_check_node_state */
/* health_check_program */
/* http_parser_type */
/* inactive_limit */
/* interactive_step_opts */
packstr(slurm_conf.job_acct_gather_freq, buffer);
packstr(slurm_conf.job_acct_gather_type, buffer);
packstr(slurm_conf.job_acct_gather_params, buffer);
pack16(slurm_conf.job_acct_oom_kill, buffer);
/* job_comp_host */
/* job_comp_loc */
/* job_comp_params */
/* job_comp_pass */
/* job_comp_port */
/* job_comp_type */
/* job_comp_user */
packstr(slurm_conf.job_container_plugin, buffer);
/* job_defaults_list */
pack16(slurm_conf.job_file_append, buffer);
/* job_requeue */
/* job_submit_plugins */
pack32(slurm_conf.keepalive_interval, buffer);
pack32(slurm_conf.keepalive_probes, buffer);
pack32(slurm_conf.keepalive_time, buffer);
/* kill_on_bad_exit */
pack16(slurm_conf.kill_wait, buffer);
packstr(slurm_conf.launch_params, buffer);
/* licenses */
pack16(slurm_conf.log_fmt, buffer);
/* mail_domain */
/* mail_prog */
/* max_array_sz */
/* max_batch_requeue */
/* max_dbd_msgs */
/* max_job_cnt */
/* max_job_id */
/* max_mem_per_cpu */
/* max_node_cnt */
pack32(slurm_conf.max_step_cnt, buffer);
pack16(slurm_conf.max_tasks_per_node, buffer);
/* mcs_plugin */
/* mcs_plugin_params */
/* min_job_age */
/* mpi_conf */
packstr(slurm_conf.mpi_default, buffer);
/* mpi_params */
pack16(slurm_conf.msg_timeout, buffer);
/* next_job_id */
/* node_features_conf */
/* node_features_plugins */
/* over_time_limit */
packstr(slurm_conf.plugindir, buffer);
packstr(slurm_conf.plugstack, buffer);
/* preempt_exempt_time */
/* preempt_mode */
packstr(slurm_conf.preempt_params, buffer);
/* preempt_type */
packstr(slurm_conf.prep_params, buffer);
packstr(slurm_conf.prep_plugins, buffer);
/* priority_decay_hl */
/* priority_calc_period */
/* priority_favor_small */
/* priority_flags */
/* priority_max_age */
/* priority_params */
/* priority_reset_period */
/* priority_type */
/* priority_weight_age */
/* priority_weight_assoc */
/* priority_weight_fs */
/* priority_weight_js */
/* priority_weight_part */
/* priority_weight_qos */
/* priority_weight_tres */
/* private_data */
packstr(slurm_conf.proctrack_type, buffer);
packstr_array(slurm_conf.prolog, slurm_conf.prolog_cnt, buffer);
pack16(slurm_conf.prolog_flags, buffer);
/* prolog_slurmctld */
/* prolog_timeout */
pack16(slurm_conf.propagate_prio_process, buffer);
packstr(slurm_conf.propagate_rlimits, buffer);
packstr(slurm_conf.propagate_rlimits_except, buffer);
/* reboot_program */
/* reconfig_flags */
/* requeue_exit */
/* requeue_exit_hold */
/* resume_fail_program */
/* resume_program */
/* resume_rate */
/* resume_timeout */
/* resv_epilog */
/* resv_over_run */
/* resv_prolog */
/* ret2service */
/* sched_logfile */
/* sched_log_level */
/* sched_params */
/* sched_time_slice */
/* schedtype */
/* scron_params */
packstr(slurm_conf.select_type, buffer);
/* select_conf_key_pairs */
pack16(slurm_conf.select_type_param, buffer);
/* site_factor_plugin */
/* site_factor_params */
/* slurm_conf */
pack32(slurm_conf.slurm_user_id, buffer);
/* slurm_user_name */
pack32(slurm_conf.slurmd_user_id, buffer);
/* slurmd_user_name */
packstr(slurm_conf.slurmctld_addr, buffer);
/* slurmctld_debug */
/* slurmctld_logfile */
/* slurmctld_pidfile */
/* slurmctld_plugstack */
/* slurmctld_plugstack_conf */
pack32(slurm_conf.slurmctld_port, buffer);
pack16(slurm_conf.slurmctld_port_count, buffer);
/* slurmctld_primary_off_prog */
/* slurmctld_primary_on_prog */
/* slurmctld_syslog_debug */
pack16(slurm_conf.slurmctld_timeout, buffer);
/* slurmctld_params */
/* slurmd_debug */
/* slurmd_logfile */
/* slurmd_params */
/* slurmd_pidfile */
/* slurmd_port */
packstr(slurm_conf.slurmd_spooldir, buffer);
/* slurmd_syslog_debug */
/* slurmd_timeout */
/* srun_epilog */
if (slurm_conf.srun_port_range) {
pack16(slurm_conf.srun_port_range[0], buffer);
pack16(slurm_conf.srun_port_range[1], buffer);
} else {
pack16(0, buffer);
pack16(0, buffer);
}
/* srun_prolog */
/* state_save_location */
/* suspend_exc_nodes */
/* suspend_exc_parts */
/* suspend_program */
/* suspend_rate */
/* suspend_time */
/* suspend_timeout */
packstr(slurm_conf.switch_type, buffer);
packstr(slurm_conf.switch_param, buffer);
packstr(slurm_conf.task_epilog, buffer);
packstr(slurm_conf.task_plugin, buffer);
pack32(slurm_conf.task_plugin_param, buffer);
packstr(slurm_conf.task_prolog, buffer);
pack16(slurm_conf.tcp_timeout, buffer);
packstr(slurm_conf.tls_type, buffer);
packstr(slurm_conf.tmp_fs, buffer);
packstr(slurm_conf.topology_param, buffer);
packstr(slurm_conf.topology_plugin, buffer);
pack16(slurm_conf.tree_width, buffer);
packstr(slurm_conf.unkillable_program, buffer);
pack16(slurm_conf.unkillable_timeout, buffer);
/* url_parser_type */
/* version */
pack16(slurm_conf.vsize_factor, buffer);
pack16(slurm_conf.wait_time, buffer);
packstr(slurm_conf.x11_params, buffer);
}
extern int unpack_slurm_conf_lite_no_alloc(buf_t *buffer)
{
uint16_t srun_port_min = 0, srun_port_max = 0;
init_slurm_conf(&slurm_conf);
/* last_update */
/* accounting_storage_tres */
safe_unpack16(&slurm_conf.accounting_storage_enforce, buffer);
/* accounting_storage_backup_host */
/* accounting_storage_ext_host */
/* accounting_storage_host */
safe_unpackstr(&slurm_conf.accounting_storage_params, buffer);
/* accounting_storage_pass */
/* accounting_storage_port */
safe_unpackstr(&slurm_conf.accounting_storage_type, buffer);
/* acct_gather_conf */
safe_unpackstr(&slurm_conf.acct_gather_energy_type, buffer);
safe_unpackstr(&slurm_conf.acct_gather_profile_type, buffer);
safe_unpackstr(&slurm_conf.acct_gather_interconnect_type, buffer);
safe_unpackstr(&slurm_conf.acct_gather_filesystem_type, buffer);
safe_unpack16(&slurm_conf.acct_gather_node_freq, buffer);
safe_unpackstr(&slurm_conf.authalttypes, buffer);
safe_unpackstr(&slurm_conf.authinfo, buffer);
safe_unpackstr(&slurm_conf.authalt_params, buffer);
safe_unpackstr(&slurm_conf.authtype, buffer);
/* batch_start_timeout */
/* bb_type */
/* bcast_exclude */
/* bcast_parameters */
/* boot_time */
/* cgroup_conf */
/* cli_filter_plugins */
safe_unpackstr(&slurm_conf.cluster_name, buffer);
safe_unpackstr(&slurm_conf.comm_params, buffer);
/* complete_wait */
safe_unpack32(&slurm_conf.conf_flags, buffer);
safe_unpackstr_array(&slurm_conf.control_addr,
&slurm_conf.control_cnt, buffer);
/* *control_addr */
/* control_cnt */
/* *control_machine */
safe_unpack32(&slurm_conf.cpu_freq_def, buffer);
safe_unpack32(&slurm_conf.cpu_freq_govs, buffer);
safe_unpackstr(&slurm_conf.cred_type, buffer);
safe_unpack64(&slurm_conf.debug_flags, buffer);
/* def_mem_per_cpu */
/* dependency_params */
/* eio_timeout */
/* enforce_part_limits */
safe_unpackstr_array(&slurm_conf.epilog, &slurm_conf.epilog_cnt,
buffer);
/* epilog_msg_time */
/* epilog_slurmctld */
/* epilog_timeout */
/* fed_params */
/* first_job_id */
/* fs_dampening_factor */
/* get_env_timeout */
safe_unpackstr(&slurm_conf.gres_plugins, buffer);
/* group_time */
/* group_force */
safe_unpackstr(&slurm_conf.gpu_freq_def, buffer);
safe_unpackstr(&slurm_conf.hash_plugin, buffer);
/* hash_val */
/* health_check_interval */
/* health_check_node_state */
/* health_check_program */
/* inactive_limit */
/* interactive_step_opts */
safe_unpackstr(&slurm_conf.job_acct_gather_freq, buffer);
safe_unpackstr(&slurm_conf.job_acct_gather_type, buffer);
safe_unpackstr(&slurm_conf.job_acct_gather_params, buffer);
safe_unpack16(&slurm_conf.job_acct_oom_kill, buffer);
/* job_comp_host */
/* job_comp_loc */
/* job_comp_params */
/* job_comp_pass */
/* job_comp_port */
/* job_comp_type */
/* job_comp_user */
safe_unpackstr(&slurm_conf.job_container_plugin, buffer);
/* job_defaults_list */
safe_unpack16(&slurm_conf.job_file_append, buffer);
/* job_requeue */
/* job_submit_plugins */
safe_unpack32(&slurm_conf.keepalive_interval, buffer);
safe_unpack32(&slurm_conf.keepalive_probes, buffer);
safe_unpack32(&slurm_conf.keepalive_time, buffer);
/* kill_on_bad_exit */
safe_unpack16(&slurm_conf.kill_wait, buffer);
safe_unpackstr(&slurm_conf.launch_params, buffer);
/* licenses */
safe_unpack16(&slurm_conf.log_fmt, buffer);
/* mail_domain */
/* mail_prog */
/* max_array_sz */
/* max_batch_requeue */
/* max_dbd_msgs */
/* max_job_cnt */
/* max_job_id */
/* max_mem_per_cpu */
/* max_node_cnt */
safe_unpack32(&slurm_conf.max_step_cnt, buffer);
safe_unpack16(&slurm_conf.max_tasks_per_node, buffer);
/* mcs_plugin */
/* mcs_plugin_params */
/* min_job_age */
/* mpi_conf */
safe_unpackstr(&slurm_conf.mpi_default, buffer);
/* mpi_params */
safe_unpack16(&slurm_conf.msg_timeout, buffer);
/* next_job_id */
/* node_features_conf */
/* node_features_plugins */
/* over_time_limit */
safe_unpackstr(&slurm_conf.plugindir, buffer);
safe_unpackstr(&slurm_conf.plugstack, buffer);
/* preempt_exempt_time */
/* preempt_mode */
safe_unpackstr(&slurm_conf.preempt_params, buffer);
/* preempt_type */
safe_unpackstr(&slurm_conf.prep_params, buffer);
safe_unpackstr(&slurm_conf.prep_plugins, buffer);
/* priority_decay_hl */
/* priority_calc_period */
/* priority_favor_small */
/* priority_flags */
/* priority_max_age */
/* priority_params */
/* priority_reset_period */
/* priority_type */
/* priority_weight_age */
/* priority_weight_assoc */
/* priority_weight_fs */
/* priority_weight_js */
/* priority_weight_part */
/* priority_weight_qos */
/* priority_weight_tres */
/* private_data */
safe_unpackstr(&slurm_conf.proctrack_type, buffer);
safe_unpackstr_array(&slurm_conf.prolog, &slurm_conf.prolog_cnt,
buffer);
safe_unpack16(&slurm_conf.prolog_flags, buffer);
/* prolog_slurmctld */
/* prolog_timeout */
safe_unpack16(&slurm_conf.propagate_prio_process, buffer);
safe_unpackstr(&slurm_conf.propagate_rlimits, buffer);
safe_unpackstr(&slurm_conf.propagate_rlimits_except, buffer);
/* reboot_program */
/* reconfig_flags */
/* requeue_exit */
/* requeue_exit_hold */
/* resume_fail_program */
/* resume_program */
/* resume_rate */
/* resume_timeout */
/* resv_epilog */
/* resv_over_run */
/* resv_prolog */
/* ret2service */
/* sched_logfile */
/* sched_log_level */
/* sched_params */
/* sched_time_slice */
/* schedtype */
/* scron_params */
safe_unpackstr(&slurm_conf.select_type, buffer);
/* select_conf_key_pairs */
safe_unpack16(&slurm_conf.select_type_param, buffer);
/* site_factor_plugin */
/* site_factor_params */
/* &slurm_conf */
safe_unpack32(&slurm_conf.slurm_user_id, buffer);
/* slurm_user_name */
safe_unpack32(&slurm_conf.slurmd_user_id, buffer);
/* slurmd_user_name */
safe_unpackstr(&slurm_conf.slurmctld_addr, buffer);
/* slurmctld_debug */
/* slurmctld_logfile */
/* slurmctld_pidfile */
/* slurmctld_plugstack */
/* slurmctld_plugstack_conf */
safe_unpack32(&slurm_conf.slurmctld_port, buffer);
safe_unpack16(&slurm_conf.slurmctld_port_count, buffer);
/* slurmctld_primary_off_prog */
/* slurmctld_primary_on_prog */
/* slurmctld_syslog_debug */
safe_unpack16(&slurm_conf.slurmctld_timeout, buffer);
/* slurmctld_params */
/* slurmd_debug */
/* slurmd_logfile */
/* slurmd_params */
/* slurmd_pidfile */
/* slurmd_port */
safe_unpackstr(&slurm_conf.slurmd_spooldir, buffer);
/* slurmd_syslog_debug */
/* slurmd_timeout */
/* srun_epilog */
safe_unpack16(&srun_port_min, buffer);
safe_unpack16(&srun_port_max, buffer);
if (srun_port_max) {
slurm_conf.srun_port_range = xcalloc(2, sizeof(uint16_t));
slurm_conf.srun_port_range[0] = srun_port_min;
slurm_conf.srun_port_range[1] = srun_port_max;
}
/* srun_prolog */
/* state_save_location */
/* suspend_exc_nodes */
/* suspend_exc_parts */
/* suspend_program */
/* suspend_rate */
/* suspend_time */
/* suspend_timeout */
safe_unpackstr(&slurm_conf.switch_type, buffer);
safe_unpackstr(&slurm_conf.switch_param, buffer);
safe_unpackstr(&slurm_conf.task_epilog, buffer);
safe_unpackstr(&slurm_conf.task_plugin, buffer);
safe_unpack32(&slurm_conf.task_plugin_param, buffer);
safe_unpackstr(&slurm_conf.task_prolog, buffer);
safe_unpack16(&slurm_conf.tcp_timeout, buffer);
safe_unpackstr(&slurm_conf.tls_type, buffer);
safe_unpackstr(&slurm_conf.tmp_fs, buffer);
safe_unpackstr(&slurm_conf.topology_param, buffer);
safe_unpackstr(&slurm_conf.topology_plugin, buffer);
safe_unpack16(&slurm_conf.tree_width, buffer);
safe_unpackstr(&slurm_conf.unkillable_program, buffer);
safe_unpack16(&slurm_conf.unkillable_timeout, buffer);
/* version */
safe_unpack16(&slurm_conf.vsize_factor, buffer);
safe_unpack16(&slurm_conf.wait_time, buffer);
safe_unpackstr(&slurm_conf.x11_params, buffer);
return SLURM_SUCCESS;
unpack_error:
error("unpack_error in %s: %m", __func__);
free_slurm_conf(&slurm_conf, false);
return SLURM_ERROR;
}
extern void pack_stepd_reconf(buf_t *buffer, uint16_t protocol_version)
{
/*
* Unlike the initialization functions above, this does need to be
* able to communicate with an older slurmstepd if the slurmd process
* has been upgraded.
*/
if (protocol_version >= SLURM_MIN_PROTOCOL_VERSION) {
packstr_array(slurm_conf.control_addr, slurm_conf.control_cnt,
buffer);
packstr(slurm_conf.slurmctld_addr, buffer);
pack32(slurm_conf.slurmctld_port, buffer);
pack16(slurm_conf.slurmctld_port_count, buffer);
}
}
/*
* This does not need to be versioned - slurmd will always pack in our
* native protocol version. Directly unpack into slurm_conf - the buffer
* was already read in successfully off the socket and we trust slurmd
* to have structured this correctly.
*/
extern void unpack_stepd_reconf(buf_t *buffer)
{
xfree(slurm_conf.control_addr);
safe_unpackstr_array(&slurm_conf.control_addr,
&slurm_conf.control_cnt, buffer);
xfree(slurm_conf.slurmctld_addr);
safe_unpackstr(&slurm_conf.slurmctld_addr, buffer);
safe_unpack32(&slurm_conf.slurmctld_port, buffer);
safe_unpack16(&slurm_conf.slurmctld_port_count, buffer);
for (int i = 0; i < slurm_conf.control_cnt; i++)
debug("%s: control_addr[%d]=%s",
__func__, i, slurm_conf.control_addr[i]);
debug("%s: slurmctld_port=%d, slurmctld_port_count=%d, slurmctld_addr=%s",
__func__, slurm_conf.slurmctld_port,
slurm_conf.slurmctld_port_count, slurm_conf.slurmctld_addr);
return;
unpack_error:
error("%s: unpack_error: %m", __func__);
}