#include <sys/types.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <libmlrpc/libmlrpc.h>
#include <netsmb/smbfs_api.h>
#include "srvsvc1_clnt.h"
#include "common.h"
int
share_enum_rpc(struct smb_ctx *ctx, char *server)
{
mlrpc_handle_t handle;
ndr_service_t *svc;
union mslm_NetShareEnum_ru res;
struct mslm_NetShareInfo_1 *nsi1;
int err, i, count;
srvsvc1_initialize();
svc = ndr_svc_lookup_name("srvsvc");
if (svc == NULL)
return (ENOENT);
err = mlrpc_clh_create(&handle, ctx);
if (err)
return (err);
err = mlrpc_clh_bind(&handle, svc);
if (err)
goto out;
err = srvsvc_net_share_enum(&handle, server, 1, &res);
if (err)
goto out;
view_print_share(NULL, 0, NULL);
count = res.bufptr1->entriesread;
i = 0, nsi1 = res.bufptr1->entries;
while (i < count) {
view_print_share((char *)nsi1->shi1_netname,
nsi1->shi1_type, (char *)nsi1->shi1_comment);
i++, nsi1++;
}
out:
(void) mlrpc_clh_free(&handle);
return (err);
}