[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha8-43-ge4dec23

Günther Deschner gd at samba.org
Tue Jun 23 09:10:52 GMT 2009


The branch, master has been updated
       via  e4dec230e971a761d3ff9a31013f130d55e63fd0 (commit)
      from  451a73e3ddd93b3bad9775d6c57c3eeb73646e99 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit e4dec230e971a761d3ff9a31013f130d55e63fd0
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 8 19:18:13 2009 +0200

    s3-eventlog: implement _eventlog_ReportEventW().
    
    Guenther

-----------------------------------------------------------------------

Summary of changes:
 source3/rpc_server/srv_eventlog_nt.c |   83 +++++++++++++++++++++++++++++++---
 1 files changed, 77 insertions(+), 6 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/rpc_server/srv_eventlog_nt.c b/source3/rpc_server/srv_eventlog_nt.c
index 7143ad6..8e3922d 100644
--- a/source3/rpc_server/srv_eventlog_nt.c
+++ b/source3/rpc_server/srv_eventlog_nt.c
@@ -675,6 +675,83 @@ NTSTATUS _eventlog_FlushEventLog(pipes_struct *p,
 	return NT_STATUS_ACCESS_DENIED;
 }
 
+/********************************************************************
+ ********************************************************************/
+
+static NTSTATUS evlog_report_to_record(TALLOC_CTX *mem_ctx,
+				       const struct eventlog_ReportEventW *r,
+				       const char *logname,
+				       struct EVENTLOGRECORD *e)
+{
+	uint32_t i;
+	ZERO_STRUCTP(e);
+
+	e->TimeGenerated	= r->in.timestamp;
+	e->TimeWritten		= time(NULL);
+	e->EventID		= r->in.event_id;
+	e->EventType		= r->in.event_type;
+	e->NumStrings		= r->in.num_of_strings;
+	e->EventCategory	= r->in.event_category;
+	e->ReservedFlags	= r->in.flags;
+	e->DataLength		= r->in.data_size;
+	e->SourceName		= talloc_strdup(mem_ctx, logname);
+	NT_STATUS_HAVE_NO_MEMORY(e->SourceName);
+	if (r->in.servername->string) {
+		e->Computername	= r->in.servername->string;
+	} else {
+		e->Computername	= talloc_strdup(mem_ctx, "");
+		NT_STATUS_HAVE_NO_MEMORY(e->Computername);
+	}
+	if (r->in.user_sid) {
+		e->UserSid	= *r->in.user_sid;
+	}
+	e->Strings		= talloc_array(mem_ctx, const char *, e->NumStrings);
+	NT_STATUS_HAVE_NO_MEMORY(e->Strings);
+
+	for (i=0; i < e->NumStrings; i++) {
+		e->Strings[i] = talloc_strdup(e->Strings,
+					      r->in.strings[i]->string);
+		NT_STATUS_HAVE_NO_MEMORY(e->Strings[i]);
+	}
+	e->Data			= r->in.data;
+
+	return NT_STATUS_OK;
+}
+
+/********************************************************************
+_eventlog_ReportEventW
+ ********************************************************************/
+
+NTSTATUS _eventlog_ReportEventW(pipes_struct *p,
+				struct eventlog_ReportEventW *r)
+{
+	NTSTATUS status;
+	struct EVENTLOGRECORD record;
+
+	EVENTLOG_INFO *info = find_eventlog_info_by_hnd(p, r->in.handle);
+	if (!info) {
+		return NT_STATUS_INVALID_HANDLE;
+	}
+
+	status = evlog_report_to_record(p->mem_ctx, r, info->logname, &record);
+	if (!NT_STATUS_IS_OK(status)) {
+		return status;
+	}
+
+	status = evlog_push_record(p->mem_ctx,
+				   ELOG_TDB_CTX(info->etdb),
+				   &record,
+				   r->out.record_number);
+	if (!NT_STATUS_IS_OK(status)) {
+		return status;
+	}
+
+	return NT_STATUS_OK;
+}
+
+/********************************************************************
+ ********************************************************************/
+
 NTSTATUS _eventlog_DeregisterEventSource(pipes_struct *p, struct eventlog_DeregisterEventSource *r)
 {
 	p->rng_fault_state = True;
@@ -699,12 +776,6 @@ NTSTATUS _eventlog_OpenBackupEventLogW(pipes_struct *p, struct eventlog_OpenBack
 	return NT_STATUS_NOT_IMPLEMENTED;
 }
 
-NTSTATUS _eventlog_ReportEventW(pipes_struct *p, struct eventlog_ReportEventW *r)
-{
-	p->rng_fault_state = True;
-	return NT_STATUS_NOT_IMPLEMENTED;
-}
-
 NTSTATUS _eventlog_ClearEventLogA(pipes_struct *p, struct eventlog_ClearEventLogA *r)
 {
 	p->rng_fault_state = True;


-- 
Samba Shared Repository


More information about the samba-cvs mailing list