From d7cecb7bd3cfcab48af07366e24b65b2bb8b09bb Mon Sep 17 00:00:00 2001 From: Luke Leighton Date: Tue, 28 Apr 1998 09:53:42 +0000 Subject: added NetShareEnum from Bartlomej Czardybon (This used to be commit 37cbc356741055d0660b80594117fa312d252b85) --- source3/libsmb/clientgen.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) (limited to 'source3/libsmb/clientgen.c') diff --git a/source3/libsmb/clientgen.c b/source3/libsmb/clientgen.c index f23c846cf9..3f8c6e32cc 100644 --- a/source3/libsmb/clientgen.c +++ b/source3/libsmb/clientgen.c @@ -427,6 +427,65 @@ BOOL cli_NetWkstaUserLogon(struct cli_state *cli,char *user, char *workstation) return (cli->rap_error == 0); } +/**************************************************************************** +call a NetShareEnum - try and browse available connections on a host +****************************************************************************/ +BOOL cli_RNetShareEnum(struct cli_state *cli, void (*fn)(char *, uint32, char *)) +{ + char *rparam = NULL; + char *rdata = NULL; + char *p; + int rdrcnt,rprcnt; + pstring param; + int count = -1; + + /* now send a SMBtrans command with api RNetShareEnum */ + p = param; + SSVAL(p,0,0); /* api number */ + p += 2; + strcpy(p,"WrLeh"); + p = skip_string(p,1); + strcpy(p,"B13BWz"); + p = skip_string(p,1); + SSVAL(p,0,1); + SSVAL(p,2,BUFFER_SIZE); + p += 4; + + if (cli_api(cli, + PTR_DIFF(p,param), + 0, /* data count */ + 1024, /* mprcount */ + BUFFER_SIZE, /* mdrcount */ + &rprcnt, &rdrcnt, + param,NULL, + &rparam,&rdata)) + { + int res = SVAL(rparam,0); + int converter=SVAL(rparam,2); + int i; + BOOL long_share_name=False; + + if (res == 0) + { + count=SVAL(rparam,4); + p = rdata; + + for (i=0;i0); +} /**************************************************************************** call a NetServerEnum for the specified workgroup and servertype mask. -- cgit