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