[Samba] eventlog functionality

Ray Klassen julius_ahenobarbus at yahoo.co.uk
Wed Sep 12 23:23:14 UTC 2018


On 2018-09-12 09:44 AM, Jeremy Allison via samba wrote:
> On Wed, Sep 12, 2018 at 09:30:19AM -0700, Ray Klassen via samba wrote:
>>
>> and from the what the hell department. I did it. Comparing
>>
>> https://docs.microsoft.com/en-us/windows/desktop/api/lmshare/ns-lmshare-_session_info_1
>>
>>
>> and
>>
>> https://docs.microsoft.com/en-us/windows/desktop/api/lmshare/ns-lmshare-_session_info_10
>>
>> and
>>
>> init_srv_sess_info_1
>>
>>
>> I copied, pasted and edited myself a init_srv_sess_info_1 and case  to go
>> with it. It seems to have compiled...
> 
> Woo hoo ! Please post as a patch for review :-).
> 

Glad to. hope this is ok. I read up on the wiki about doing this via 
git, but as this is the very first patch I've ever posted to any FOSS 
project I hope you'll forgive the mess.

 > /***/
 >
966a969,1033
 >  fill in a sess info level 10 structure.
 >  ********************************************************************/
 >
 > static WERROR init_srv_sess_info_10(struct pipes_struct *p,
 > 				   struct srvsvc_NetSessCtr10 *ctr10,
 > 				   uint32_t *resume_handle_p,
 > 				   uint32_t *total_entries)
 > {
 > 	struct sessionid *session_list;
 > 	uint32_t num_entries = 0;
 > 	time_t now = time(NULL);
 > 	uint32_t resume_handle = resume_handle_p ? *resume_handle_p : 0;
 >
 > 	ZERO_STRUCTP(ctr10);
 >
 > 	if (ctr10 == NULL) {
 > 		if (resume_handle_p) {
 > 			*resume_handle_p = 0;
 > 		}
 > 		return WERR_OK;
 > 	}
 >
 > 	*total_entries = list_sessions(p->mem_ctx, &session_list);
 >
 > 	if (resume_handle >= *total_entries) {
 > 		if (resume_handle_p) {
 > 			*resume_handle_p = 0;
 > 		}
 > 		return WERR_OK;
 > 	}
 >
 > 	/* We know num_entries must be positive, due to
 > 	   the check resume_handle >= *total_entries above. */
 >
 > 	num_entries = *total_entries - resume_handle;
 >
 > 	ctr10->array = talloc_zero_array(p->mem_ctx,
 > 				   struct srvsvc_NetSessInfo10,
 > 				   num_entries);
 >
 > 	W_ERROR_HAVE_NO_MEMORY(ctr10->array);
 >
 > 	for (num_entries = 0; resume_handle < *total_entries; num_entries++, 
resume_handle++) {
 > 		uint32_t connect_time;
 >
 > 		connect_time = (uint32_t)(now - 
session_list[resume_handle].connect_start);
 >
 > 		ctr10->array[num_entries].client		= 
session_list[resume_handle].remote_machine;
 > 		ctr10->array[num_entries].user		= session_list[resume_handle].username;
 > 		ctr10->array[num_entries].time		= connect_time;
 > 		ctr10->array[num_entries].idle_time	= 0;
 > 	}
 >
 > 	if (resume_handle_p) {
 > 		if (*resume_handle_p >= *total_entries) {
 > 			*resume_handle_p = 0;
 > 		} else {
 > 			*resume_handle_p = resume_handle;
 > 		}
 > 	}
 >
 > 	return WERR_OK;
 > }
 >
 > /*******************************************************************
1481a1549,1555
 > 						    r->in.resume_handle,
 > 						    r->out.totalentries);
 > 			break;
 >
 > 		case 10:
 > 			werr = init_srv_sess_info_10(p,
 > 						    r->in.info_ctr->ctr.ctr10,



More information about the samba mailing list