Newer
Older
safe_unpack32(&((*msg)->record_count), buffer);
safe_unpack_time(&((*msg)->last_update), buffer);

tewk
committed
node = (*msg)->node_array =
xmalloc(sizeof(node_info_t) * (*msg)->record_count);

tewk
committed
/* load individual job info */
for (i = 0; i < (*msg)->record_count; i++) {
if (_unpack_node_info_members(&node[i], buffer))
goto unpack_error;

tewk
committed
}
return SLURM_SUCCESS;
xfree(node);
xfree(*msg);
*msg = NULL;
return SLURM_ERROR;

tewk
committed
}
static int
_unpack_node_info_members(node_info_t * node, Buf buffer)
safe_unpackstr_xmalloc(&node->name, &uint16_tmp, buffer);
safe_unpack16(&node->node_state, buffer);
safe_unpack32(&node->cpus, buffer);
safe_unpack32(&node->real_memory, buffer);
safe_unpack32(&node->tmp_disk, buffer);
safe_unpack32(&node->weight, buffer);
safe_unpackstr_xmalloc(&node->features, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&node->partition, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&node->reason, &uint16_tmp, buffer);
return SLURM_SUCCESS;
xfree(node->name);
xfree(node->features);
xfree(node->partition);
xfree(node->reason);
return SLURM_ERROR;
static void
_pack_update_partition_msg(update_part_msg_t * msg, Buf buffer)
packstr(msg->allow_groups, buffer);
pack16(msg-> default_part, buffer);
pack32(msg-> max_time, buffer);
pack32(msg-> max_nodes, buffer);
pack32(msg-> min_nodes, buffer);
packstr(msg->name, buffer);
packstr(msg->nodes, buffer);
pack16(msg-> root_only, buffer);
pack16(msg-> shared, buffer);
pack16(msg-> state_up, buffer);
static int
_unpack_update_partition_msg(update_part_msg_t ** msg, Buf buffer)
{
uint16_t uint16_tmp;
update_part_msg_t *tmp_ptr;
assert(msg != NULL);
/* alloc memory for structure */
tmp_ptr = xmalloc(sizeof(update_part_msg_t));
safe_unpackstr_xmalloc(&tmp_ptr->allow_groups, &uint16_tmp, buffer);
safe_unpack16(&tmp_ptr->default_part, buffer);
safe_unpack32(&tmp_ptr->max_time, buffer);
safe_unpack32(&tmp_ptr->max_nodes, buffer);
safe_unpack32(&tmp_ptr->min_nodes, buffer);
safe_unpackstr_xmalloc(&tmp_ptr->name, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&tmp_ptr->nodes, &uint16_tmp, buffer);
safe_unpack16(&tmp_ptr->root_only, buffer);
safe_unpack16(&tmp_ptr->shared, buffer);
safe_unpack16(&tmp_ptr->state_up, buffer);
return SLURM_SUCCESS;
xfree(tmp_ptr->name);
xfree(tmp_ptr->nodes);
xfree(tmp_ptr->allow_groups);
xfree(tmp_ptr);
*msg = NULL;
return SLURM_ERROR;
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
static void
_pack_delete_partition_msg(delete_part_msg_t * msg, Buf buffer)
{
assert(msg != NULL);
packstr(msg->name, buffer);
}
static int
_unpack_delete_partition_msg(delete_part_msg_t ** msg, Buf buffer)
{
uint16_t uint16_tmp;
delete_part_msg_t *tmp_ptr;
assert(msg != NULL);
/* alloc memory for structure */
tmp_ptr = xmalloc(sizeof(delete_part_msg_t));
*msg = tmp_ptr;
safe_unpackstr_xmalloc(&tmp_ptr->name, &uint16_tmp, buffer);
return SLURM_SUCCESS;
unpack_error:
xfree(tmp_ptr->name);
xfree(tmp_ptr);
*msg = NULL;
return SLURM_ERROR;
}
static void
_pack_job_step_create_request_msg(job_step_create_request_msg_t
* msg, Buf buffer)
pack32(msg->job_id, buffer);
pack32(msg->user_id, buffer);
pack32(msg->node_count, buffer);
pack32(msg->cpu_count, buffer);
pack32(msg->num_tasks, buffer);
pack16(msg->relative, buffer);
pack16(msg->task_dist, buffer);
pack16(msg->port, buffer);
packstr(msg->host, buffer);
packstr(msg->node_list, buffer);
static int
_unpack_job_step_create_request_msg(job_step_create_request_msg_t ** msg,
Buf buffer)
{
uint16_t uint16_tmp;
job_step_create_request_msg_t *tmp_ptr;
/* alloc memory for structure */
assert(msg != NULL);
tmp_ptr = xmalloc(sizeof(job_step_create_request_msg_t));
*msg = tmp_ptr;
safe_unpack32(&(tmp_ptr->job_id), buffer);
safe_unpack32(&(tmp_ptr->user_id), buffer);
safe_unpack32(&(tmp_ptr->node_count), buffer);
safe_unpack32(&(tmp_ptr->cpu_count), buffer);
safe_unpack32(&(tmp_ptr->num_tasks), buffer);
safe_unpack16(&(tmp_ptr->relative), buffer);
safe_unpack16(&(tmp_ptr->task_dist), buffer);
safe_unpack16(&(tmp_ptr->port), buffer);
safe_unpackstr_xmalloc(&(tmp_ptr->host), &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&(tmp_ptr->node_list), &uint16_tmp, buffer);
return SLURM_SUCCESS;
xfree(tmp_ptr->host);
xfree(tmp_ptr->node_list);
xfree(tmp_ptr);
*msg = NULL;
return SLURM_ERROR;

Moe Jette
committed
_pack_kill_job_msg(kill_job_msg_t * msg, Buf buffer)
pack32(msg->job_id, buffer);
pack32(msg->job_uid, buffer);

Moe Jette
committed
_unpack_kill_job_msg(kill_job_msg_t ** msg, Buf buffer)

Moe Jette
committed
kill_job_msg_t *tmp_ptr;
/* alloc memory for structure */
assert(msg);

Moe Jette
committed
tmp_ptr = xmalloc(sizeof(kill_job_msg_t));
*msg = tmp_ptr;
safe_unpack32(&(tmp_ptr->job_id), buffer);
safe_unpack32(&(tmp_ptr->job_uid), buffer);
return SLURM_SUCCESS;
*msg = NULL;
return SLURM_ERROR;
static void
_pack_epilog_comp_msg(epilog_complete_msg_t * msg, Buf buffer)
{
assert(msg != NULL);
pack32(msg->job_id, buffer);
pack32(msg->return_code, buffer);
packstr(msg->node_name, buffer);
}
static int
_unpack_epilog_comp_msg(epilog_complete_msg_t ** msg, Buf buffer)
{
epilog_complete_msg_t *tmp_ptr;
uint16_t uint16_tmp;
/* alloc memory for structure */
assert(msg);
tmp_ptr = xmalloc(sizeof(epilog_complete_msg_t));
*msg = tmp_ptr;
safe_unpack32(&(tmp_ptr->job_id), buffer);
safe_unpack32(&(tmp_ptr->return_code), buffer);
safe_unpackstr_xmalloc(& (tmp_ptr->node_name), &uint16_tmp, buffer);
return SLURM_SUCCESS;
unpack_error:
xfree(tmp_ptr);
*msg = NULL;
return SLURM_ERROR;
}
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
static void
_pack_update_job_time_msg(job_time_msg_t * msg, Buf buffer)
{
assert(msg != NULL);
pack32(msg->job_id, buffer);
pack_time((uint32_t) msg->expiration_time, buffer);
}
static int
_unpack_update_job_time_msg(job_time_msg_t ** msg, Buf buffer)
{
job_time_msg_t *tmp_ptr;
/* alloc memory for structure */
assert(msg);
tmp_ptr = xmalloc(sizeof(job_time_msg_t));
*msg = tmp_ptr;
safe_unpack32(&(tmp_ptr->job_id), buffer);
safe_unpack_time(& (tmp_ptr->expiration_time), buffer);
return SLURM_SUCCESS;
unpack_error:
*msg = NULL;
return SLURM_ERROR;
}
static void
_pack_job_step_create_response_msg(job_step_create_response_msg_t * msg,
Buf buffer)
pack32(msg->job_step_id, buffer);
packstr(msg->node_list, buffer);
slurm_cred_pack(msg->cred, buffer);
switch_pack_jobinfo(msg->switch_job, buffer);
static int
_unpack_job_step_create_response_msg(job_step_create_response_msg_t ** msg,
Buf buffer)
{
uint16_t uint16_tmp;
job_step_create_response_msg_t *tmp_ptr;
/* alloc memory for structure */
assert(msg != NULL);
tmp_ptr = xmalloc(sizeof(job_step_create_response_msg_t));
*msg = tmp_ptr;
safe_unpack32(&tmp_ptr->job_step_id, buffer);
safe_unpackstr_xmalloc(&tmp_ptr->node_list, &uint16_tmp, buffer);
if (!(tmp_ptr->cred = slurm_cred_unpack(buffer)))
goto unpack_error;
switch_alloc_jobinfo(&tmp_ptr->switch_job);
if (switch_unpack_jobinfo(tmp_ptr->switch_job, buffer)) {
error("switch_unpack_jobinfo: %m");
switch_free_jobinfo(tmp_ptr->switch_job);
goto unpack_error;
}
return SLURM_SUCCESS;
xfree(tmp_ptr->node_list);
xfree(tmp_ptr);
*msg = NULL;
return SLURM_ERROR;
static void
_pack_partition_info_msg(slurm_msg_t * msg, Buf buffer)
{
packmem_array(msg->data, msg->data_size, buffer);
static int
_unpack_partition_info_msg(partition_info_msg_t ** msg, Buf buffer)
int i;
partition_info_t *partition = NULL;
*msg = xmalloc(sizeof(partition_info_msg_t));
/* load buffer's header (data structure version and time) */
safe_unpack32(&((*msg)->record_count), buffer);
safe_unpack_time(&((*msg)->last_update), buffer);
partition = (*msg)->partition_array =
xmalloc(sizeof(partition_info_t) * (*msg)->record_count);
/* load individual job info */
for (i = 0; i < (*msg)->record_count; i++) {
if (_unpack_partition_info_members(&partition[i], buffer))
goto unpack_error;
xfree(partition);
xfree(*msg);
*msg = NULL;
return SLURM_ERROR;
static int
_unpack_partition_info_members(partition_info_t * part, Buf buffer)

tewk
committed
{
uint16_t uint16_tmp;

tewk
committed
safe_unpackstr_xmalloc(&part->name, &uint16_tmp, buffer);

tewk
committed
if (part->name == NULL)
part->name = xmalloc(1); /* part->name = "" implicit */
safe_unpack32(&part->max_time, buffer);
safe_unpack32(&part->max_nodes, buffer);
safe_unpack32(&part->min_nodes, buffer);
safe_unpack32(&part->total_nodes, buffer);
safe_unpack32(&part->total_cpus, buffer);
safe_unpack16(&part->default_part, buffer);
safe_unpack16(&part->root_only, buffer);
safe_unpack16(&part->shared, buffer);
safe_unpack16(&part->state_up, buffer);
safe_unpackstr_xmalloc(&part->allow_groups, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&part->nodes, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&node_inx_str, &uint16_tmp, buffer);

tewk
committed
if (node_inx_str == NULL)
part->node_inx = bitfmt2int("");
else {
part->node_inx = bitfmt2int(node_inx_str);
node_inx_str = NULL;
return SLURM_SUCCESS;
xfree(part->name);
xfree(part->allow_groups);
xfree(part->nodes);
xfree(node_inx_str);
return SLURM_ERROR;

tewk
committed
}
/* pack_job_step_info_members
* pack selected fields of the description of a job into a buffer
* IN job_id, step_id, user_id, start_time, partition, nodes - job info
* IN/OUT buffer - destination of the pack, contains pointers that are
* automatically updated
*/
void
pack_job_step_info_members(uint32_t job_id, uint16_t step_id,
uint32_t user_id, uint32_t num_tasks,
time_t start_time, char *partition,
char *nodes, Buf buffer)
pack32(job_id, buffer);
pack16(step_id, buffer);
pack32(user_id, buffer);
pack32(num_tasks, buffer);
pack_time(start_time, buffer);
packstr(partition, buffer);
packstr(nodes, buffer);
/* pack_job_step_info
* packs a slurm job steps info
* IN step - pointer to the job step info
* IN/OUT buffer - destination of the pack, contains pointers that are
* automatically updated
*/
void
pack_job_step_info(job_step_info_t * step, Buf buffer)
pack_job_step_info_members(step->job_id,
step->step_id,
step->user_id,
step->num_tasks,
step->start_time,
step->partition, step->nodes, buffer);
/* _unpack_job_step_info_members
* unpacks a set of slurm job step info for one job step
* OUT step - pointer to the job step info buffer
* IN/OUT buffer - source of the unpack, contains pointers that are
* automatically updated
*/
static int
_unpack_job_step_info_members(job_step_info_t * step, Buf buffer)
{
uint16_t uint16_tmp = 0;
safe_unpack32(&step->job_id, buffer);
safe_unpack16(&step->step_id, buffer);
safe_unpack32(&step->user_id, buffer);
safe_unpack32(&step->num_tasks, buffer);
safe_unpack_time(&step->start_time, buffer);
safe_unpackstr_xmalloc(&step->partition, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&step->nodes, &uint16_tmp, buffer);
return SLURM_SUCCESS;
xfree(step->partition);
xfree(step->nodes);
return SLURM_ERROR;
static int
_unpack_job_step_info_response_msg(job_step_info_response_msg_t
** msg, Buf buffer)
int i = 0;
job_step_info_t *step;
*msg = xmalloc(sizeof(job_step_info_response_msg_t));
safe_unpack_time(&(*msg)->last_update, buffer);
safe_unpack32(&(*msg)->job_step_count, buffer);
step = (*msg)->job_steps =
xmalloc(sizeof(job_step_info_t) * (*msg)->job_step_count);
for (i = 0; i < (*msg)->job_step_count; i++)
if (_unpack_job_step_info_members(&step[i], buffer))
goto unpack_error;
return SLURM_SUCCESS;
xfree(step);
xfree(*msg);
*msg = NULL;
return SLURM_ERROR;
static void
_pack_buffer_msg(slurm_msg_t * msg, Buf buffer)
packmem_array(msg->data, msg->data_size, buffer);
static int
_unpack_job_info_msg(job_info_msg_t ** msg, Buf buffer)
job_info_t *job = NULL;
*msg = xmalloc(sizeof(job_info_msg_t));
/* load buffer's header (data structure version and time) */
safe_unpack32(&((*msg)->record_count), buffer);
safe_unpack_time(&((*msg)->last_update), buffer);
job = (*msg)->job_array =
xmalloc(sizeof(job_info_t) * (*msg)->record_count);
for (i = 0; i < (*msg)->record_count; i++) {
if (_unpack_job_info_members(&job[i], buffer))
goto unpack_error;
return SLURM_SUCCESS;
xfree(job);
xfree(*msg);
*msg = NULL;
/* _unpack_job_info_members
* unpacks a set of slurm job info for one job
* OUT job - pointer to the job info buffer
* IN/OUT buffer - source of the unpack, contains pointers that are
* automatically updated
*/
static int
_unpack_job_info_members(job_info_t * job, Buf buffer)
safe_unpack32(&job->job_id, buffer);
safe_unpack32(&job->user_id, buffer);
safe_unpack16(&job->job_state, buffer);
safe_unpack16(&job->batch_flag, buffer);
safe_unpack32(&job->alloc_sid, buffer);
safe_unpack32(&job->time_limit, buffer);
safe_unpack_time(&job->start_time, buffer);
safe_unpack_time(&job->end_time, buffer);
safe_unpack32(&job->priority, buffer);
safe_unpackstr_xmalloc(&job->nodes, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&job->partition, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&job->name, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&job->alloc_node, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&node_inx_str, &uint16_tmp, buffer);
job->node_inx = bitfmt2int("");
else {
job->node_inx = bitfmt2int(node_inx_str);
safe_unpack32(&job->num_procs, buffer);
safe_unpack32(&job->num_nodes, buffer);
safe_unpack16(&job->shared, buffer);
safe_unpack16(&job->contiguous, buffer);
safe_unpack32(&job->min_procs, buffer);
safe_unpack32(&job->min_memory, buffer);
safe_unpack32(&job->min_tmp_disk, buffer);
safe_unpackstr_xmalloc(&job->req_nodes, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&node_inx_str, &uint16_tmp, buffer);
job->req_node_inx = bitfmt2int("");
else {
safe_unpackstr_xmalloc(&job->exc_nodes, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&node_inx_str, &uint16_tmp, buffer);
if (node_inx_str == NULL)
job->exc_node_inx = bitfmt2int("");
else {
job->exc_node_inx = bitfmt2int(node_inx_str);
xfree(node_inx_str);
}
safe_unpackstr_xmalloc(&job->features, &uint16_tmp, buffer);
return SLURM_SUCCESS;
xfree(job->nodes);
xfree(job->partition);
xfree(job->name);
xfree(job->req_nodes);
xfree(job->exc_nodes);
}
static void
_pack_slurm_ctl_conf_msg(slurm_ctl_conf_info_msg_t * build_ptr, Buf buffer)
{
pack_time(build_ptr->last_update, buffer);
packstr(build_ptr->authtype, buffer);
packstr(build_ptr->backup_addr, buffer);
packstr(build_ptr->backup_controller, buffer);
packstr(build_ptr->control_addr, buffer);
packstr(build_ptr->control_machine, buffer);
packstr(build_ptr->epilog, buffer);
pack16(build_ptr->fast_schedule, buffer);
pack32(build_ptr->first_job_id, buffer);
pack16(build_ptr->hash_base, buffer);
pack16(build_ptr->heartbeat_interval, buffer);
pack16(build_ptr->inactive_limit, buffer);
packstr(build_ptr->job_comp_loc, buffer);
packstr(build_ptr->job_comp_type, buffer);
pack16(build_ptr->kill_wait, buffer);
pack16(build_ptr->max_job_cnt, buffer);
pack16(build_ptr->min_job_age, buffer);
packstr(build_ptr->plugindir, buffer);
packstr(build_ptr->prolog, buffer);
pack16(build_ptr->ret2service, buffer);
packstr(build_ptr->schedauth, buffer);
pack16(build_ptr->schedport, buffer);
packstr(build_ptr->schedtype, buffer);
pack16(build_ptr->slurm_user_id, buffer);
packstr(build_ptr->slurm_user_name, buffer);
pack16(build_ptr->slurmctld_debug, buffer);
packstr(build_ptr->slurmctld_logfile, buffer);
packstr(build_ptr->slurmctld_pidfile, buffer);
pack32(build_ptr->slurmctld_port, buffer);
pack16(build_ptr->slurmctld_timeout, buffer);
pack16(build_ptr->slurmd_debug, buffer);
packstr(build_ptr->slurmd_logfile, buffer);
packstr(build_ptr->slurmd_pidfile, buffer);
pack32(build_ptr->slurmd_port, buffer);
packstr(build_ptr->slurmd_spooldir, buffer);
pack16(build_ptr->slurmd_timeout, buffer);
packstr(build_ptr->slurm_conf, buffer);
packstr(build_ptr->state_save_location, buffer);
packstr(build_ptr->switch_type, buffer);
packstr(build_ptr->tmp_fs, buffer);
pack16(build_ptr->wait_time, buffer);
packstr(build_ptr->job_credential_private_key, buffer);
packstr(build_ptr->job_credential_public_certificate, buffer);
}
static int
_unpack_slurm_ctl_conf_msg(slurm_ctl_conf_info_msg_t **
build_buffer_ptr, Buf buffer)
{
uint16_t uint16_tmp;
slurm_ctl_conf_info_msg_t *build_ptr;
/* alloc memory for structure */
build_ptr = xmalloc(sizeof(slurm_ctl_conf_t));
*build_buffer_ptr = build_ptr;
/* load the data values */
/* unpack timestamp of snapshot */
safe_unpack_time(&build_ptr->last_update, buffer);
safe_unpackstr_xmalloc(&build_ptr->authtype, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&build_ptr->backup_addr, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&build_ptr->backup_controller, &uint16_tmp,
buffer);
safe_unpackstr_xmalloc(&build_ptr->control_addr, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&build_ptr->control_machine, &uint16_tmp,
buffer);
safe_unpackstr_xmalloc(&build_ptr->epilog, &uint16_tmp, buffer);
safe_unpack16(&build_ptr->fast_schedule, buffer);
safe_unpack32(&build_ptr->first_job_id, buffer);
safe_unpack16(&build_ptr->hash_base, buffer);
safe_unpack16(&build_ptr->heartbeat_interval, buffer);
safe_unpack16(&build_ptr->inactive_limit, buffer);
safe_unpackstr_xmalloc(&build_ptr->job_comp_loc, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&build_ptr->job_comp_type, &uint16_tmp, buffer);
safe_unpack16(&build_ptr->kill_wait, buffer);
safe_unpack16(&build_ptr->max_job_cnt, buffer);
safe_unpack16(&build_ptr->min_job_age, buffer);
safe_unpackstr_xmalloc(&build_ptr->plugindir, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&build_ptr->prolog, &uint16_tmp, buffer);
safe_unpack16(&build_ptr->ret2service, buffer);
safe_unpackstr_xmalloc(&build_ptr->schedauth, &uint16_tmp, buffer);
safe_unpack16(&build_ptr->schedport, buffer);
safe_unpackstr_xmalloc(&build_ptr->schedtype, &uint16_tmp, buffer);
safe_unpack16(&build_ptr->slurm_user_id, buffer);
safe_unpackstr_xmalloc(&build_ptr->slurm_user_name,
&uint16_tmp, buffer);
safe_unpack16(&build_ptr->slurmctld_debug, buffer);
safe_unpackstr_xmalloc(&build_ptr->slurmctld_logfile,
&uint16_tmp, buffer);
safe_unpackstr_xmalloc(&build_ptr->slurmctld_pidfile,
&uint16_tmp, buffer);
safe_unpack32(&build_ptr->slurmctld_port, buffer);
safe_unpack16(&build_ptr->slurmctld_timeout, buffer);
safe_unpack16(&build_ptr->slurmd_debug, buffer);
safe_unpackstr_xmalloc(&build_ptr->slurmd_logfile, &uint16_tmp,
buffer);
safe_unpackstr_xmalloc(&build_ptr->slurmd_pidfile, &uint16_tmp,
buffer);
safe_unpack32(&build_ptr->slurmd_port, buffer);
safe_unpackstr_xmalloc(&build_ptr->slurmd_spooldir, &uint16_tmp,
buffer);
safe_unpack16(&build_ptr->slurmd_timeout, buffer);
safe_unpackstr_xmalloc(&build_ptr->slurm_conf, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&build_ptr->state_save_location,
&uint16_tmp, buffer);
safe_unpackstr_xmalloc(&build_ptr->switch_type, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&build_ptr->tmp_fs, &uint16_tmp, buffer);
safe_unpack16(&build_ptr->wait_time, buffer);
safe_unpackstr_xmalloc(&build_ptr->job_credential_private_key,
&uint16_tmp, buffer);
safe_unpackstr_xmalloc(&build_ptr->
job_credential_public_certificate,
&uint16_tmp, buffer);
return SLURM_SUCCESS;
xfree(build_ptr->authtype);
xfree(build_ptr->backup_addr);
xfree(build_ptr->backup_controller);
xfree(build_ptr->control_addr);
xfree(build_ptr->control_machine);
xfree(build_ptr->epilog);
xfree(build_ptr->job_comp_loc);
xfree(build_ptr->job_comp_type);
xfree(build_ptr->plugindir);
xfree(build_ptr->prolog);
xfree(build_ptr->slurmctld_logfile);
xfree(build_ptr->slurmctld_pidfile);
xfree(build_ptr->slurmd_logfile);
xfree(build_ptr->slurmd_pidfile);
xfree(build_ptr->slurmd_spooldir);
xfree(build_ptr->slurm_conf);
xfree(build_ptr->state_save_location);
xfree(build_ptr->tmp_fs);
xfree(build_ptr->job_credential_private_key);
xfree(build_ptr->job_credential_public_certificate);
xfree(build_ptr);
*build_buffer_ptr = NULL;
return SLURM_ERROR;
/* _pack_job_desc_msg
* IN job_desc_ptr - pointer to the job descriptor to pack
* IN/OUT buffer - destination of the pack, contains pointers that are
static void
_pack_job_desc_msg(job_desc_msg_t * job_desc_ptr, Buf buffer)
{
/* load the data values */
pack16(job_desc_ptr->contiguous, buffer);
pack16(job_desc_ptr->kill_on_node_fail, buffer);
packstr(job_desc_ptr->features, buffer);
pack32(job_desc_ptr->job_id, buffer);
packstr(job_desc_ptr->name, buffer);
packstr(job_desc_ptr->alloc_node, buffer);
pack32(job_desc_ptr->alloc_sid, buffer);
pack32(job_desc_ptr->min_procs, buffer);
pack32(job_desc_ptr->min_memory, buffer);
pack32(job_desc_ptr->min_tmp_disk, buffer);
packstr(job_desc_ptr->partition, buffer);
pack32(job_desc_ptr->priority, buffer);
packstr(job_desc_ptr->req_nodes, buffer);
packstr(job_desc_ptr->exc_nodes, buffer);
packstr_array(job_desc_ptr->environment, job_desc_ptr->env_size,
buffer);
packstr(job_desc_ptr->script, buffer);
packstr_array(job_desc_ptr->argv, job_desc_ptr->argc, buffer);
packstr(job_desc_ptr->err, buffer);
packstr(job_desc_ptr->in, buffer);
packstr(job_desc_ptr->out, buffer);
packstr(job_desc_ptr->work_dir, buffer);
pack16(job_desc_ptr->immediate, buffer);
pack16(job_desc_ptr->shared, buffer);
pack16(job_desc_ptr->task_dist, buffer);
pack32(job_desc_ptr->time_limit, buffer);
pack32(job_desc_ptr->num_procs, buffer);
pack32(job_desc_ptr->min_nodes, buffer);
pack32(job_desc_ptr->max_nodes, buffer);
pack32(job_desc_ptr->num_tasks, buffer);
pack32(job_desc_ptr->user_id, buffer);
pack16(job_desc_ptr->port, buffer);
packstr(job_desc_ptr->host, buffer);
/* _unpack_job_desc_msg
* OUT job_desc_buffer_ptr - place to put pointer to allocated job desc struct
* IN/OUT buffer - source of the unpack, contains pointers that are
static int
_unpack_job_desc_msg(job_desc_msg_t ** job_desc_buffer_ptr, Buf buffer)
{
job_desc_msg_t *job_desc_ptr;
/* alloc memory for structure */
job_desc_ptr = xmalloc(sizeof(job_desc_msg_t));
*job_desc_buffer_ptr = job_desc_ptr;
/* load the data values */
safe_unpack16(&job_desc_ptr->contiguous, buffer);
safe_unpack16(&job_desc_ptr->kill_on_node_fail, buffer);
safe_unpackstr_xmalloc(&job_desc_ptr->features, &uint16_tmp, buffer);
safe_unpack32(&job_desc_ptr->job_id, buffer);
safe_unpackstr_xmalloc(&job_desc_ptr->name, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&job_desc_ptr->alloc_node, &uint16_tmp, buffer);
safe_unpack32(&job_desc_ptr->alloc_sid, buffer);
safe_unpack32(&job_desc_ptr->min_procs, buffer);
safe_unpack32(&job_desc_ptr->min_memory, buffer);
safe_unpack32(&job_desc_ptr->min_tmp_disk, buffer);
safe_unpackstr_xmalloc(&job_desc_ptr->partition, &uint16_tmp, buffer);
safe_unpack32(&job_desc_ptr->priority, buffer);
safe_unpackstr_xmalloc(&job_desc_ptr->req_nodes, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&job_desc_ptr->exc_nodes, &uint16_tmp, buffer);
safe_unpackstr_array(&job_desc_ptr->environment,
&job_desc_ptr->env_size, buffer);
safe_unpackstr_xmalloc(&job_desc_ptr->script, &uint16_tmp, buffer);
safe_unpackstr_array(&job_desc_ptr->argv, &job_desc_ptr->argc, buffer);
safe_unpackstr_xmalloc(&job_desc_ptr->err, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&job_desc_ptr->in, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&job_desc_ptr->out, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&job_desc_ptr->work_dir, &uint16_tmp, buffer);
safe_unpack16(&job_desc_ptr->immediate, buffer);
safe_unpack16(&job_desc_ptr->shared, buffer);
safe_unpack16(&job_desc_ptr->task_dist, buffer);
safe_unpack32(&job_desc_ptr->time_limit, buffer);
safe_unpack32(&job_desc_ptr->num_procs, buffer);
safe_unpack32(&job_desc_ptr->min_nodes, buffer);
safe_unpack32(&job_desc_ptr->max_nodes, buffer);
safe_unpack32(&job_desc_ptr->num_tasks, buffer);
safe_unpack32(&job_desc_ptr->user_id, buffer);
safe_unpack32(&job_desc_ptr->group_id, buffer);
safe_unpack16(&job_desc_ptr->port, buffer);
safe_unpackstr_xmalloc(&job_desc_ptr->host, &uint16_tmp, buffer);
return SLURM_SUCCESS;
unpack_error:
xfree(job_desc_ptr->features);
xfree(job_desc_ptr->name);
xfree(job_desc_ptr->partition);
xfree(job_desc_ptr->req_nodes);
xfree(job_desc_ptr->environment);
xfree(job_desc_ptr->script);
xfree(job_desc_ptr->argv);
xfree(job_desc_ptr->err);
xfree(job_desc_ptr->in);
xfree(job_desc_ptr->out);
xfree(job_desc_ptr->work_dir);
xfree(job_desc_ptr->host);
*job_desc_buffer_ptr = NULL;
return SLURM_ERROR;
}
static void
_pack_old_job_desc_msg(old_job_alloc_msg_t * job_desc_ptr, Buf buffer)
{
/* load the data values */
pack32(job_desc_ptr->job_id, buffer);
pack32(job_desc_ptr->uid, buffer);
static int
_unpack_old_job_desc_msg(old_job_alloc_msg_t **
job_desc_buffer_ptr, Buf buffer)
{
old_job_alloc_msg_t *job_desc_ptr;
/* alloc memory for structure */
assert(job_desc_buffer_ptr != NULL);
job_desc_ptr = xmalloc(sizeof(old_job_alloc_msg_t));
*job_desc_buffer_ptr = job_desc_ptr;
/* load the data values */
safe_unpack32(&job_desc_ptr->job_id, buffer);
safe_unpack32(&job_desc_ptr->uid, buffer);
return SLURM_SUCCESS;
*job_desc_buffer_ptr = NULL;
return SLURM_ERROR;
static void
_pack_last_update_msg(last_update_msg_t * msg, Buf buffer)
{
pack_time(msg->last_update, buffer);
}
static int
_unpack_last_update_msg(last_update_msg_t ** msg, Buf buffer)
{
last_update_msg_t *last_update_msg;
last_update_msg = xmalloc(sizeof(last_update_msg_t));
*msg = last_update_msg;
safe_unpack_time(&last_update_msg->last_update, buffer);
return SLURM_SUCCESS;
*msg = NULL;
return SLURM_ERROR;
static void
_pack_return_code_msg(return_code_msg_t * msg, Buf buffer)
pack32(msg->return_code, buffer);
static int
_unpack_return_code_msg(return_code_msg_t ** msg, Buf buffer)
return_code_msg_t *return_code_msg;
return_code_msg = xmalloc(sizeof(return_code_msg_t));
*msg = return_code_msg;
safe_unpack32(&return_code_msg->return_code, buffer);
return SLURM_SUCCESS;
*msg = NULL;
return SLURM_ERROR;
static void
_pack_reattach_tasks_request_msg(reattach_tasks_request_msg_t * msg,
Buf buffer)
pack32(msg->job_id, buffer);
pack32(msg->job_step_id, buffer);
pack32(msg->srun_node_id, buffer);
pack16(msg->resp_port, buffer);
pack16(msg->io_port, buffer);
packstr(msg->ofname, buffer);
packstr(msg->efname, buffer);
packstr(msg->ifname, buffer);
slurm_cred_pack(msg->cred, buffer);
static int
_unpack_reattach_tasks_request_msg(reattach_tasks_request_msg_t ** msg_ptr,
Buf buffer)
reattach_tasks_request_msg_t *msg;
msg = xmalloc(sizeof(*msg));
*msg_ptr = msg;
safe_unpack32(&msg->job_id, buffer);
safe_unpack32(&msg->job_step_id, buffer);
safe_unpack32(&msg->srun_node_id, buffer);
safe_unpack16(&msg->resp_port, buffer);
safe_unpack16(&msg->io_port, buffer);
safe_unpackstr_xmalloc(&msg->ofname, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&msg->efname, &uint16_tmp, buffer);
safe_unpackstr_xmalloc(&msg->ifname, &uint16_tmp, buffer);
if (!(msg->cred = slurm_cred_unpack(buffer)))
goto unpack_error;
return SLURM_SUCCESS;
unpack_error:
slurm_free_reattach_tasks_request_msg(msg);
*msg_ptr = NULL;
return SLURM_ERROR;
static void
_pack_reattach_tasks_response_msg(reattach_tasks_response_msg_t * msg,
Buf buffer)