int run_rpc_command(struct net_context *c,
struct cli_state *cli_arg,
- const struct ndr_syntax_id *interface,
+ const char *interface,
+ uint32_t interface_version,
int conn_flags,
rpc_command_fn fn,
int argc,
{
struct cli_state *cli = NULL;
struct rpc_pipe_client *pipe_hnd = NULL;
+ struct ndr_syntax_id syntax;
TALLOC_CTX *mem_ctx;
NTSTATUS nt_status;
DOM_SID *domain_sid;
return -1;
}
+ if (!ndr_syntax_from_string(interface, interface_version, &syntax)) {
+ return -1;
+ }
+
/* Create mem_ctx */
if (!(mem_ctx = talloc_init("run_rpc_command"))) {
if (!(conn_flags & NET_FLAGS_NO_PIPE)) {
if (lp_client_schannel()
- && (ndr_syntax_id_equal(interface,
+ && (ndr_syntax_id_equal(&syntax,
&ndr_table_netlogon.syntax_id))) {
/* Always try and create an schannel netlogon pipe. */
nt_status = cli_rpc_pipe_open_schannel(
- cli, interface, NCACN_NP,
+ cli, &syntax, NCACN_NP,
DCERPC_AUTH_LEVEL_PRIVACY, domain_name,
&pipe_hnd);
if (!NT_STATUS_IS_OK(nt_status)) {
} else {
if (conn_flags & NET_FLAGS_SEAL) {
nt_status = cli_rpc_pipe_open_ntlmssp(
- cli, interface,
+ cli, &syntax,
(conn_flags & NET_FLAGS_TCP) ?
NCACN_IP_TCP : NCACN_NP,
DCERPC_AUTH_LEVEL_PRIVACY,
c->opt_password, &pipe_hnd);
} else {
nt_status = cli_rpc_pipe_open_noauth(
- cli, interface,
- &pipe_hnd);
+ cli, &syntax, &pipe_hnd);
}
if (!NT_STATUS_IS_OK(nt_status)) {
DEBUG(0, ("Could not initialise pipe %s. Error was %s\n",
get_pipe_name_from_syntax(
- talloc_tos(), interface),
+ talloc_tos(), &syntax),
nt_errstr(nt_status) ));
goto fail;
}
return 0;
}
- return run_rpc_command(c, NULL, &ndr_table_netlogon.syntax_id,
+ return run_rpc_command(c, NULL, NDR_NETLOGON_UUID,
+ NDR_NETLOGON_VERSION,
NET_FLAGS_ANONYMOUS | NET_FLAGS_PDC,
rpc_changetrustpw_internals,
argc, argv);
static int net_rpc_perform_oldjoin(struct net_context *c, int argc, const char **argv)
{
- return run_rpc_command(c, NULL, &ndr_table_netlogon.syntax_id,
+ return run_rpc_command(c, NULL,
+ NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION,
NET_FLAGS_NO_PIPE | NET_FLAGS_ANONYMOUS | NET_FLAGS_PDC,
rpc_oldjoin_internals,
argc, argv);
return 0;
}
- return run_rpc_command(c, NULL, &ndr_table_samr.syntax_id,
+ return run_rpc_command(c, NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION,
NET_FLAGS_PDC, rpc_info_internals,
argc, argv);
}
return 0;
}
- return run_rpc_command(c, NULL, &ndr_table_samr.syntax_id,
+ return run_rpc_command(c, NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION,
NET_FLAGS_ANONYMOUS | NET_FLAGS_PDC,
rpc_getsid_internals,
argc, argv);
{
static struct rpc_sh_cmd cmds[] = {
- { "fullname", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_str_edit,
+ { "fullname", NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, rpc_sh_user_str_edit,
N_("Show/Set a user's full name") },
- { "homedir", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_str_edit,
+ { "homedir", NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, rpc_sh_user_str_edit,
N_("Show/Set a user's home directory") },
- { "homedrive", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_str_edit,
+ { "homedrive", NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, rpc_sh_user_str_edit,
N_("Show/Set a user's home drive") },
- { "logonscript", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_str_edit,
+ { "logonscript", NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, rpc_sh_user_str_edit,
N_("Show/Set a user's logon script") },
- { "profilepath", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_str_edit,
+ { "profilepath", NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, rpc_sh_user_str_edit,
N_("Show/Set a user's profile path") },
- { "description", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_str_edit,
+ { "description", NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, rpc_sh_user_str_edit,
N_("Show/Set a user's description") },
- { "disabled", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_flag_edit,
+ { "disabled", NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, rpc_sh_user_flag_edit,
N_("Show/Set whether a user is disabled") },
- { "autolock", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_flag_edit,
+ { "autolock", NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, rpc_sh_user_flag_edit,
N_("Show/Set whether a user locked out") },
- { "pwnotreq", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_flag_edit,
+ { "pwnotreq", NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, rpc_sh_user_flag_edit,
N_("Show/Set whether a user does not need a password") },
- { "pwnoexp", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_flag_edit,
+ { "pwnoexp", NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION, rpc_sh_user_flag_edit,
N_("Show/Set whether a user's password does not expire") },
- { NULL, NULL, 0, NULL, NULL }
+ { NULL, NULL, 0, 0, NULL, NULL }
};
return cmds;
{
static struct rpc_sh_cmd cmds[] = {
- { "list", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_list,
- N_("List available users") },
+ { "list", NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION,
+ rpc_sh_user_list, N_("List available users") },
- { "info", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_info,
+ { "info", NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION,
+ rpc_sh_user_info,
N_("List the domain groups a user is member of") },
- { "show", NULL, &ndr_table_samr.syntax_id, rpc_sh_user_show,
+ { "show", NULL, NDR_SAMR_UUID, NDR_SAMR_VERSION,
+ rpc_sh_user_show,
N_("Show info about a user") },
- { "edit", net_rpc_user_edit_cmds, 0, NULL,
+ { "edit", net_rpc_user_edit_cmds, NULL, 0, NULL,
N_("Show/Modify a user's fields") },
- { NULL, NULL, 0, NULL, NULL }
+ { NULL, NULL, NULL, 0, NULL, NULL }
};
return cmds;
static int rpc_group_delete(struct net_context *c, int argc, const char **argv)
{
- return run_rpc_command(c, NULL, &ndr_table_samr.syntax_id, 0,
+ return run_rpc_command(c, NULL,
+ NDR_SAMR_UUID, NDR_SAMR_VERSION, 0,
rpc_group_delete_internals, argc,argv);
}
static int rpc_group_addmem(struct net_context *c, int argc, const char **argv)
{
- return run_rpc_command(c, NULL, &ndr_table_samr.syntax_id, 0,
+ return run_rpc_command(c, NULL,
+ NDR_SAMR_UUID, NDR_SAMR_VERSION, 0,
rpc_group_addmem_internals,
argc, argv);
}
static int rpc_group_delmem(struct net_context *c, int argc, const char **argv)
{
- return run_rpc_command(c, NULL, &ndr_table_samr.syntax_id, 0,
+ return run_rpc_command(c, NULL,
+ NDR_SAMR_UUID, NDR_SAMR_VERSION, 0,
rpc_group_delmem_internals,
argc, argv);
}
static int rpc_group_list(struct net_context *c, int argc, const char **argv)
{
- return run_rpc_command(c, NULL, &ndr_table_samr.syntax_id, 0,
+ return run_rpc_command(c, NULL,
+ NDR_SAMR_UUID, NDR_SAMR_VERSION, 0,
rpc_group_list_internals,
argc, argv);
}
return rpc_group_usage(c, argc, argv);
}
- return run_rpc_command(c, NULL, &ndr_table_samr.syntax_id, 0,
+ return run_rpc_command(c, NULL,
+ NDR_SAMR_UUID, NDR_SAMR_VERSION, 0,
rpc_group_members_internals,
argc, argv);
}
return 0;
}
- return run_rpc_command(c, NULL, &ndr_table_samr.syntax_id, 0,
+ return run_rpc_command(c, NULL,
+ NDR_SAMR_UUID, NDR_SAMR_VERSION, 0,
rpc_group_list_internals,
argc, argv);
}
return -1;
}
- return run_rpc_command(c, NULL, &ndr_table_srvsvc.syntax_id, 0,
+ return run_rpc_command(c, NULL,
+ NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION, 0,
rpc_share_migrate_shares_internals,
argc, argv);
}
return -1;
}
- return run_rpc_command(c, NULL, &ndr_table_srvsvc.syntax_id, 0,
+ return run_rpc_command(c, NULL,
+ NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION, 0,
rpc_share_migrate_files_internals,
argc, argv);
}
return -1;
}
- return run_rpc_command(c, NULL, &ndr_table_srvsvc.syntax_id, 0,
+ return run_rpc_command(c, NULL,
+ NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION, 0,
rpc_share_migrate_security_internals,
argc, argv);
}
/* order is important. we don't want to be locked out by the share-acl
* before copying files - gd */
- ret = run_rpc_command(c, NULL, &ndr_table_srvsvc.syntax_id, 0,
+ ret = run_rpc_command(c, NULL,
+ NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION, 0,
rpc_share_migrate_shares_internals, argc, argv);
if (ret)
return ret;
- ret = run_rpc_command(c, NULL, &ndr_table_srvsvc.syntax_id, 0,
+ ret = run_rpc_command(c, NULL,
+ NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION, 0,
rpc_share_migrate_files_internals, argc, argv);
if (ret)
return ret;
- return run_rpc_command(c, NULL, &ndr_table_srvsvc.syntax_id, 0,
+ return run_rpc_command(c, NULL,
+ NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION, 0,
rpc_share_migrate_security_internals, argc,
argv);
}
return 0;
}
- result = run_rpc_command(c, NULL, &ndr_table_samr.syntax_id, 0,
+ result = run_rpc_command(c, NULL,
+ NDR_SAMR_UUID, NDR_SAMR_VERSION, 0,
rpc_aliaslist_internals,
argc, argv);
if (result != 0)
return result;
- result = run_rpc_command(c, NULL, &ndr_table_lsarpc.syntax_id, 0,
+ result = run_rpc_command(c, NULL,
+ NDR_LSARPC_UUID, NDR_LSARPC_VERSION, 0,
rpc_aliaslist_dump,
argc, argv);
if (result != 0)
return result;
- return run_rpc_command(c, NULL, &ndr_table_srvsvc.syntax_id, 0,
+ return run_rpc_command(c, NULL,
+ NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION, 0,
rpc_share_allowedusers_internals,
argc, argv);
}
{
static struct rpc_sh_cmd cmds[] = {
- { "list", NULL, &ndr_table_srvsvc.syntax_id, rpc_sh_share_list,
- N_("List available shares") },
+ { "list", NULL, NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION,
+ rpc_sh_share_list,
+ N_("List available shares") },
- { "add", NULL, &ndr_table_srvsvc.syntax_id, rpc_sh_share_add,
- N_("Add a share") },
+ { "add", NULL, NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION,
+ rpc_sh_share_add,
+ N_("Add a share") },
- { "delete", NULL, &ndr_table_srvsvc.syntax_id, rpc_sh_share_delete,
- N_("Delete a share") },
+ { "delete", NULL, NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION,
+ rpc_sh_share_delete,
+ N_("Delete a share") },
- { "info", NULL, &ndr_table_srvsvc.syntax_id, rpc_sh_share_info,
- N_("Get information about a share") },
+ { "info", NULL, NDR_SRVSVC_UUID, NDR_SRVSVC_VERSION,
+ rpc_sh_share_info,
+ N_("Get information about a share") },
- { NULL, NULL, 0, NULL, NULL }
+ { NULL, NULL, 0, 0, NULL, NULL }
};
return cmds;
return 0;
}
- rc = run_rpc_command(c, NULL, &ndr_table_initshutdown.syntax_id, 0,
+ rc = run_rpc_command(c, NULL,
+ NDR_INITSHUTDOWN_UUID, NDR_INITSHUTDOWN_VERSION,
+ 0,
rpc_shutdown_abort_internals, argc, argv);
if (rc == 0)
DEBUG(1, ("initshutdown pipe didn't work, trying winreg pipe\n"));
- return run_rpc_command(c, NULL, &ndr_table_winreg.syntax_id, 0,
+ return run_rpc_command(c, NULL,
+ NDR_WINREG_UUID, NDR_WINREG_VERSION, 0,
rpc_reg_shutdown_abort_internals,
argc, argv);
}
return 0;
}
- rc = run_rpc_command(c, NULL, &ndr_table_initshutdown.syntax_id, 0,
- rpc_init_shutdown_internals, argc, argv);
+ rc = run_rpc_command(c, NULL,
+ NDR_INITSHUTDOWN_UUID, NDR_INITSHUTDOWN_VERSION,
+ 0, rpc_init_shutdown_internals, argc, argv);
if (rc) {
DEBUG(1, ("initshutdown pipe failed, trying winreg pipe\n"));
- rc = run_rpc_command(c, NULL, &ndr_table_winreg.syntax_id, 0,
+ rc = run_rpc_command(c, NULL,
+ NDR_WINREG_UUID, NDR_WINREG_VERSION, 0,
rpc_reg_shutdown_internals, argc, argv);
}
static int rpc_trustdom_add(struct net_context *c, int argc, const char **argv)
{
if (argc > 0 && !c->display_usage) {
- return run_rpc_command(c, NULL, &ndr_table_samr.syntax_id, 0,
+ return run_rpc_command(c, NULL,
+ NDR_SAMR_UUID, NDR_SAMR_VERSION, 0,
rpc_trustdom_add_internals, argc, argv);
} else {
d_printf(_("Usage:\n"
static int rpc_trustdom_del(struct net_context *c, int argc, const char **argv)
{
if (argc > 0 && !c->display_usage) {
- return run_rpc_command(c, NULL, &ndr_table_samr.syntax_id, 0,
+ return run_rpc_command(c, NULL,
+ NDR_SAMR_UUID, NDR_SAMR_VERSION, 0,
rpc_trustdom_del_internals, argc, argv);
} else {
d_printf(_("Usage:\n"
/* query for domain's sid */
if (run_rpc_command(
c, remote_cli,
- &ndr_table_lsarpc.syntax_id, 0,
+ NDR_LSARPC_UUID,
+ NDR_LSARPC_VERSION, 0,
rpc_query_domain_sid, argc,
argv))
d_printf(_("strange - couldn't get domain's sid\n"));
return 0;
}
- return run_rpc_command(c, NULL, &ndr_table_netlogon.syntax_id,
+ return run_rpc_command(c, NULL,
+ NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION,
NET_FLAGS_ANONYMOUS,
rpc_samdump_internals, argc, argv);
}
return 0;
}
- return run_rpc_command(c, NULL, &ndr_table_netlogon.syntax_id,
+ return run_rpc_command(c, NULL,
+ NDR_NETLOGON_UUID, NDR_NETLOGON_VERSION,
NET_FLAGS_ANONYMOUS,
rpc_vampire_internals,
argc, argv);
return -1;
}
- ret = run_rpc_command(c, NULL, &ndr_table_spoolss.syntax_id, 0,
+ ret = run_rpc_command(c, NULL,
+ NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, 0,
rpc_printer_migrate_printers_internals, argc,
argv);
if (ret)
return ret;
- ret = run_rpc_command(c, NULL, &ndr_table_spoolss.syntax_id, 0,
+ ret = run_rpc_command(c, NULL,
+ NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, 0,
rpc_printer_migrate_drivers_internals, argc,
argv);
if (ret)
return ret;
- ret = run_rpc_command(c, NULL, &ndr_table_spoolss.syntax_id, 0,
+ ret = run_rpc_command(c, NULL,
+ NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, 0,
rpc_printer_migrate_forms_internals, argc, argv);
if (ret)
return ret;
- ret = run_rpc_command(c, NULL, &ndr_table_spoolss.syntax_id, 0,
+ ret = run_rpc_command(c, NULL,
+ NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, 0,
rpc_printer_migrate_settings_internals, argc,
argv);
if (ret)
return ret;
- return run_rpc_command(c, NULL, &ndr_table_spoolss.syntax_id, 0,
+ return run_rpc_command(c, NULL,
+ NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, 0,
rpc_printer_migrate_security_internals, argc,
argv);
return -1;
}
- return run_rpc_command(c, NULL, &ndr_table_spoolss.syntax_id, 0,
+ return run_rpc_command(c, NULL,
+ NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, 0,
rpc_printer_migrate_drivers_internals,
argc, argv);
}
return -1;
}
- return run_rpc_command(c, NULL, &ndr_table_spoolss.syntax_id, 0,
+ return run_rpc_command(c, NULL,
+ NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, 0,
rpc_printer_migrate_forms_internals,
argc, argv);
}
return -1;
}
- return run_rpc_command(c, NULL, &ndr_table_spoolss.syntax_id, 0,
+ return run_rpc_command(c, NULL,
+ NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, 0,
rpc_printer_migrate_printers_internals,
argc, argv);
}
return -1;
}
- return run_rpc_command(c, NULL, &ndr_table_spoolss.syntax_id, 0,
+ return run_rpc_command(c, NULL,
+ NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, 0,
rpc_printer_migrate_security_internals,
argc, argv);
}
return -1;
}
- return run_rpc_command(c, NULL, &ndr_table_spoolss.syntax_id, 0,
+ return run_rpc_command(c, NULL,
+ NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, 0,
rpc_printer_migrate_settings_internals,
argc, argv);
}
return 0;
}
- return run_rpc_command(c, NULL, &ndr_table_spoolss.syntax_id, 0,
+ return run_rpc_command(c, NULL,
+ NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, 0,
rpc_printer_list_internals,
argc, argv);
}
return 0;
}
- return run_rpc_command(c, NULL, &ndr_table_spoolss.syntax_id, 0,
- rpc_printer_driver_list_internals,
+ return run_rpc_command(c, NULL, NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION,
+ 0, rpc_printer_driver_list_internals,
argc, argv);
}
return 0;
}
- return run_rpc_command(c, NULL, &ndr_table_spoolss.syntax_id, 0,
- rpc_printer_publish_publish_internals,
+ return run_rpc_command(c, NULL, NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION,
+ 0, rpc_printer_publish_publish_internals,
argc, argv);
}
return 0;
}
- return run_rpc_command(c, NULL, &ndr_table_spoolss.syntax_id, 0,
+ return run_rpc_command(c, NULL,
+ NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, 0,
rpc_printer_publish_update_internals,
argc, argv);
}
return 0;
}
- return run_rpc_command(c, NULL, &ndr_table_spoolss.syntax_id, 0,
+ return run_rpc_command(c, NULL,
+ NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, 0,
rpc_printer_publish_unpublish_internals,
argc, argv);
}
return 0;
}
- return run_rpc_command(c, NULL, &ndr_table_spoolss.syntax_id, 0,
+ return run_rpc_command(c, NULL,
+ NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION, 0,
rpc_printer_publish_list_internals,
argc, argv);
}
net_display_usage_from_functable(func);
return 0;
}
- return run_rpc_command(c, NULL, &ndr_table_spoolss.syntax_id, 0,
- rpc_printer_publish_list_internals,
- argc, argv);
+ return run_rpc_command(c, NULL,
+ NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION,
+ 0, rpc_printer_publish_list_internals,
+ argc, argv);
}
return net_run_function(c, argc, argv, "net rpc printer publish",func);
net_display_usage_from_functable(func);
return 0;
}
- return run_rpc_command(c, NULL, &ndr_table_spoolss.syntax_id, 0,
- rpc_printer_list_internals,
- argc, argv);
+ return run_rpc_command(c, NULL,
+ NDR_SPOOLSS_UUID, NDR_SPOOLSS_VERSION,
+ 0, rpc_printer_list_internals,
+ argc, argv);
}
return net_run_function(c, argc, argv, "net rpc printer", func);