2004-07-12 16:35:48 +00:00
/*
Unix SMB / CIFS implementation .
RAP handlers
Copyright ( C ) Volker Lendecke 2004
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
2007-07-10 02:07:03 +00:00
the Free Software Foundation ; either version 3 of the License , or
2004-07-12 16:35:48 +00:00
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
2007-07-10 02:07:03 +00:00
along with this program . If not , see < http : //www.gnu.org/licenses/>.
2004-07-12 16:35:48 +00:00
*/
# include "includes.h"
2006-07-23 18:43:07 +00:00
# include "param/share.h"
2006-02-23 11:29:01 +00:00
# include "libcli/rap/rap.h"
2006-03-16 00:23:11 +00:00
# include "librpc/gen_ndr/srvsvc.h"
2006-03-07 11:07:23 +00:00
# include "rpc_server/common/common.h"
2004-07-12 16:35:48 +00:00
/* At this moment these are just dummy functions, but you might get the
* idea . */
2006-03-10 14:31:17 +00:00
NTSTATUS rap_netshareenum ( TALLOC_CTX * mem_ctx ,
2004-07-12 16:35:48 +00:00
struct rap_NetShareEnum * r )
{
2006-07-23 18:43:07 +00:00
NTSTATUS nterr ;
const char * * snames ;
struct share_context * sctx ;
struct share_config * scfg ;
int i , j , count ;
2004-07-12 16:35:48 +00:00
r - > out . status = 0 ;
2006-07-23 18:43:07 +00:00
r - > out . available = 0 ;
r - > out . info = NULL ;
nterr = share_get_context ( mem_ctx , & sctx ) ;
if ( ! NT_STATUS_IS_OK ( nterr ) ) {
return nterr ;
}
nterr = share_list_all ( mem_ctx , sctx , & count , & snames ) ;
if ( ! NT_STATUS_IS_OK ( nterr ) ) {
return nterr ;
}
r - > out . available = count ;
2006-03-10 14:31:17 +00:00
r - > out . info = talloc_array ( mem_ctx ,
union rap_shareenum_info , r - > out . available ) ;
2004-07-12 16:35:48 +00:00
2006-07-23 18:43:07 +00:00
for ( i = 0 , j = 0 ; i < r - > out . available ; i + + ) {
if ( ! NT_STATUS_IS_OK ( share_get_config ( mem_ctx , sctx , snames [ i ] , & scfg ) ) ) {
DEBUG ( 3 , ( " WARNING: Service [%s] disappeared after enumeration! \n " , snames [ i ] ) ) ;
continue ;
}
strncpy ( r - > out . info [ j ] . info1 . name ,
snames [ i ] ,
2004-12-19 03:31:57 +00:00
sizeof ( r - > out . info [ 0 ] . info1 . name ) ) ;
r - > out . info [ i ] . info1 . pad = 0 ;
2006-07-23 18:43:07 +00:00
r - > out . info [ i ] . info1 . type = dcesrv_common_get_share_type ( mem_ctx , NULL , scfg ) ;
r - > out . info [ i ] . info1 . comment = talloc_strdup ( mem_ctx , share_string_option ( scfg , SHARE_COMMENT , " " ) ) ;
talloc_free ( scfg ) ;
j + + ;
2004-12-19 03:31:57 +00:00
}
2006-07-23 18:43:07 +00:00
r - > out . available = j ;
2004-07-12 16:35:48 +00:00
return NT_STATUS_OK ;
}
2006-03-10 14:31:17 +00:00
NTSTATUS rap_netserverenum2 ( TALLOC_CTX * mem_ctx ,
struct rap_NetServerEnum2 * r )
2004-07-12 16:35:48 +00:00
{
r - > out . status = 0 ;
r - > out . available = 0 ;
return NT_STATUS_OK ;
}