mirror of
https://github.com/samba-team/samba.git
synced 2025-01-21 18:04:06 +03:00
r4075: implement RemoteTOD server function
metze (This used to be commit 0c6d4246a45f649e7373606f12db74c2acd0f538)
This commit is contained in:
parent
690b352fc1
commit
c62615f268
@ -82,7 +82,7 @@ static NTSTATUS libnet_RemoteTOD_srvsvc(struct libnet_context *ctx, TALLOC_CTX *
|
||||
tm.tm_isdst = -1;
|
||||
|
||||
r->srvsvc.out.time = timegm(&tm);
|
||||
r->srvsvc.out.time_zone = ((int32_t)tod.out.info->timezone) * 60;
|
||||
r->srvsvc.out.time_zone = tod.out.info->timezone * 60;
|
||||
|
||||
goto disconnect;
|
||||
|
||||
|
@ -1128,14 +1128,14 @@
|
||||
/* srvsvc_NetRemoteTOD */
|
||||
/**************************/
|
||||
typedef struct {
|
||||
uint32 elapsed;
|
||||
uint32 msecs;
|
||||
uint32 elapsed; /* time(NULL) */
|
||||
uint32 msecs; /* milliseconds till system reboot (uptime) */
|
||||
uint32 hours;
|
||||
uint32 mins;
|
||||
uint32 secs;
|
||||
uint32 hunds;
|
||||
uint32 timezone;
|
||||
uint32 tinterval;
|
||||
int32 timezone; /* in minutes */
|
||||
uint32 tinterval; /* clock tick interval in 0.0001 second units; 310 on windows */
|
||||
uint32 day;
|
||||
uint32 month;
|
||||
uint32 year;
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "rpc_server/dcerpc_server.h"
|
||||
#include "librpc/gen_ndr/ndr_srvsvc.h"
|
||||
#include "rpc_server/common/common.h"
|
||||
#include "system/time.h"
|
||||
|
||||
/*
|
||||
srvsvc_NetCharDevEnum
|
||||
@ -807,7 +808,36 @@ static WERROR srvsvc_NETRSERVERTRANSPORTDEL(struct dcesrv_call_state *dce_call,
|
||||
static WERROR srvsvc_NetRemoteTOD(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
|
||||
struct srvsvc_NetRemoteTOD *r)
|
||||
{
|
||||
DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
|
||||
struct timeval tval;
|
||||
time_t t;
|
||||
struct tm tm;
|
||||
|
||||
r->out.info = talloc_p(mem_ctx, struct srvsvc_NetRemoteTODInfo);
|
||||
WERR_TALLOC_CHECK(r->out.info);
|
||||
|
||||
GetTimeOfDay(&tval);
|
||||
t = tval.tv_sec;
|
||||
|
||||
gmtime_r(&t, &tm);
|
||||
|
||||
r->out.info->elapsed = t;
|
||||
/* fake the uptime: just return the milliseconds till 0:00:00 today */
|
||||
r->out.info->msecs = (tm.tm_hour*60*60*1000)
|
||||
+ (tm.tm_min*60*1000)
|
||||
+ (tm.tm_sec*1000)
|
||||
+ (tval.tv_usec/1000);
|
||||
r->out.info->hours = tm.tm_hour;
|
||||
r->out.info->mins = tm.tm_min;
|
||||
r->out.info->secs = tm.tm_sec;
|
||||
r->out.info->hunds = tval.tv_usec/10000;
|
||||
r->out.info->timezone = get_time_zone(t)/60;
|
||||
r->out.info->tinterval = 310; /* just return the same as windows */
|
||||
r->out.info->day = tm.tm_mday;
|
||||
r->out.info->month = tm.tm_mon + 1;
|
||||
r->out.info->year = tm.tm_year + 1900;
|
||||
r->out.info->weekday = tm.tm_wday;
|
||||
|
||||
return WERR_OK;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user