From 47d2735160d38f7de2311620e0da9f5303f277c7 Mon Sep 17 00:00:00 2001 From: tewk <tewk@unknown> Date: Mon, 22 Jul 2002 21:36:59 +0000 Subject: [PATCH] Added slurm_stream_io_header type changed credential.signature from a uint32_t to char[16] 128 signed sha1 --- src/common/slurm_protocol_defs.h | 10 ++++- src/common/slurm_protocol_pack.c | 68 ++++++++++++++++++++++++++++---- src/common/slurm_protocol_pack.h | 10 ++++- 3 files changed, 77 insertions(+), 11 deletions(-) diff --git a/src/common/slurm_protocol_defs.h b/src/common/slurm_protocol_defs.h index f41c54e499a..cb263ff08b6 100644 --- a/src/common/slurm_protocol_defs.h +++ b/src/common/slurm_protocol_defs.h @@ -166,6 +166,14 @@ typedef struct slurm_protocol_header uint32_t body_length ; } header_t ; +typedef struct slurm_stream_io_header +{ + uint16_t version ; /*version/magic number*/ + char key[16] ; + uint32_t task_id ; + uint16_t type ; +} slurm_stream_io_header ; + /* Job credential */ typedef struct slurm_job_credential { @@ -173,7 +181,7 @@ typedef struct slurm_job_credential uid_t user_id; char* node_list; time_t experation_time; - uint32_t signature; /* What are we going to do here? */ + char signature[16]; /* What are we going to do here? */ } slurm_job_credential_t; typedef struct slurm_msg diff --git a/src/common/slurm_protocol_pack.c b/src/common/slurm_protocol_pack.c index 0e24b82830f..ae0f7873ff0 100644 --- a/src/common/slurm_protocol_pack.c +++ b/src/common/slurm_protocol_pack.c @@ -66,6 +66,27 @@ void unpack_header ( header_t * header , char ** buffer , uint32_t * length ) unpack32 ( & header -> body_length , ( void ** ) buffer , length ) ; } +void pack_stream_io_header ( slurm_stream_io_header * msg , void ** buffer , uint32_t * length ) +{ + assert ( msg != NULL ); + + pack16( msg->version, buffer, length ) ; + packmem( msg->key, 16 , buffer, length ) ; + pack32( msg->task_id, buffer, length ) ; + pack16( msg->type, buffer, length ) ; +} + +void unpack_stream_io_header ( slurm_stream_io_header * msg , void ** buffer , uint32_t * length ) +{ + uint16_t uint16_tmp; + + unpack16( & msg->version, buffer, length ) ; + unpackmem( msg->key, & uint16_tmp , buffer , length ) ; + unpack32( & msg->task_id, buffer, length ) ; + unpack16( & msg->type, buffer, length ) ; +} + + /* pack_msg * packs a slurm protocol mesg body * header - the body structure to pack @@ -346,6 +367,9 @@ int unpack_update_node_msg ( update_node_msg_t ** msg , void ** buffer , uint32_ uint16_t uint16_tmp; update_node_msg_t * tmp_ptr ; /* alloc memory for structure */ + + assert ( msg != NULL ); + tmp_ptr = xmalloc ( sizeof ( update_node_msg_t ) ) ; if (tmp_ptr == NULL) return ENOMEM; @@ -358,6 +382,8 @@ int unpack_update_node_msg ( update_node_msg_t ** msg , void ** buffer , uint32_ void pack_node_registration_status_msg ( slurm_node_registration_status_msg_t * msg, void ** buffer , uint32_t * length ) { + assert ( msg != NULL ); + pack32 ( msg -> timestamp , ( void ** ) buffer , length ) ; packstr ( msg -> node_name , ( void ** ) buffer , length ) ; pack32 ( msg -> cpus , ( void ** ) buffer , length ) ; @@ -370,6 +396,9 @@ int unpack_node_registration_status_msg ( slurm_node_registration_status_msg_t * uint16_t uint16_tmp; slurm_node_registration_status_msg_t * node_reg_ptr ; /* alloc memory for structure */ + + assert ( msg != NULL ); + node_reg_ptr = xmalloc ( sizeof ( slurm_node_registration_status_msg_t ) ) ; if (node_reg_ptr == NULL) { @@ -389,6 +418,8 @@ int unpack_node_registration_status_msg ( slurm_node_registration_status_msg_t * void pack_resource_allocation_response_msg ( resource_allocation_response_msg_t * msg, void ** buffer , int * length ) { + assert ( msg != NULL ); + pack32 ( msg->job_id , ( void ** ) buffer , length ) ; packstr ( msg->node_list , ( void ** ) buffer , length ) ; pack16 ( msg->num_cpu_groups , ( void ** ) buffer , length ) ; @@ -400,6 +431,9 @@ int unpack_resource_allocation_response_msg ( resource_allocation_response_msg_t { uint16_t uint16_tmp; resource_allocation_response_msg_t * tmp_ptr ; + + assert ( msg != NULL ); + /* alloc memory for structure */ tmp_ptr = xmalloc ( sizeof ( resource_allocation_response_msg_t ) ) ; if (tmp_ptr == NULL) @@ -417,6 +451,8 @@ int unpack_resource_allocation_response_msg ( resource_allocation_response_msg_t void pack_submit_response_msg ( submit_response_msg_t * msg, void ** buffer , int * length ) { + assert ( msg != NULL ); + pack32 ( msg->job_id , ( void ** ) buffer , length ) ; } @@ -424,6 +460,9 @@ int unpack_submit_response_msg ( submit_response_msg_t ** msg , void ** buffer , { submit_response_msg_t * tmp_ptr ; /* alloc memory for structure */ + + assert ( msg != NULL ); + tmp_ptr = xmalloc ( sizeof ( submit_response_msg_t ) ) ; if (tmp_ptr == NULL) return ENOMEM; @@ -436,6 +475,7 @@ int unpack_submit_response_msg ( submit_response_msg_t ** msg , void ** buffer , void pack_node_info_msg ( slurm_msg_t * msg, void ** buf_ptr , int * buffer_size ) { assert ( msg != NULL ); + assert ( sizeof(*msg) == sizeof(slurm_msg_t) ) ; assert ( buf_ptr != NULL && (*buf_ptr) != NULL ) ; assert ( ( buffer_size ) != NULL ) ; @@ -451,6 +491,8 @@ int unpack_node_info_msg ( node_info_msg_t ** msg , void ** buf_ptr , int * buff int i; node_table_t *node; + assert ( msg != NULL ); + *msg = xmalloc ( sizeof ( node_info_msg_t ) ); if ( *msg == NULL ) return ENOMEM ; @@ -472,18 +514,22 @@ int unpack_node_info_msg ( node_info_msg_t ** msg , void ** buf_ptr , int * buff int unpack_node_table_msg ( node_table_msg_t ** node , void ** buf_ptr , int * buffer_size ) { - *node = xmalloc ( sizeof(node_table_t) ); - if (node == NULL) { - return ENOMEM; - } - unpack_node_table ( *node , buf_ptr , buffer_size ) ; - return 0 ; + assert ( node != NULL ); + + *node = xmalloc ( sizeof(node_table_t) ); + if (node == NULL) { + return ENOMEM; + } + unpack_node_table ( *node , buf_ptr , buffer_size ) ; + return 0 ; } int unpack_node_table ( node_table_msg_t * node , void ** buf_ptr , int * buffer_size ) { uint16_t uint16_tmp; + assert ( node != NULL ); + unpackstr_xmalloc (&node->name, &uint16_tmp, buf_ptr, buffer_size); unpack16 (&node->node_state, buf_ptr, buffer_size); unpack32 (&node->cpus, buf_ptr, buffer_size); @@ -518,6 +564,9 @@ unpack_update_partition_msg ( update_part_msg_t ** msg , void ** buffer, uint32_ { 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 ) ) ; if (tmp_ptr == NULL) @@ -553,6 +602,9 @@ int unpack_job_step_create_request_msg ( job_step_create_request_msg_t** msg , v 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 ) ) ; if (tmp_ptr == NULL) return ENOMEM; @@ -576,7 +628,7 @@ void pack_job_credential ( slurm_job_credential_t* msg , void ** buffer , uint32 pack16( (uint16_t) msg->user_id, buffer, length ) ; packstr( msg->node_list, buffer, length ) ; pack32( msg->experation_time, buffer, length ) ; - pack32( msg->signature, buffer, length ) ; + packmem( msg->signature, 16 , buffer, length ) ; } int unpack_job_credential( slurm_job_credential_t** msg , void ** buffer , uint32_t * length ) @@ -592,7 +644,7 @@ int unpack_job_credential( slurm_job_credential_t** msg , void ** buffer , uint3 unpack16( (uint16_t*) &(tmp_ptr->user_id), buffer, length ) ; unpackstr_xmalloc ( &(tmp_ptr->node_list), &uint16_tmp, ( void ** ) buffer , length ) ; unpack32( (uint32_t*) &(tmp_ptr->experation_time), buffer, length ) ; /* What are we going to do about time_t ? */ - unpack32( &(tmp_ptr->signature), buffer, length ) ; + unpackmem( tmp_ptr->signature, 16 , buffer, length ) ; *msg = tmp_ptr; return 0; diff --git a/src/common/slurm_protocol_pack.h b/src/common/slurm_protocol_pack.h index 2020e3cc0f7..29da1d961b5 100644 --- a/src/common/slurm_protocol_pack.h +++ b/src/common/slurm_protocol_pack.h @@ -18,12 +18,14 @@ /* Pack / Unpack methods for slurm protocol header */ void pack_header ( header_t * header , char ** buffer , uint32_t * length ); - void unpack_header ( header_t * header , char ** buffer , uint32_t * length ); +/* Pack / Unpack methods for slurm io pipe streams header */ +void pack_stream_io_header ( slurm_stream_io_header * msg , void ** buffer , uint32_t * length ) ; +void unpack_stream_io_header ( slurm_stream_io_header * msg , void ** buffer , uint32_t * length ) ; + /* generic case statement Pack / Unpack methods for slurm protocol bodies */ int pack_msg ( slurm_msg_t const * msg , char ** buffer , uint32_t * buf_len ); - int unpack_msg ( slurm_msg_t * msgi , char ** buffer , uint32_t * buf_len ); /* specific Pack / Unpack methods for slurm protocol bodies */ @@ -39,6 +41,7 @@ int unpack_last_update ( last_update_msg_t ** msg , void ** buffer , uint32_t * void pack_job_step_create_request_msg ( job_step_create_request_msg_t* msg , void ** buffer , uint32_t * length ); int unpack_job_step_create_request_msg ( job_step_create_request_msg_t** msg , void ** buffer , uint32_t * length ); + void pack_job_step_create_response_msg ( job_step_create_response_msg_t* msg , void ** buffer , uint32_t * length ); int unpack_job_step_create_response_msg (job_step_create_response_msg_t** msg , void ** buffer , uint32_t * length ); @@ -65,8 +68,10 @@ int unpack_node_table ( node_table_msg_t * node , void ** buf_ptr , int * buffer void pack_cancel_job_msg ( job_id_msg_t * msg , void ** buffer , uint32_t * length ); int unpack_cancel_job_msg ( job_id_msg_t ** msg_ptr , void ** buffer , uint32_t * length ); + void pack_cancel_job_step_msg ( job_step_id_msg_t * msg , void ** buffer , uint32_t * length ); int unpack_cancel_job_step_msg ( job_step_id_msg_t ** msg_ptr , void ** buffer , uint32_t * length ); + void pack_cancel_tasks_msg ( kill_tasks_msg_t * msg , void ** buffer , uint32_t * length ); int unpack_cancel_tasks_msg ( kill_tasks_msg_t ** msg_ptr , void ** buffer , uint32_t * length ); @@ -81,6 +86,7 @@ int unpack_update_node_msg ( update_node_msg_t ** msg , void ** buffer , uint32_ void pack_partition_table_msg ( partition_desc_msg_t * msg , void ** buffer , int * buf_len ); int unpack_partition_table_msg ( partition_desc_msg_t ** msg_ptr , void ** buffer , int * buf_len ); + void pack_update_partition_msg ( update_part_msg_t * msg , void ** buffer, uint32_t * length ); int unpack_update_partition_msg ( update_part_msg_t ** msg_ptr , void ** buffer, uint32_t * length ); -- GitLab