#include <sys/errno.h>
#include <stdio.h>
#include <time.h>
#include <strings.h>
#include <time.h>
#include <libmlrpc/libmlrpc.h>
#include "srvsvc1_clnt.h"
static ndr_service_t srvsvc_service = {
"SRVSVC",
"Server services",
"\\srvsvc",
"\\PIPE\\ntsvcs",
"4b324fc8-1670-01d3-1278-5a47bf6ee188", 3,
NDR_TRANSFER_SYNTAX_UUID, 2,
0,
0,
0,
0,
&TYPEINFO(srvsvc_interface),
NULL
};
void
srvsvc1_initialize(void)
{
static int init_done;
if (init_done)
return;
init_done = 1;
(void) ndr_svc_register(&srvsvc_service);
}
int
srvsvc_net_server_getinfo(mlrpc_handle_t *handle, char *server,
int level, union mslm_NetServerGetInfo_ru *resp)
{
struct mslm_NetServerGetInfo arg;
int len, opnum, rc;
opnum = SRVSVC_OPNUM_NetServerGetInfo;
bzero(&arg, sizeof (arg));
len = strlen(server) + 4;
arg.servername = ndr_rpc_malloc(handle, len);
if (arg.servername == NULL)
return (ENOMEM);
(void) snprintf((char *)arg.servername, len, "\\\\%s", server);
arg.level = level;
rc = ndr_rpc_call(handle, opnum, &arg);
if ((rc != 0) || (arg.status != 0))
return (EIO);
*resp = arg.result.ru;
return (0);
}
int
srvsvc_net_share_enum(mlrpc_handle_t *handle, char *server,
int level, union mslm_NetShareEnum_ru *resp)
{
struct mslm_NetShareInfo_0_result nres;
struct mslm_NetShareEnum arg;
int len, opnum, rc;
opnum = SRVSVC_OPNUM_NetShareEnum;
bzero(&nres, sizeof (nres));
bzero(&arg, sizeof (arg));
len = strlen(server) + 4;
arg.servername = ndr_rpc_malloc(handle, len);
if (arg.servername == NULL)
return (ENOMEM);
(void) snprintf((char *)arg.servername, len, "\\\\%s", server);
arg.level = level;
arg.result.level = level;
arg.result.ru.bufptr0 = &nres;
arg.prefmaxlen = 0xFFFFFFFF;
arg.resume_handle = NULL;
rc = ndr_rpc_call(handle, opnum, &arg);
if ((rc != 0) || (arg.status != 0))
return (EIO);
*resp = arg.result.ru;
return (0);
}