return False;
}
-struct cli_state *net_make_ipc_connection( unsigned flags )
+NTSTATUS net_make_ipc_connection(unsigned flags, struct cli_state **pcli)
{
- return net_make_ipc_connection_ex( NULL, NULL, NULL, flags );
+ return net_make_ipc_connection_ex(NULL, NULL, NULL, flags, pcli);
}
-struct cli_state *net_make_ipc_connection_ex( const char *domain, const char *server,
- struct in_addr *ip, unsigned flags)
+NTSTATUS net_make_ipc_connection_ex(const char *domain, const char *server,
+ struct in_addr *ip, unsigned flags,
+ struct cli_state **pcli)
{
char *server_name = NULL;
struct in_addr server_ip;
if ( !server || !ip ) {
if (!net_find_server(domain, flags, &server_ip, &server_name)) {
d_fprintf(stderr, "Unable to find a suitable server\n");
- return NULL;
+ nt_status = NT_STATUS_UNSUCCESSFUL;
+ goto done;
}
} else {
server_name = SMB_STRDUP( server );
saf_store( cli->server_domain, cli->desthost );
SAFE_FREE(server_name);
- if (NT_STATUS_IS_OK(nt_status)) {
- return cli;
- } else {
+ if (!NT_STATUS_IS_OK(nt_status)) {
d_fprintf(stderr, "Connection failed: %s\n",
nt_errstr(nt_status));
- return NULL;
+ cli = NULL;
}
+
+done:
+ if (pcli != NULL) {
+ *pcli = cli;
+ }
+ return nt_status;
}
static int net_user(int argc, const char **argv)
return net_rap_file_usage(argc, argv);
}
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
ret = cli_NetFileClose(cli, atoi(argv[0]));
if (argc == 0)
return net_rap_file_usage(argc, argv);
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
ret = cli_NetFileGetInfo(cli, atoi(argv[0]), one_file_fn);
struct cli_state *cli;
int ret;
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
/* list open files */
return net_rap_share_usage(argc, argv);
}
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
ret = cli_NetShareDelete(cli, argv[0]);
return net_rap_share_usage(argc, argv);
}
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
sharename = SMB_STRDUP(argv[0]);
struct cli_state *cli;
int ret;
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
if (opt_long_list_entries) {
struct cli_state *cli;
int ret;
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
if (argc == 0)
struct cli_state *cli;
int ret;
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
if (argc == 0)
struct cli_state *cli;
int ret;
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
d_printf("Computer User name "\
struct cli_state *cli;
char *name;
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
if (!cli_get_server_name(NULL, cli, &name)) {
}
}
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
d_printf("\nEnumerating servers in this domain or workgroup: \n\n"\
struct cli_state *cli;
int ret;
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
d_printf("\nEnumerating domains:\n\n"\
if (argc == 0)
return net_rap_printq_usage(argc, argv);
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
d_printf(PRINTQ_ENUM_DISPLAY, cli->desthost); /* list header */
if (argc == 0)
return net_rap_printq_usage(argc, argv);
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
ret = cli_printjob_del(cli, atoi(argv[0]));
};
if (argc == 0) {
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
d_printf(PRINTQ_ENUM_DISPLAY, cli->desthost); /* list header */
return net_rap_user_usage(argc, argv);
}
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
ret = cli_NetUserDelete(cli, argv[0]);
return net_rap_user_usage(argc, argv);
}
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
safe_strcpy(userinfo.user_name, argv[0], sizeof(userinfo.user_name)-1);
return net_rap_user_usage(argc, argv);
}
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
ret = cli_NetUserGetGroups(cli, argv[0], group_member_fn, NULL);
if (argc == 0) {
struct cli_state *cli;
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
goto done;
if (opt_long_list_entries) {
d_printf("\nUser name Comment"\
return net_rap_group_usage(argc, argv);
}
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
ret = cli_NetGroupDelete(cli, argv[0]);
return net_rap_group_usage(argc, argv);
}
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
/* BB check for length 21 or smaller explicitly ? BB */
if (argc == 0) {
struct cli_state *cli;
int ret;
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
if (opt_long_list_entries) {
d_printf("Group name Comment\n");
return net_rap_groupmember_usage(argc, argv);
}
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
ret = cli_NetGroupAddUser(cli, argv[0], argv[1]);
return net_rap_groupmember_usage(argc, argv);
}
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
ret = cli_NetGroupDelUser(cli, argv[0], argv[1]);
return net_rap_groupmember_usage(argc, argv);
}
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
ret = cli_NetGroupGetUsers(cli, argv[0], group_member_fn, NULL );
if (argc == 0) {
struct cli_state *cli;
int ret;
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
if (opt_long_list_entries) {
if (argc < 3)
return net_rap_password_usage(argc, argv);
- if (!(cli = net_make_ipc_connection(0)))
+ if (!NT_STATUS_IS_OK(net_make_ipc_connection(0, &cli)))
return -1;
/* BB Add check for password lengths? */
/* make use of cli_state handed over as an argument, if possible */
if (!cli_arg) {
- cli = net_make_ipc_connection(conn_flags);
+ nt_status = net_make_ipc_connection(conn_flags, &cli);
+ if (!NT_STATUS_IS_OK(nt_status)) {
+ DEBUG(1, ("failed to make ipc connection: %s\n",
+ nt_errstr(nt_status)));
+ return -1;
+ }
} else {
cli = cli_arg;
}
};
/* open \PIPE\lsarpc and open policy handle */
- if (!(cli = net_make_ipc_connection(NET_FLAGS_PDC))) {
- DEBUG(0, ("Couldn't connect to domain controller\n"));
+ nt_status = net_make_ipc_connection(NET_FLAGS_PDC, &cli);
+ if (!NT_STATUS_IS_OK(nt_status)) {
+ DEBUG(0, ("Couldn't connect to domain controller: %s\n",
+ nt_errstr(nt_status)));
talloc_destroy(mem_ctx);
return -1;
};
};
/* open \PIPE\lsarpc and open policy handle */
- if (!(cli = net_make_ipc_connection(NET_FLAGS_PDC))) {
- DEBUG(0, ("Couldn't connect to domain controller\n"));
+ nt_status = net_make_ipc_connection(NET_FLAGS_PDC, &cli);
+ if (!NT_STATUS_IS_OK(nt_status)) {
+ DEBUG(0, ("Couldn't connect to domain controller: %s\n",
+ nt_errstr(nt_status)));
talloc_destroy(mem_ctx);
return -1;
};
d_printf("%s%s", trusting_dom_names[i], padding);
/* connect to remote domain controller */
- remote_cli = net_make_ipc_connection(NET_FLAGS_PDC | NET_FLAGS_ANONYMOUS);
- if (remote_cli) {
+ nt_status = net_make_ipc_connection(
+ NET_FLAGS_PDC | NET_FLAGS_ANONYMOUS,
+ &remote_cli);
+ if (NT_STATUS_IS_OK(nt_status)) {
/* query for domain's sid */
if (run_rpc_command(remote_cli, PI_LSARPC, 0, rpc_query_domain_sid, argc, argv))
d_fprintf(stderr, "couldn't get domain's sid\n");
cli_shutdown(remote_cli);
} else {
- d_fprintf(stderr, "domain controller is not responding\n");
+ d_fprintf(stderr, "domain controller is not "
+ "responding: %s\n",
+ nt_errstr(nt_status));
};
};