bool torture_delshare(struct torture_context *torture) { struct dcerpc_pipe *p; struct dcerpc_binding *binding; struct libnet_context* libnetctx; const char *host; NTSTATUS status; bool ret = true; struct libnet_DelShare share; host = torture_setting_string(torture, "host", NULL); status = torture_rpc_binding(torture, &binding); torture_assert_ntstatus_ok(torture, status, "Failed to get binding"); libnetctx = libnet_context_init(torture->ev, torture->lp_ctx); libnetctx->cred = popt_get_cmdline_credentials(); status = torture_rpc_connection(torture, &p, &ndr_table_srvsvc); torture_assert_ntstatus_ok(torture, status, "Failed to get rpc connection"); if (!test_addshare(torture, p->binding_handle, torture, host, TEST_SHARENAME)) { return false; } share.in.server_name = dcerpc_binding_get_string_option(binding, "host"); share.in.share_name = TEST_SHARENAME; status = libnet_DelShare(libnetctx, torture, &share); torture_assert_ntstatus_ok(torture, status, "Failed to delete share"); return ret; }
static bool test_NetShareDel(TALLOC_CTX *mem_ctx, struct torture_context *tctx, const char *host, const char *sharename) { NTSTATUS status; struct libnet_context* libnetctx; struct libnet_DelShare r; printf("Deleting share %s\n", sharename); if (!(libnetctx = libnet_context_init(tctx->ev, tctx->lp_ctx))) { return false; } libnetctx->cred = cmdline_credentials; r.in.share_name = sharename; r.in.server_name = host; status = libnet_DelShare(libnetctx, mem_ctx, &r); if (!NT_STATUS_IS_OK(status)) { d_printf("Failed to delete share: %s (%s)\n", nt_errstr(status), r.out.error_string); return false; } return true; }
BOOL torture_delshare(struct torture_context *torture) { struct dcerpc_pipe *p; struct dcerpc_binding *bind; struct libnet_context* libnetctx; const char *host, *binding; TALLOC_CTX *mem_ctx; NTSTATUS status; BOOL ret = True; struct libnet_DelShare share; mem_ctx = talloc_init("test_listshares"); host = torture_setting_string(torture, "host", NULL); binding = torture_setting_string(torture, "binding", NULL); status = dcerpc_parse_binding(mem_ctx, binding, &bind); if (!NT_STATUS_IS_OK(status)) { printf("Error while parsing the binding string\n"); ret = False; goto done; } libnetctx = libnet_context_init(NULL); libnetctx->cred = cmdline_credentials; status = torture_rpc_connection(mem_ctx, &p, &dcerpc_table_srvsvc); if (!test_addshare(p, mem_ctx, host, TEST_SHARENAME)) { ret = False; goto done; } share.in.server_name = bind->host; share.in.share_name = TEST_SHARENAME; status = libnet_DelShare(libnetctx, mem_ctx, &share); if (!NT_STATUS_IS_OK(status)) { ret = False; goto done; } done: talloc_free(mem_ctx); return ret; }