[SCM] Samba Shared Repository - branch v3-devel updated - release-3-2-0pre2-3987-gb56ec0b

Günther Deschner gd at samba.org
Fri Sep 5 10:36:38 GMT 2008


The branch, v3-devel has been updated
       via  b56ec0b9952dbad9f552c4be30eaae36faa9131c (commit)
       via  d7b07b636947cb52aa5474e86c4a3b6aa391a36f (commit)
       via  47bed6f112dbcc509ce6ac593c9920d98b658f9a (commit)
       via  0962128a54980b4b699ef8f80583ed2e7e12fbb0 (commit)
       via  3ac8f83fcd9f92fe944de8c094d6aa6bda9074dc (commit)
       via  5b6e4740ea8b8fdfcbd766099a7c5044abbfddde (commit)
       via  3469b8c79782d2b6f55dff306e67b603ecdb790a (commit)
       via  f9c3ae1ab8c76b4cfec7677e448f192e47152eeb (commit)
      from  0c232742561a4001909ccce2c5160d57d09edb40 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-devel


- Log -----------------------------------------------------------------
commit b56ec0b9952dbad9f552c4be30eaae36faa9131c
Author: Günther Deschner <gd at samba.org>
Date:   Thu Sep 4 15:46:21 2008 +0200

    net: use netapi for rpc_sh_share_delete as well.
    
    Guenther

commit d7b07b636947cb52aa5474e86c4a3b6aa391a36f
Author: Günther Deschner <gd at samba.org>
Date:   Thu Sep 4 15:44:50 2008 +0200

    net: use netapi for deleting shares.
    
    Guenther

commit 47bed6f112dbcc509ce6ac593c9920d98b658f9a
Author: Günther Deschner <gd at samba.org>
Date:   Fri Aug 29 18:49:35 2008 +0200

    netapi: implement NetShareDel_r.
    
    Guenther

commit 0962128a54980b4b699ef8f80583ed2e7e12fbb0
Author: Günther Deschner <gd at samba.org>
Date:   Fri Aug 29 18:38:01 2008 +0200

    netapi: add NetShareDel example code.
    
    Guenther

commit 3ac8f83fcd9f92fe944de8c094d6aa6bda9074dc
Author: Günther Deschner <gd at samba.org>
Date:   Fri Aug 29 18:35:48 2008 +0200

    netapi: add NetShareDel to public header.
    
    Guenther

commit 5b6e4740ea8b8fdfcbd766099a7c5044abbfddde
Author: Günther Deschner <gd at samba.org>
Date:   Fri Aug 29 18:34:28 2008 +0200

    netapi: add NetShareDel skeleton.
    
    Guenther

commit 3469b8c79782d2b6f55dff306e67b603ecdb790a
Author: Günther Deschner <gd at samba.org>
Date:   Fri Aug 29 18:32:41 2008 +0200

    re-run make idl.
    
    Guenther

commit f9c3ae1ab8c76b4cfec7677e448f192e47152eeb
Author: Günther Deschner <gd at samba.org>
Date:   Fri Aug 29 18:32:25 2008 +0200

    netapi: add NetShareDel to IDL.
    
    Guenther

-----------------------------------------------------------------------

Summary of changes:
 source/lib/netapi/examples/Makefile.in             |    8 +++-
 .../{group/group_del.c => share/share_del.c}       |   19 ++++---
 source/lib/netapi/libnetapi.c                      |   44 +++++++++++++++++
 source/lib/netapi/libnetapi.h                      |    7 +++
 source/lib/netapi/netapi.h                         |   18 +++++++
 source/lib/netapi/share.c                          |   50 ++++++++++++++++++++
 source/librpc/gen_ndr/libnetapi.h                  |   14 ++++++
 source/librpc/gen_ndr/ndr_libnetapi.c              |   24 +++++++++
 source/librpc/gen_ndr/ndr_libnetapi.h              |    7 ++-
 source/librpc/idl/libnetapi.idl                    |   10 ++++
 source/utils/net_rpc.c                             |   49 +------------------
 11 files changed, 194 insertions(+), 56 deletions(-)
 copy source/lib/netapi/examples/{group/group_del.c => share/share_del.c} (82%)


Changeset truncated at 500 lines:

diff --git a/source/lib/netapi/examples/Makefile.in b/source/lib/netapi/examples/Makefile.in
index d48457a..74cbf32 100644
--- a/source/lib/netapi/examples/Makefile.in
+++ b/source/lib/netapi/examples/Makefile.in
@@ -50,7 +50,8 @@ PROGS = bin/getdc at EXEEXT@ \
 	bin/localgroup_setmembers at EXEEXT@ \
 	bin/localgroup_getmembers at EXEEXT@ \
 	bin/remote_tod at EXEEXT@ \
-	bin/share_add at EXEEXT@
+	bin/share_add at EXEEXT@ \
+	bin/share_del at EXEEXT@
 
 all: $(PROGS)
 
@@ -113,6 +114,7 @@ LOCALGROUPSETMEMBERS_OBJ = localgroup/localgroup_setmembers.o $(CMDLINE_OBJ)
 LOCALGROUPGETMEMBERS_OBJ = localgroup/localgroup_getmembers.o $(CMDLINE_OBJ)
 REMOTETOD_OBJ = server/remote_tod.o $(CMDLINE_OBJ)
 SHAREADD_OBJ = share/share_add.o $(CMDLINE_OBJ)
+SHAREDEL_OBJ = share/share_del.o $(CMDLINE_OBJ)
 
 bin/getdc at EXEEXT@: $(BINARY_PREREQS) $(GETDC_OBJ)
 	@echo Linking $@
@@ -250,6 +252,10 @@ bin/share_add at EXEEXT@: $(BINARY_PREREQS) $(SHAREADD_OBJ)
 	@echo Linking $@
 	@$(CC) $(FLAGS) -o $@ $(SHAREADD_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
 
+bin/share_del at EXEEXT@: $(BINARY_PREREQS) $(SHAREDEL_OBJ)
+	@echo Linking $@
+	@$(CC) $(FLAGS) -o $@ $(SHAREDEL_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
+
 clean:
 	-rm -f $(PROGS)
 	-rm -f core */*~ *~ \
diff --git a/source/lib/netapi/examples/group/group_del.c b/source/lib/netapi/examples/share/share_del.c
similarity index 82%
copy from source/lib/netapi/examples/group/group_del.c
copy to source/lib/netapi/examples/share/share_del.c
index 789e429..20e3ce5 100644
--- a/source/lib/netapi/examples/group/group_del.c
+++ b/source/lib/netapi/examples/share/share_del.c
@@ -1,6 +1,6 @@
 /*
  *  Unix SMB/CIFS implementation.
- *  NetGroupDel query
+ *  NetShareDel query
  *  Copyright (C) Guenther Deschner 2008
  *
  *  This program is free software; you can redistribute it and/or modify
@@ -32,7 +32,7 @@ int main(int argc, const char **argv)
 	NET_API_STATUS status;
 	struct libnetapi_ctx *ctx = NULL;
 	const char *hostname = NULL;
-	const char *groupname = NULL;
+	const char *sharename = NULL;
 
 	poptContext pc;
 	int opt;
@@ -48,9 +48,9 @@ int main(int argc, const char **argv)
 		return status;
 	}
 
-	pc = poptGetContext("group_del", argc, argv, long_options, 0);
+	pc = poptGetContext("share_del", argc, argv, long_options, 0);
 
-	poptSetOtherOptionHelp(pc, "hostname groupname");
+	poptSetOtherOptionHelp(pc, "hostname sharename");
 	while((opt = poptGetNextOpt(pc)) != -1) {
 	}
 
@@ -64,14 +64,17 @@ int main(int argc, const char **argv)
 		poptPrintHelp(pc, stderr, 0);
 		goto out;
 	}
-	groupname = poptGetArg(pc);
+	sharename = poptGetArg(pc);
 
-	/* NetGroupDel */
+	/* NetShareDel */
 
-	status = NetGroupDel(hostname, groupname);
+	status = NetShareDel(hostname,
+			     sharename,
+			     0);
 	if (status != 0) {
-		printf("NetGroupDel failed with: %s\n",
+		printf("NetShareDel failed with: %s\n",
 			libnetapi_get_error_string(ctx, status));
+		goto out;
 	}
 
  out:
diff --git a/source/lib/netapi/libnetapi.c b/source/lib/netapi/libnetapi.c
index b4f2bb6..5ff7db0 100644
--- a/source/lib/netapi/libnetapi.c
+++ b/source/lib/netapi/libnetapi.c
@@ -1819,3 +1819,47 @@ NET_API_STATUS NetShareAdd(const char * server_name /* [in] */,
 	return r.out.result;
 }
 
+/****************************************************************
+ NetShareDel
+****************************************************************/
+
+NET_API_STATUS NetShareDel(const char * server_name /* [in] */,
+			   const char * net_name /* [in] */,
+			   uint32_t reserved /* [in] */)
+{
+	struct NetShareDel r;
+	struct libnetapi_ctx *ctx = NULL;
+	NET_API_STATUS status;
+	WERROR werr;
+
+	status = libnetapi_getctx(&ctx);
+	if (status != 0) {
+		return status;
+	}
+
+	/* In parameters */
+	r.in.server_name = server_name;
+	r.in.net_name = net_name;
+	r.in.reserved = reserved;
+
+	/* Out parameters */
+
+	if (DEBUGLEVEL >= 10) {
+		NDR_PRINT_IN_DEBUG(NetShareDel, &r);
+	}
+
+	if (LIBNETAPI_LOCAL_SERVER(server_name)) {
+		werr = NetShareDel_l(ctx, &r);
+	} else {
+		werr = NetShareDel_r(ctx, &r);
+	}
+
+	r.out.result = W_ERROR_V(werr);
+
+	if (DEBUGLEVEL >= 10) {
+		NDR_PRINT_OUT_DEBUG(NetShareDel, &r);
+	}
+
+	return r.out.result;
+}
+
diff --git a/source/lib/netapi/libnetapi.h b/source/lib/netapi/libnetapi.h
index 9a75b39..b20f465 100644
--- a/source/lib/netapi/libnetapi.h
+++ b/source/lib/netapi/libnetapi.h
@@ -325,4 +325,11 @@ WERROR NetShareAdd_r(struct libnetapi_ctx *ctx,
 		     struct NetShareAdd *r);
 WERROR NetShareAdd_l(struct libnetapi_ctx *ctx,
 		     struct NetShareAdd *r);
+NET_API_STATUS NetShareDel(const char * server_name /* [in] */,
+			   const char * net_name /* [in] */,
+			   uint32_t reserved /* [in] */);
+WERROR NetShareDel_r(struct libnetapi_ctx *ctx,
+		     struct NetShareDel *r);
+WERROR NetShareDel_l(struct libnetapi_ctx *ctx,
+		     struct NetShareDel *r);
 #endif /* __LIBNETAPI_LIBNETAPI__ */
diff --git a/source/lib/netapi/netapi.h b/source/lib/netapi/netapi.h
index 05c702c..8966537 100644
--- a/source/lib/netapi/netapi.h
+++ b/source/lib/netapi/netapi.h
@@ -1501,6 +1501,24 @@ NET_API_STATUS NetShareAdd(const char * server_name /* [in] */,
 			   uint8_t *buffer /* [in] [ref] */,
 			   uint32_t *parm_err /* [out] [ref] */);
 
+/************************************************************//**
+ *
+ * NetShareDel
+ *
+ * @brief Delete Share
+ *
+ * @param[in] server_name The server name to connect to
+ * @param[in] net_name The name of the share to delete
+ * @param[in] reserved
+ * @return NET_API_STATUS
+ *
+ * example share/share_del.c
+ ***************************************************************/
+
+NET_API_STATUS NetShareDel(const char * server_name /* [in] */,
+			   const char * net_name /* [in] */,
+			   uint32_t reserved /* [in] */);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
diff --git a/source/lib/netapi/share.c b/source/lib/netapi/share.c
index 9983471..2c79604 100644
--- a/source/lib/netapi/share.c
+++ b/source/lib/netapi/share.c
@@ -134,3 +134,53 @@ WERROR NetShareAdd_l(struct libnetapi_ctx *ctx,
 {
 	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetShareAdd);
 }
+
+/****************************************************************
+****************************************************************/
+
+WERROR NetShareDel_r(struct libnetapi_ctx *ctx,
+		     struct NetShareDel *r)
+{
+	WERROR werr;
+	NTSTATUS status;
+	struct cli_state *cli = NULL;
+	struct rpc_pipe_client *pipe_cli = NULL;
+
+	if (!r->in.net_name) {
+		return WERR_INVALID_PARAM;
+	}
+
+	werr = libnetapi_open_pipe(ctx, r->in.server_name,
+				   &ndr_table_srvsvc.syntax_id,
+				   &cli,
+				   &pipe_cli);
+	if (!W_ERROR_IS_OK(werr)) {
+		goto done;
+	}
+
+	status = rpccli_srvsvc_NetShareDel(pipe_cli, ctx,
+					   r->in.server_name,
+					   r->in.net_name,
+					   r->in.reserved,
+					   &werr);
+	if (!W_ERROR_IS_OK(werr)) {
+		goto done;
+	}
+
+ done:
+	if (!cli) {
+		return werr;
+	}
+
+	return werr;
+}
+
+/****************************************************************
+****************************************************************/
+
+WERROR NetShareDel_l(struct libnetapi_ctx *ctx,
+		     struct NetShareDel *r)
+{
+	LIBNETAPI_REDIRECT_TO_LOCALHOST(ctx, r, NetShareDel);
+}
+
diff --git a/source/librpc/gen_ndr/libnetapi.h b/source/librpc/gen_ndr/libnetapi.h
index 33ca253..0a22926 100644
--- a/source/librpc/gen_ndr/libnetapi.h
+++ b/source/librpc/gen_ndr/libnetapi.h
@@ -1168,4 +1168,18 @@ struct NetShareAdd {
 
 };
 
+
+struct NetShareDel {
+	struct {
+		const char * server_name;
+		const char * net_name;
+		uint32_t reserved;
+	} in;
+
+	struct {
+		enum NET_API_STATUS result;
+	} out;
+
+};
+
 #endif /* _HEADER_libnetapi */
diff --git a/source/librpc/gen_ndr/ndr_libnetapi.c b/source/librpc/gen_ndr/ndr_libnetapi.c
index 4f2579f..1d33a2e 100644
--- a/source/librpc/gen_ndr/ndr_libnetapi.c
+++ b/source/librpc/gen_ndr/ndr_libnetapi.c
@@ -3428,3 +3428,27 @@ _PUBLIC_ void ndr_print_NetShareAdd(struct ndr_print *ndr, const char *name, int
 	ndr->depth--;
 }
 
+_PUBLIC_ void ndr_print_NetShareDel(struct ndr_print *ndr, const char *name, int flags, const struct NetShareDel *r)
+{
+	ndr_print_struct(ndr, name, "NetShareDel");
+	ndr->depth++;
+	if (flags & NDR_SET_VALUES) {
+		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
+	}
+	if (flags & NDR_IN) {
+		ndr_print_struct(ndr, "in", "NetShareDel");
+		ndr->depth++;
+		ndr_print_string(ndr, "server_name", r->in.server_name);
+		ndr_print_string(ndr, "net_name", r->in.net_name);
+		ndr_print_uint32(ndr, "reserved", r->in.reserved);
+		ndr->depth--;
+	}
+	if (flags & NDR_OUT) {
+		ndr_print_struct(ndr, "out", "NetShareDel");
+		ndr->depth++;
+		ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
+		ndr->depth--;
+	}
+	ndr->depth--;
+}
+
diff --git a/source/librpc/gen_ndr/ndr_libnetapi.h b/source/librpc/gen_ndr/ndr_libnetapi.h
index 8324ac3..dafd1c3 100644
--- a/source/librpc/gen_ndr/ndr_libnetapi.h
+++ b/source/librpc/gen_ndr/ndr_libnetapi.h
@@ -82,7 +82,9 @@
 
 #define NDR_NETSHAREADD (0x25)
 
-#define NDR_LIBNETAPI_CALL_COUNT (38)
+#define NDR_NETSHAREDEL (0x26)
+
+#define NDR_LIBNETAPI_CALL_COUNT (39)
 enum ndr_err_code ndr_push_NET_API_STATUS(struct ndr_push *ndr, int ndr_flags, enum NET_API_STATUS r);
 enum ndr_err_code ndr_pull_NET_API_STATUS(struct ndr_pull *ndr, int ndr_flags, enum NET_API_STATUS *r);
 void ndr_print_NET_API_STATUS(struct ndr_print *ndr, const char *name, enum NET_API_STATUS r);
@@ -323,4 +325,7 @@ void ndr_print_NetRemoteTOD(struct ndr_print *ndr, const char *name, int flags,
 enum ndr_err_code ndr_push_NetShareAdd(struct ndr_push *ndr, int flags, const struct NetShareAdd *r);
 enum ndr_err_code ndr_pull_NetShareAdd(struct ndr_pull *ndr, int flags, struct NetShareAdd *r);
 void ndr_print_NetShareAdd(struct ndr_print *ndr, const char *name, int flags, const struct NetShareAdd *r);
+enum ndr_err_code ndr_push_NetShareDel(struct ndr_push *ndr, int flags, const struct NetShareDel *r);
+enum ndr_err_code ndr_pull_NetShareDel(struct ndr_pull *ndr, int flags, struct NetShareDel *r);
+void ndr_print_NetShareDel(struct ndr_print *ndr, const char *name, int flags, const struct NetShareDel *r);
 #endif /* _HEADER_NDR_libnetapi */
diff --git a/source/librpc/idl/libnetapi.idl b/source/librpc/idl/libnetapi.idl
index 0b91876..9ea1cc5 100644
--- a/source/librpc/idl/libnetapi.idl
+++ b/source/librpc/idl/libnetapi.idl
@@ -1001,4 +1001,14 @@ interface libnetapi
 		[in] uint8 *buffer,
 		[out] uint32 *parm_err
 		);
+
+	/*******************************************/
+	/* NetShareDel                             */
+	/*******************************************/
+
+	[nopush,nopull] NET_API_STATUS NetShareDel(
+		[in] string server_name,
+		[in] string net_name,
+		[in] uint32 reserved
+		);
 }
diff --git a/source/utils/net_rpc.c b/source/utils/net_rpc.c
index 18abc80..9047290 100644
--- a/source/utils/net_rpc.c
+++ b/source/utils/net_rpc.c
@@ -2846,39 +2846,6 @@ static int rpc_share_add(struct net_context *c, int argc, const char **argv)
 /**
  * Delete a share on a remote RPC server.
  *
- * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passed through.
- *
- * @param domain_sid The domain sid acquired from the remote server.
- * @param cli A cli_state connected to the server.
- * @param mem_ctx Talloc context, destroyed on completion of the function.
- * @param argc  Standard main() style argc.
- * @param argv  Standard main() style argv. Initial components are already
- *              stripped.
- *
- * @return Normal NTSTATUS return.
- **/
-static NTSTATUS rpc_share_del_internals(struct net_context *c,
-					const DOM_SID *domain_sid,
-					const char *domain_name,
-					struct cli_state *cli,
-					struct rpc_pipe_client *pipe_hnd,
-					TALLOC_CTX *mem_ctx,
-					int argc,
-					const char **argv)
-{
-	WERROR result;
-
-	return rpccli_srvsvc_NetShareDel(pipe_hnd, mem_ctx,
-					 pipe_hnd->desthost,
-					 argv[0],
-					 0,
-					 &result);
-}
-
-/**
- * Delete a share on a remote RPC server.
- *
  * @param domain_sid The domain sid acquired from the remote server.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
@@ -2891,9 +2858,8 @@ static int rpc_share_delete(struct net_context *c, int argc, const char **argv)
 	if (argc < 1 || c->display_usage) {
 		return rpc_share_usage(c, argc, argv);
 	}
-	return run_rpc_command(c, NULL, &ndr_table_srvsvc.syntax_id, 0,
-			       rpc_share_del_internals,
-			       argc, argv);
+
+	return NetShareDel(c->opt_host, argv[0], 0);
 }
 
 /**
@@ -4709,21 +4675,12 @@ static NTSTATUS rpc_sh_share_delete(struct net_context *c,
 				    struct rpc_pipe_client *pipe_hnd,
 				    int argc, const char **argv)
 {
-	WERROR result;
-	NTSTATUS status;
-
 	if (argc != 1) {
 		d_fprintf(stderr, "usage: %s <share>\n", ctx->whoami);
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 
-	status = rpccli_srvsvc_NetShareDel(pipe_hnd, mem_ctx,
-					   pipe_hnd->desthost,
-					   argv[0],
-					   0,
-					   &result);
-
-	return status;
+	return werror_to_ntstatus(W_ERROR(NetShareDel(pipe_hnd->desthost, argv[0], 0)));
 }
 
 static NTSTATUS rpc_sh_share_info(struct net_context *c,


-- 
Samba Shared Repository


More information about the samba-cvs mailing list