rpc_client/cli_samr.c

ソースコードを見る。

関数

NTSTATUS rpccli_samr_connect (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32 access_mask, POLICY_HND *connect_pol)
NTSTATUS rpccli_samr_connect4 (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32 access_mask, POLICY_HND *connect_pol)
NTSTATUS rpccli_samr_close (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *connect_pol)
NTSTATUS rpccli_samr_open_domain (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *connect_pol, uint32 access_mask, const DOM_SID *domain_sid, POLICY_HND *domain_pol)
NTSTATUS rpccli_samr_open_user (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *domain_pol, uint32 access_mask, uint32 user_rid, POLICY_HND *user_pol)
NTSTATUS rpccli_samr_open_group (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *domain_pol, uint32 access_mask, uint32 group_rid, POLICY_HND *group_pol)
NTSTATUS rpccli_samr_create_dom_group (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *domain_pol, const char *group_name, uint32 access_mask, POLICY_HND *group_pol)
NTSTATUS rpccli_samr_add_groupmem (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *group_pol, uint32 rid)
NTSTATUS rpccli_samr_del_groupmem (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *group_pol, uint32 rid)
NTSTATUS rpccli_samr_query_userinfo (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const POLICY_HND *user_pol, uint16 switch_value, SAM_USERINFO_CTR **ctr)
NTSTATUS rpccli_samr_set_groupinfo (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *group_pol, GROUP_INFO_CTR *ctr)
NTSTATUS rpccli_samr_query_groupinfo (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *group_pol, uint32 info_level, GROUP_INFO_CTR **ctr)
NTSTATUS rpccli_samr_query_usergroups (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *user_pol, uint32 *num_groups, DOM_GID **gid)
NTSTATUS rpccli_samr_set_aliasinfo (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *alias_pol, ALIAS_INFO_CTR *ctr)
NTSTATUS rpccli_samr_query_useraliases (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *dom_pol, uint32 num_sids, DOM_SID2 *sid, uint32 *num_aliases, uint32 **als_rids)
NTSTATUS rpccli_samr_query_groupmem (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *group_pol, uint32 *num_mem, uint32 **rid, uint32 **attr)
NTSTATUS rpccli_samr_enum_dom_users (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *pol, uint32 *start_idx, uint32 acb_mask, uint32 size, char ***dom_users, uint32 **rids, uint32 *num_dom_users)
 Enumerate domain users
NTSTATUS rpccli_samr_enum_dom_groups (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *pol, uint32 *start_idx, uint32 size, struct acct_info **dom_groups, uint32 *num_dom_groups)
NTSTATUS rpccli_samr_enum_als_groups (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *pol, uint32 *start_idx, uint32 size, struct acct_info **dom_aliases, uint32 *num_dom_aliases)
NTSTATUS rpccli_samr_query_aliasmem (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *alias_pol, uint32 *num_mem, DOM_SID **sids)
NTSTATUS rpccli_samr_open_alias (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *domain_pol, uint32 access_mask, uint32 alias_rid, POLICY_HND *alias_pol)
NTSTATUS rpccli_samr_create_dom_alias (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *domain_pol, const char *name, POLICY_HND *alias_pol)
NTSTATUS rpccli_samr_add_aliasmem (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *alias_pol, DOM_SID *member)
NTSTATUS rpccli_samr_del_aliasmem (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *alias_pol, DOM_SID *member)
NTSTATUS rpccli_samr_query_alias_info (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *alias_pol, uint16 switch_value, ALIAS_INFO_CTR *ctr)
NTSTATUS rpccli_samr_query_dom_info (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *domain_pol, uint16 switch_value, SAM_UNK_CTR *ctr)
NTSTATUS rpccli_samr_query_dom_info2 (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *domain_pol, uint16 switch_value, SAM_UNK_CTR *ctr)
NTSTATUS rpccli_samr_set_domain_info (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *domain_pol, uint16 switch_value, SAM_UNK_CTR *ctr)
NTSTATUS rpccli_samr_chgpasswd_user (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *username, const char *newpassword, const char *oldpassword)
NTSTATUS rpccli_samr_chng_pswd_auth_crap (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *username, DATA_BLOB new_nt_password, DATA_BLOB old_nt_hash_enc, DATA_BLOB new_lm_password, DATA_BLOB old_lm_hash_enc)
NTSTATUS rpccli_samr_chgpasswd3 (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *username, const char *newpassword, const char *oldpassword, SAM_UNK_INFO_1 *info, SAMR_CHANGE_REJECT *reject)
void get_query_dispinfo_params (int loop_count, uint32 *max_entries, uint32 *max_size)
NTSTATUS rpccli_samr_query_dispinfo (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *domain_pol, uint32 *start_idx, uint16 switch_value, uint32 *num_entries, uint32 max_entries, uint32 max_size, SAM_DISPINFO_CTR *ctr)
NTSTATUS rpccli_samr_lookup_rids (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *domain_pol, uint32 num_rids, uint32 *rids, uint32 *num_names, char ***names, uint32 **name_types)
NTSTATUS rpccli_samr_lookup_names (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *domain_pol, uint32 flags, uint32 num_names, const char **names, uint32 *num_rids, uint32 **rids, uint32 **rid_types)
NTSTATUS rpccli_samr_create_dom_user (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *domain_pol, const char *acct_name, uint32 acb_info, uint32 unknown, POLICY_HND *user_pol, uint32 *rid)
NTSTATUS rpccli_samr_set_userinfo (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const POLICY_HND *user_pol, uint16 switch_value, DATA_BLOB *sess_key, SAM_USERINFO_CTR *ctr)
NTSTATUS rpccli_samr_set_userinfo2 (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const POLICY_HND *user_pol, uint16 switch_value, DATA_BLOB *sess_key, SAM_USERINFO_CTR *ctr)
NTSTATUS rpccli_samr_delete_dom_group (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *group_pol)
NTSTATUS rpccli_samr_delete_dom_alias (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *alias_pol)
NTSTATUS rpccli_samr_delete_dom_user (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *user_pol)
NTSTATUS rpccli_samr_remove_sid_foreign_domain (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *user_pol, DOM_SID *sid)
NTSTATUS rpccli_samr_query_sec_obj (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *user_pol, uint32 sec_info, TALLOC_CTX *ctx, SEC_DESC_BUF **sec_desc_buf)
NTSTATUS rpccli_samr_set_sec_obj (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *user_pol, uint32 sec_info, SEC_DESC_BUF *sec_desc_buf)
NTSTATUS rpccli_samr_get_dom_pwinfo (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16 *min_pwd_length, uint32 *password_properties)
NTSTATUS rpccli_samr_get_usrdom_pwinfo (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *pol, uint16 *min_pwd_length, uint32 *password_properties, uint32 *unknown1)
NTSTATUS rpccli_samr_lookup_domain (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, POLICY_HND *user_pol, char *domain_name, DOM_SID *sid)


関数

NTSTATUS rpccli_samr_connect ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
uint32  access_mask,
POLICY_HND connect_pol 
)

cli_samr.c28 行で定義されています。

参照先 clir_samr_connect_info::connect_polcli_state::desthostinit_samr_q_connect()resultsamr_io_q_connect()samr_io_r_connect()r_samr_connect_info::status.

参照元 cac_SamConnect()cm_connect_sam()net_rpc_join_newstyle()netdom_join_domain()netdom_leave_domain()rpc_add_aliasmem()rpc_add_groupmem()rpc_alias_add_internals()rpc_aliaslist_internals()rpc_del_aliasmem()rpc_del_groupmem()rpc_group_add_internals()rpc_group_delete_internals()rpc_group_list_internals()rpc_group_members_internals()rpc_group_rename_internals()rpc_info_internals()rpc_sh_acct_do()rpc_sh_handle_user()rpc_trustdom_add_internals()rpc_trustdom_del_internals()rpc_trustdom_list()rpc_user_add_internals()rpc_user_del_internals()rpc_user_info_internals()rpc_user_list_internals()rpc_user_password_internals()rpc_user_rename_internals()samr_connect()try_samr_connects().

00030 {
00031         prs_struct qbuf, rbuf;
00032         SAMR_Q_CONNECT q;
00033         SAMR_R_CONNECT r;
00034         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
00035 
00036         DEBUG(10,("cli_samr_connect to %s\n", cli->cli->desthost));
00037 
00038         ZERO_STRUCT(q);
00039         ZERO_STRUCT(r);
00040 
00041         /* Marshall data and send request */
00042 
00043         init_samr_q_connect(&q, cli->cli->desthost, access_mask);
00044 
00045         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_CONNECT,
00046                 q, r,
00047                 qbuf, rbuf,
00048                 samr_io_q_connect,
00049                 samr_io_r_connect,
00050                 NT_STATUS_UNSUCCESSFUL); 
00051         /* Return output parameters */
00052 
00053         if (NT_STATUS_IS_OK(result = r.status)) {
00054                 *connect_pol = r.connect_pol;
00055 #ifdef __INSURE__
00056                 connect_pol->marker = malloc(1);
00057 #endif
00058         }
00059 
00060         return result;
00061 }

NTSTATUS rpccli_samr_connect4 ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
uint32  access_mask,
POLICY_HND connect_pol 
)

cli_samr.c65 行で定義されています。

参照先 clir_samr_connect_info::connect_polcli_state::desthostinit_samr_q_connect4()resultsamr_io_q_connect4()samr_io_r_connect4()r_samr_connect_info::status.

参照元 cac_SamConnect()try_samr_connects().

00067 {
00068         prs_struct qbuf, rbuf;
00069         SAMR_Q_CONNECT4 q;
00070         SAMR_R_CONNECT4 r;
00071         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
00072 
00073         ZERO_STRUCT(q);
00074         ZERO_STRUCT(r);
00075 
00076         /* Marshall data and send request */
00077 
00078         init_samr_q_connect4(&q, cli->cli->desthost, access_mask);
00079 
00080         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_CONNECT4,
00081                 q, r,
00082                 qbuf, rbuf,
00083                 samr_io_q_connect4,
00084                 samr_io_r_connect4,
00085                 NT_STATUS_UNSUCCESSFUL); 
00086 
00087         /* Return output parameters */
00088 
00089         if (NT_STATUS_IS_OK(result = r.status)) {
00090                 *connect_pol = r.connect_pol;
00091 #ifdef __INSURE__
00092                 connect_pol->marker = malloc(1);
00093 #endif
00094         }
00095 
00096         return result;
00097 }

NTSTATUS rpccli_samr_close ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND connect_pol 
)

cli_samr.c101 行で定義されています。

参照先 cliinit_samr_q_close_hnd()r_samr_close_hnd_info::polresultsamr_io_q_close_hnd()samr_io_r_close_hnd()r_samr_close_hnd_info::status.

参照元 cac_SamClose()cmd_samr_chgpasswd2()cmd_samr_chgpasswd3()cmd_samr_create_dom_alias()cmd_samr_create_dom_group()cmd_samr_create_dom_user()cmd_samr_delete_alias()cmd_samr_delete_dom_user()cmd_samr_enum_als_groups()cmd_samr_enum_dom_groups()cmd_samr_enum_dom_users()cmd_samr_get_usrdom_pwinfo()cmd_samr_lookup_domain()cmd_samr_lookup_names()cmd_samr_lookup_rids()cmd_samr_query_aliasmem()cmd_samr_query_dispinfo()cmd_samr_query_dominfo()cmd_samr_query_group()cmd_samr_query_groupmem()cmd_samr_query_sec_obj()cmd_samr_query_user()cmd_samr_query_useraliases()cmd_samr_query_usergroups()lookup_groupmem()lookup_usergroups()net_rpc_join_newstyle()netdom_join_domain()netdom_leave_domain()query_user()rpc_add_aliasmem()rpc_add_groupmem()rpc_aliaslist_internals()rpc_del_aliasmem()rpc_del_groupmem()rpc_fetch_domain_aliases()rpc_group_delete_internals()rpc_group_list_internals()rpc_group_members_internals()rpc_sh_acct_do()rpc_sh_handle_user()rpc_trustdom_list()winbindd_dual_pam_auth_samlogon().

00103 {
00104         prs_struct qbuf, rbuf;
00105         SAMR_Q_CLOSE_HND q;
00106         SAMR_R_CLOSE_HND r;
00107         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
00108 
00109         DEBUG(10,("cli_samr_close\n"));
00110 
00111         ZERO_STRUCT(q);
00112         ZERO_STRUCT(r);
00113 
00114         /* Marshall data and send request */
00115 
00116         init_samr_q_close_hnd(&q, connect_pol);
00117 
00118         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_CLOSE_HND,
00119                 q, r,
00120                 qbuf, rbuf,
00121                 samr_io_q_close_hnd,
00122                 samr_io_r_close_hnd,
00123                 NT_STATUS_UNSUCCESSFUL); 
00124 
00125         /* Return output parameters */
00126 
00127         if (NT_STATUS_IS_OK(result = r.status)) {
00128 #ifdef __INSURE__
00129                 SAFE_FREE(connect_pol->marker);
00130 #endif
00131                 *connect_pol = r.pol;
00132         }
00133 
00134         return result;
00135 }

NTSTATUS rpccli_samr_open_domain ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND connect_pol,
uint32  access_mask,
const DOM_SID domain_sid,
POLICY_HND domain_pol 
)

cli_samr.c139 行で定義されています。

参照先 clir_samr_open_domain_info::domain_poldomain_sidinit_samr_q_open_domain()resultsamr_io_q_open_domain()samr_io_r_open_domain()sid_string_static()r_samr_open_domain_info::status.

参照元 cac_SamOpenDomain()cm_connect_sam()cmd_samr_chgpasswd2()cmd_samr_chgpasswd3()cmd_samr_create_dom_alias()cmd_samr_create_dom_group()cmd_samr_create_dom_user()cmd_samr_delete_alias()cmd_samr_delete_dom_user()cmd_samr_enum_als_groups()cmd_samr_enum_dom_groups()cmd_samr_enum_dom_users()cmd_samr_get_usrdom_pwinfo()cmd_samr_lookup_domain()cmd_samr_lookup_names()cmd_samr_lookup_rids()cmd_samr_query_aliasmem()cmd_samr_query_dispinfo()cmd_samr_query_dominfo()cmd_samr_query_group()cmd_samr_query_groupmem()cmd_samr_query_sec_obj()cmd_samr_query_user()cmd_samr_query_useraliases()cmd_samr_query_usergroups()net_rpc_join_newstyle()netdom_join_domain()netdom_leave_domain()rpc_add_aliasmem()rpc_add_groupmem()rpc_alias_add_internals()rpc_del_aliasmem()rpc_del_groupmem()rpc_fetch_domain_aliases()rpc_group_add_internals()rpc_group_delete_internals()rpc_group_list_internals()rpc_group_members_internals()rpc_group_rename_internals()rpc_info_internals()rpc_sh_acct_do()rpc_sh_handle_user()rpc_trustdom_add_internals()rpc_trustdom_del_internals()rpc_trustdom_list()rpc_user_add_internals()rpc_user_del_internals()rpc_user_info_internals()rpc_user_list_internals()rpc_user_password_internals()rpc_user_rename_internals()samr_open_domain().

00143 {
00144         prs_struct qbuf, rbuf;
00145         SAMR_Q_OPEN_DOMAIN q;
00146         SAMR_R_OPEN_DOMAIN r;
00147         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
00148 
00149         DEBUG(10,("cli_samr_open_domain with sid %s\n", sid_string_static(domain_sid) ));
00150 
00151         ZERO_STRUCT(q);
00152         ZERO_STRUCT(r);
00153 
00154         /* Marshall data and send request */
00155 
00156         init_samr_q_open_domain(&q, connect_pol, access_mask, domain_sid);
00157 
00158         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_OPEN_DOMAIN,
00159                 q, r,
00160                 qbuf, rbuf,
00161                 samr_io_q_open_domain,
00162                 samr_io_r_open_domain,
00163                 NT_STATUS_UNSUCCESSFUL); 
00164 
00165         /* Return output parameters */
00166 
00167         if (NT_STATUS_IS_OK(result = r.status)) {
00168                 *domain_pol = r.domain_pol;
00169 #ifdef __INSURE__
00170                 domain_pol->marker = malloc(1);
00171 #endif
00172         }
00173 
00174         return result;
00175 }

NTSTATUS rpccli_samr_open_user ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND domain_pol,
uint32  access_mask,
uint32  user_rid,
POLICY_HND user_pol 
)

cli_samr.c177 行で定義されています。

参照先 cliinit_samr_q_open_user()resultsamr_io_q_open_user()samr_io_r_open_user()r_samr_open_user_info::statusr_samr_open_user_info::user_pol.

参照元 cac_SamOpenUser()cmd_samr_delete_dom_user()cmd_samr_get_usrdom_pwinfo()cmd_samr_query_sec_obj()cmd_samr_query_user()cmd_samr_query_usergroups()lookup_usergroups()net_rpc_join_newstyle()netdom_join_domain()netdom_leave_domain()query_user()rpc_group_delete_internals()rpc_sh_handle_user()rpc_trustdom_del_internals()rpc_user_add_internals()rpc_user_del_internals()rpc_user_info_internals()rpc_user_password_internals()rpc_user_rename_internals()winbindd_dual_pam_auth_samlogon().

00181 {
00182         prs_struct qbuf, rbuf;
00183         SAMR_Q_OPEN_USER q;
00184         SAMR_R_OPEN_USER r;
00185         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
00186 
00187         DEBUG(10,("cli_samr_open_user with rid 0x%x\n", user_rid ));
00188 
00189         ZERO_STRUCT(q);
00190         ZERO_STRUCT(r);
00191 
00192         /* Marshall data and send request */
00193 
00194         init_samr_q_open_user(&q, domain_pol, access_mask, user_rid);
00195 
00196         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_OPEN_USER,
00197                 q, r,
00198                 qbuf, rbuf,
00199                 samr_io_q_open_user,
00200                 samr_io_r_open_user,
00201                 NT_STATUS_UNSUCCESSFUL); 
00202 
00203         /* Return output parameters */
00204 
00205         if (NT_STATUS_IS_OK(result = r.status)) {
00206                 *user_pol = r.user_pol;
00207 #ifdef __INSURE__
00208                 user_pol->marker = malloc(1);
00209 #endif
00210         }
00211 
00212         return result;
00213 }

NTSTATUS rpccli_samr_open_group ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND domain_pol,
uint32  access_mask,
uint32  group_rid,
POLICY_HND group_pol 
)

cli_samr.c217 行で定義されています。

参照先 cliinit_samr_q_open_group()r_samr_open_group_info::polresultsamr_io_q_open_group()samr_io_r_open_group()r_samr_open_group_info::status.

参照元 cac_SamOpenGroup()cmd_samr_query_group()cmd_samr_query_groupmem()lookup_groupmem()rpc_add_groupmem()rpc_del_groupmem()rpc_group_delete_internals()rpc_group_rename_internals()rpc_list_group_members().

00221 {
00222         prs_struct qbuf, rbuf;
00223         SAMR_Q_OPEN_GROUP q;
00224         SAMR_R_OPEN_GROUP r;
00225         NTSTATUS result =  NT_STATUS_UNSUCCESSFUL;
00226 
00227         DEBUG(10,("cli_samr_open_group with rid 0x%x\n", group_rid ));
00228 
00229         ZERO_STRUCT(q);
00230         ZERO_STRUCT(r);
00231 
00232         /* Marshall data and send request */
00233 
00234         init_samr_q_open_group(&q, domain_pol, access_mask, group_rid);
00235 
00236         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_OPEN_GROUP,
00237                 q, r,
00238                 qbuf, rbuf,
00239                 samr_io_q_open_group,
00240                 samr_io_r_open_group,
00241                 NT_STATUS_UNSUCCESSFUL); 
00242 
00243         /* Return output parameters */
00244 
00245         if (NT_STATUS_IS_OK(result = r.status)) {
00246                 *group_pol = r.pol;
00247 #ifdef __INSURE__
00248                 group_pol->marker = malloc(1);
00249 #endif
00250         }
00251 
00252         return result;
00253 }

NTSTATUS rpccli_samr_create_dom_group ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND domain_pol,
const char *  group_name,
uint32  access_mask,
POLICY_HND group_pol 
)

cli_samr.c257 行で定義されています。

参照先 cliinit_samr_q_create_dom_group()r_samr_create_dom_group_info::polresultsamr_io_q_create_dom_group()samr_io_r_create_dom_group()r_samr_create_dom_group_info::status.

参照元 cac_SamCreateGroup()cmd_samr_create_dom_group()rpc_group_add_internals().

00261 {
00262         prs_struct qbuf, rbuf;
00263         SAMR_Q_CREATE_DOM_GROUP q;
00264         SAMR_R_CREATE_DOM_GROUP r;
00265         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
00266 
00267         DEBUG(10,("cli_samr_create_dom_group\n"));
00268 
00269         ZERO_STRUCT(q);
00270         ZERO_STRUCT(r);
00271 
00272         /* Marshall data and send request */
00273 
00274         init_samr_q_create_dom_group(&q, domain_pol, group_name, access_mask);
00275 
00276         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_CREATE_DOM_GROUP,
00277                 q, r,
00278                 qbuf, rbuf,
00279                 samr_io_q_create_dom_group,
00280                 samr_io_r_create_dom_group,
00281                 NT_STATUS_UNSUCCESSFUL); 
00282 
00283         /* Return output parameters */
00284 
00285         result = r.status;
00286 
00287         if (NT_STATUS_IS_OK(result))
00288                 *group_pol = r.pol;
00289 
00290         return result;
00291 }

NTSTATUS rpccli_samr_add_groupmem ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND group_pol,
uint32  rid 
)

cli_samr.c295 行で定義されています。

参照先 cliinit_samr_q_add_groupmem()resultsamr_io_q_add_groupmem()samr_io_r_add_groupmem()r_samr_add_group_mem_info::status.

参照元 cac_SamAddGroupMember()cac_SamClearGroupMembers()cac_SamSetGroupMembers()rpc_add_groupmem().

00297 {
00298         prs_struct qbuf, rbuf;
00299         SAMR_Q_ADD_GROUPMEM q;
00300         SAMR_R_ADD_GROUPMEM r;
00301         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
00302 
00303         DEBUG(10,("cli_samr_add_groupmem\n"));
00304 
00305         ZERO_STRUCT(q);
00306         ZERO_STRUCT(r);
00307 
00308         /* Marshall data and send request */
00309 
00310         init_samr_q_add_groupmem(&q, group_pol, rid);
00311 
00312         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_ADD_GROUPMEM,
00313                 q, r,
00314                 qbuf, rbuf,
00315                 samr_io_q_add_groupmem,
00316                 samr_io_r_add_groupmem,
00317                 NT_STATUS_UNSUCCESSFUL); 
00318 
00319         /* Return output parameters */
00320 
00321         result = r.status;
00322 
00323         return result;
00324 }

NTSTATUS rpccli_samr_del_groupmem ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND group_pol,
uint32  rid 
)

cli_samr.c328 行で定義されています。

参照先 cliinit_samr_q_del_groupmem()resultsamr_io_q_del_groupmem()samr_io_r_del_groupmem()r_samr_del_group_mem_info::status.

参照元 cac_SamClearGroupMembers()cac_SamRemoveGroupMember()rpc_del_groupmem()rpc_group_delete_internals().

00330 {
00331         prs_struct qbuf, rbuf;
00332         SAMR_Q_DEL_GROUPMEM q;
00333         SAMR_R_DEL_GROUPMEM r;
00334         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
00335 
00336         DEBUG(10,("cli_samr_del_groupmem\n"));
00337 
00338         ZERO_STRUCT(q);
00339         ZERO_STRUCT(r);
00340 
00341         /* Marshall data and send request */
00342 
00343         init_samr_q_del_groupmem(&q, group_pol, rid);
00344 
00345         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_DEL_GROUPMEM,
00346                 q, r,
00347                 qbuf, rbuf,
00348                 samr_io_q_del_groupmem,
00349                 samr_io_r_del_groupmem,
00350                 NT_STATUS_UNSUCCESSFUL); 
00351 
00352         /* Return output parameters */
00353 
00354         result = r.status;
00355 
00356         return result;
00357 }

NTSTATUS rpccli_samr_query_userinfo ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
const POLICY_HND user_pol,
uint16  switch_value,
SAM_USERINFO_CTR **  ctr 
)

cli_samr.c361 行で定義されています。

参照先 clir_samr_query_user_info::ctrinit_samr_q_query_userinfo()resultsamr_io_q_query_userinfo()samr_io_r_query_userinfo()r_samr_query_user_info::status.

参照元 cac_SamDisableUser()cac_SamEnableUser()cac_SamGetUserInfo()cac_SamGetUserInfoCtr()cmd_samr_query_user()netdom_leave_domain()query_user()rpc_group_delete_internals()rpc_sh_user_flag_edit_internals()rpc_sh_user_show_internals()rpc_sh_user_str_edit_internals()rpc_user_rename_internals()winbindd_dual_pam_auth_samlogon().

00366 {
00367         prs_struct qbuf, rbuf;
00368         SAMR_Q_QUERY_USERINFO q;
00369         SAMR_R_QUERY_USERINFO r;
00370         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
00371 
00372         DEBUG(10,("cli_samr_query_userinfo\n"));
00373 
00374         ZERO_STRUCT(q);
00375         ZERO_STRUCT(r);
00376 
00377         /* Marshall data and send request */
00378 
00379         init_samr_q_query_userinfo(&q, user_pol, switch_value);
00380 
00381         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_QUERY_USERINFO,
00382                 q, r,
00383                 qbuf, rbuf,
00384                 samr_io_q_query_userinfo,
00385                 samr_io_r_query_userinfo,
00386                 NT_STATUS_UNSUCCESSFUL); 
00387 
00388         /* Return output parameters */
00389 
00390         result = r.status;
00391         *ctr = r.ctr;
00392 
00393         return result;
00394 }

NTSTATUS rpccli_samr_set_groupinfo ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND group_pol,
GROUP_INFO_CTR ctr 
)

cli_samr.c398 行で定義されています。

参照先 cliinit_samr_q_set_groupinfo()resultsamr_io_q_set_groupinfo()samr_io_r_set_groupinfo()r_samr_set_group_info::status.

参照元 cac_SamRenameGroup()cac_SamSetGroupInfo()rpc_group_add_internals()rpc_group_rename_internals().

00400 {
00401         prs_struct qbuf, rbuf;
00402         SAMR_Q_SET_GROUPINFO q;
00403         SAMR_R_SET_GROUPINFO r;
00404         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
00405 
00406         DEBUG(10,("cli_samr_set_groupinfo\n"));
00407 
00408         ZERO_STRUCT(q);
00409         ZERO_STRUCT(r);
00410 
00411         /* Marshall data and send request */
00412 
00413         init_samr_q_set_groupinfo(&q, group_pol, ctr);
00414 
00415         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_SET_GROUPINFO,
00416                 q, r,
00417                 qbuf, rbuf,
00418                 samr_io_q_set_groupinfo,
00419                 samr_io_r_set_groupinfo,
00420                 NT_STATUS_UNSUCCESSFUL); 
00421 
00422         /* Return output parameters */
00423 
00424         result = r.status;
00425 
00426         return result;
00427 }

NTSTATUS rpccli_samr_query_groupinfo ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND group_pol,
uint32  info_level,
GROUP_INFO_CTR **  ctr 
)

cli_samr.c431 行で定義されています。

参照先 clir_samr_query_groupinfo_info::ctrinit_samr_q_query_groupinfo()resultsamr_io_q_query_groupinfo()samr_io_r_query_groupinfo()r_samr_query_groupinfo_info::status.

参照元 cac_SamGetGroupInfo()cmd_samr_query_group().

00434 {
00435         prs_struct qbuf, rbuf;
00436         SAMR_Q_QUERY_GROUPINFO q;
00437         SAMR_R_QUERY_GROUPINFO r;
00438         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
00439 
00440         DEBUG(10,("cli_samr_query_groupinfo\n"));
00441 
00442         ZERO_STRUCT(q);
00443         ZERO_STRUCT(r);
00444 
00445         /* Marshall data and send request */
00446 
00447         init_samr_q_query_groupinfo(&q, group_pol, info_level);
00448 
00449         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_QUERY_GROUPINFO,
00450                 q, r,
00451                 qbuf, rbuf,
00452                 samr_io_q_query_groupinfo,
00453                 samr_io_r_query_groupinfo,
00454                 NT_STATUS_UNSUCCESSFUL); 
00455 
00456         *ctr = r.ctr;
00457 
00458         /* Return output parameters */
00459 
00460         result = r.status;
00461 
00462         return result;
00463 }

NTSTATUS rpccli_samr_query_usergroups ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND user_pol,
uint32 *  num_groups,
DOM_GID **  gid 
)

cli_samr.c467 行で定義されています。

参照先 clir_samr_query_usergroup_info::gidinit_samr_q_query_usergroups()r_samr_query_usergroup_info::num_entriesresultsamr_io_q_query_usergroups()samr_io_r_query_usergroups()r_samr_query_usergroup_info::status.

参照元 cac_SamGetGroupsForUser()cmd_samr_query_usergroups()lookup_usergroups()rpc_user_info_internals().

00472 {
00473         prs_struct qbuf, rbuf;
00474         SAMR_Q_QUERY_USERGROUPS q;
00475         SAMR_R_QUERY_USERGROUPS r;
00476         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
00477 
00478         DEBUG(10,("cli_samr_query_usergroups\n"));
00479 
00480         ZERO_STRUCT(q);
00481         ZERO_STRUCT(r);
00482 
00483         /* Marshall data and send request */
00484 
00485         init_samr_q_query_usergroups(&q, user_pol);
00486 
00487         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_QUERY_USERGROUPS,
00488                 q, r,
00489                 qbuf, rbuf,
00490                 samr_io_q_query_usergroups,
00491                 samr_io_r_query_usergroups,
00492                 NT_STATUS_UNSUCCESSFUL); 
00493 
00494         /* Return output parameters */
00495 
00496         if (NT_STATUS_IS_OK(result = r.status)) {
00497                 *num_groups = r.num_entries;
00498                 *gid = r.gid;
00499         }
00500 
00501         return result;
00502 }

NTSTATUS rpccli_samr_set_aliasinfo ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND alias_pol,
ALIAS_INFO_CTR ctr 
)

cli_samr.c506 行で定義されています。

参照先 cliinit_samr_q_set_aliasinfo()resultsamr_io_q_set_aliasinfo()samr_io_r_set_aliasinfo()SAMR_R_SET_ALIASINFO::status.

参照元 cac_SamSetAliasInfo()rpc_alias_add_internals().

00508 {
00509         prs_struct qbuf, rbuf;
00510         SAMR_Q_SET_ALIASINFO q;
00511         SAMR_R_SET_ALIASINFO r;
00512         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
00513 
00514         DEBUG(10,("cli_samr_set_aliasinfo\n"));
00515 
00516         ZERO_STRUCT(q);
00517         ZERO_STRUCT(r);
00518 
00519         /* Marshall data and send request */
00520 
00521         init_samr_q_set_aliasinfo(&q, alias_pol, ctr);
00522 
00523         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_SET_ALIASINFO,
00524                 q, r,
00525                 qbuf, rbuf,
00526                 samr_io_q_set_aliasinfo,
00527                 samr_io_r_set_aliasinfo,
00528                 NT_STATUS_UNSUCCESSFUL); 
00529 
00530         /* Return output parameters */
00531 
00532         result = r.status;
00533 
00534         return result;
00535 }

NTSTATUS rpccli_samr_query_useraliases ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND dom_pol,
uint32  num_sids,
DOM_SID2 sid,
uint32 *  num_aliases,
uint32 **  als_rids 
)

cli_samr.c539 行で定義されています。

参照先 cliinit_samr_q_query_useraliases()r_samr_query_useraliases_info::num_entriesresultr_samr_query_useraliases_info::ridsamr_io_q_query_useraliases()samr_io_r_query_useraliases()r_samr_query_useraliases_info::status.

参照元 cmd_samr_query_useraliases()msrpc_lookup_useraliases().

00544 {
00545         prs_struct qbuf, rbuf;
00546         SAMR_Q_QUERY_USERALIASES q;
00547         SAMR_R_QUERY_USERALIASES r;
00548         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
00549         int i;
00550         uint32 *sid_ptrs;
00551         
00552         DEBUG(10,("cli_samr_query_useraliases\n"));
00553 
00554         ZERO_STRUCT(q);
00555         ZERO_STRUCT(r);
00556 
00557         if (num_sids) {
00558                 sid_ptrs = TALLOC_ARRAY(mem_ctx, uint32, num_sids);
00559                 if (sid_ptrs == NULL)
00560                         return NT_STATUS_NO_MEMORY;
00561         } else {
00562                 sid_ptrs = NULL;
00563         }
00564         
00565         for (i=0; i<num_sids; i++)
00566                 sid_ptrs[i] = 1;
00567 
00568         /* Marshall data and send request */
00569 
00570         init_samr_q_query_useraliases(&q, dom_pol, num_sids, sid_ptrs, sid);
00571 
00572         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_QUERY_USERALIASES,
00573                 q, r,
00574                 qbuf, rbuf,
00575                 samr_io_q_query_useraliases,
00576                 samr_io_r_query_useraliases,
00577                 NT_STATUS_UNSUCCESSFUL); 
00578 
00579         /* Return output parameters */
00580 
00581         if (NT_STATUS_IS_OK(result = r.status)) {
00582                 *num_aliases = r.num_entries;
00583                 *als_rids = r.rid;
00584         }
00585 
00586         return result;
00587 }

NTSTATUS rpccli_samr_query_groupmem ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND group_pol,
uint32 *  num_mem,
uint32 **  rid,
uint32 **  attr 
)

cli_samr.c591 行で定義されています。

参照先 r_samr_query_groupmem_info::attrcliinit_samr_q_query_groupmem()r_samr_query_groupmem_info::num_entriesresultr_samr_query_groupmem_info::ridsamr_io_q_query_groupmem()samr_io_r_query_groupmem()r_samr_query_groupmem_info::status.

参照元 cac_SamClearGroupMembers()cac_SamGetGroupMembers()cmd_samr_query_groupmem()lookup_groupmem()rpc_group_delete_internals()rpc_list_group_members().

00595 {
00596         prs_struct qbuf, rbuf;
00597         SAMR_Q_QUERY_GROUPMEM q;
00598         SAMR_R_QUERY_GROUPMEM r;
00599         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
00600 
00601         DEBUG(10,("cli_samr_query_groupmem\n"));
00602 
00603         ZERO_STRUCT(q);
00604         ZERO_STRUCT(r);
00605 
00606         /* Marshall data and send request */
00607 
00608         init_samr_q_query_groupmem(&q, group_pol);
00609 
00610         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_QUERY_GROUPMEM,
00611                 q, r,
00612                 qbuf, rbuf,
00613                 samr_io_q_query_groupmem,
00614                 samr_io_r_query_groupmem,
00615                 NT_STATUS_UNSUCCESSFUL); 
00616 
00617         /* Return output parameters */
00618 
00619         if (NT_STATUS_IS_OK(result = r.status)) {
00620                 *num_mem = r.num_entries;
00621                 *rid = r.rid;
00622                 *attr = r.attr;
00623         }
00624 
00625         return result;
00626 }

NTSTATUS rpccli_samr_enum_dom_users ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND pol,
uint32 *  start_idx,
uint32  acb_mask,
uint32  size,
char ***  dom_users,
uint32 **  rids,
uint32 *  num_dom_users 
)

Enumerate domain users

引数:
cli client state structure
mem_ctx talloc context
pol opened domain policy handle
start_idx starting index of enumeration, returns context for next enumeration
acb_mask account control bit mask (to enumerate some particular kind of accounts)
size max acceptable size of response
dom_users returned array of domain user names
rids returned array of domain user RIDs
num_dom_users numer returned entries
戻り値:
NTSTATUS returned in rpc response

cli_samr.c646 行で定義されています。

参照先 cliinit_samr_q_enum_dom_users()r_samr_enum_dom_users_info::next_idxr_samr_enum_dom_users_info::num_entries2polresultsamr_entry_info::ridr_samr_enum_dom_users_info::samsamr_io_q_enum_dom_users()samr_io_r_enum_dom_users()r_samr_enum_dom_users_info::statustalloc_strdup()r_samr_enum_dom_users_info::uni_acct_nameunistr2_to_ascii().

参照元 cac_SamEnumUsers()cmd_samr_enum_dom_users()rpc_trustdom_list().

00650 {
00651         prs_struct qbuf;
00652         prs_struct rbuf;
00653         SAMR_Q_ENUM_DOM_USERS q;
00654         SAMR_R_ENUM_DOM_USERS r;
00655         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
00656         int i;
00657         
00658         DEBUG(10,("cli_samr_enum_dom_users starting at index %u\n", (unsigned int)*start_idx));
00659 
00660         ZERO_STRUCT(q);
00661         ZERO_STRUCT(r);
00662         
00663         /* always init this */
00664         *num_dom_users = 0;
00665         
00666         /* Fill query structure with parameters */
00667 
00668         init_samr_q_enum_dom_users(&q, pol, *start_idx, acb_mask, size);
00669         
00670         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_ENUM_DOM_USERS,
00671                 q, r,
00672                 qbuf, rbuf,
00673                 samr_io_q_enum_dom_users,
00674                 samr_io_r_enum_dom_users,
00675                 NT_STATUS_UNSUCCESSFUL); 
00676 
00677         result = r.status;
00678 
00679         if (!NT_STATUS_IS_OK(result) &&
00680             NT_STATUS_V(result) != NT_STATUS_V(STATUS_MORE_ENTRIES))
00681                 goto done;
00682         
00683         *start_idx = r.next_idx;
00684         *num_dom_users = r.num_entries2;
00685 
00686         if (r.num_entries2) {
00687                 /* allocate memory needed to return received data */    
00688                 *rids = TALLOC_ARRAY(mem_ctx, uint32, r.num_entries2);
00689                 if (!*rids) {
00690                         DEBUG(0, ("Error in cli_samr_enum_dom_users(): out of memory\n"));
00691                         return NT_STATUS_NO_MEMORY;
00692                 }
00693                 
00694                 *dom_users = TALLOC_ARRAY(mem_ctx, char*, r.num_entries2);
00695                 if (!*dom_users) {
00696                         DEBUG(0, ("Error in cli_samr_enum_dom_users(): out of memory\n"));
00697                         return NT_STATUS_NO_MEMORY;
00698                 }
00699                 
00700                 /* fill output buffers with rpc response */
00701                 for (i = 0; i < r.num_entries2; i++) {
00702                         fstring conv_buf;
00703                         
00704                         (*rids)[i] = r.sam[i].rid;
00705                         unistr2_to_ascii(conv_buf, &(r.uni_acct_name[i]), sizeof(conv_buf) - 1);
00706                         (*dom_users)[i] = talloc_strdup(mem_ctx, conv_buf);
00707                 }
00708         }
00709         
00710 done:
00711         return result;
00712 }

NTSTATUS rpccli_samr_enum_dom_groups ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND pol,
uint32 *  start_idx,
uint32  size,
struct acct_info **  dom_groups,
uint32 *  num_dom_groups 
)

cli_samr.c716 行で定義されています。

参照先 UNIHDR::bufferclisamr_entry_info::hdr_nameinit_samr_q_enum_dom_groups()r_samr_enum_dom_groups_info::next_idxr_samr_enum_dom_groups_info::num_entries2polresultsamr_entry_info::ridr_samr_enum_dom_groups_info::samsamr_io_q_enum_dom_groups()samr_io_r_enum_dom_groups()r_samr_enum_dom_groups_info::statusr_samr_enum_dom_groups_info::uni_grp_nameunistr2_to_ascii().

参照元 cac_SamEnumGroups()cmd_samr_enum_dom_groups()enum_dom_groups()samr_enum_dom_groups().

00721 {
00722         prs_struct qbuf, rbuf;
00723         SAMR_Q_ENUM_DOM_GROUPS q;
00724         SAMR_R_ENUM_DOM_GROUPS r;
00725         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
00726         uint32 name_idx, i;
00727 
00728         DEBUG(10,("cli_samr_enum_dom_groups starting at index %u\n", (unsigned int)*start_idx));
00729 
00730         ZERO_STRUCT(q);
00731         ZERO_STRUCT(r);
00732 
00733         /* Marshall data and send request */
00734 
00735         init_samr_q_enum_dom_groups(&q, pol, *start_idx, size);
00736 
00737         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_ENUM_DOM_GROUPS,
00738                 q, r,
00739                 qbuf, rbuf,
00740                 samr_io_q_enum_dom_groups,
00741                 samr_io_r_enum_dom_groups,
00742                 NT_STATUS_UNSUCCESSFUL); 
00743 
00744         /* Return output parameters */
00745 
00746         result = r.status;
00747 
00748         if (!NT_STATUS_IS_OK(result) &&
00749             NT_STATUS_V(result) != NT_STATUS_V(STATUS_MORE_ENTRIES))
00750                 goto done;
00751 
00752         *num_dom_groups = r.num_entries2;
00753 
00754         if (*num_dom_groups == 0)
00755                 goto done;
00756 
00757         if (!((*dom_groups) = TALLOC_ARRAY(mem_ctx, struct acct_info, *num_dom_groups))) {
00758                 result = NT_STATUS_NO_MEMORY;
00759                 goto done;
00760         }
00761 
00762         memset(*dom_groups, 0, sizeof(struct acct_info) * (*num_dom_groups));
00763 
00764         name_idx = 0;
00765 
00766         for (i = 0; i < *num_dom_groups; i++) {
00767 
00768                 (*dom_groups)[i].rid = r.sam[i].rid;
00769 
00770                 if (r.sam[i].hdr_name.buffer) {
00771                         unistr2_to_ascii((*dom_groups)[i].acct_name,
00772                                          &r.uni_grp_name[name_idx],
00773                                          sizeof(fstring) - 1);
00774                         name_idx++;
00775                 }
00776 
00777                 *start_idx = r.next_idx;
00778         }
00779 
00780  done:
00781         return result;
00782 }

NTSTATUS rpccli_samr_enum_als_groups ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND pol,
uint32 *  start_idx,
uint32  size,
struct acct_info **  dom_aliases,
uint32 *  num_dom_aliases 
)

cli_samr.c786 行で定義されています。

参照先 UNIHDR::bufferclisamr_entry_info::hdr_nameinit_samr_q_enum_dom_aliases()r_samr_enum_dom_aliases_info::next_idxr_samr_enum_dom_aliases_info::num_entries2polresultsamr_entry_info::ridr_samr_enum_dom_aliases_info::samsamr_io_q_enum_dom_aliases()samr_io_r_enum_dom_aliases()r_samr_enum_dom_aliases_info::statusr_samr_enum_dom_aliases_info::uni_grp_nameunistr2_to_ascii().

参照元 cac_SamEnumAliases()cmd_samr_enum_als_groups()enum_local_groups()rpc_fetch_domain_aliases()rpc_group_list_internals().

00791 {
00792         prs_struct qbuf, rbuf;
00793         SAMR_Q_ENUM_DOM_ALIASES q;
00794         SAMR_R_ENUM_DOM_ALIASES r;
00795         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
00796         uint32 name_idx, i;
00797 
00798         DEBUG(10,("cli_samr_enum_als_groups starting at index %u\n", (unsigned int)*start_idx));
00799 
00800         ZERO_STRUCT(q);
00801         ZERO_STRUCT(r);
00802 
00803         /* Marshall data and send request */
00804 
00805         init_samr_q_enum_dom_aliases(&q, pol, *start_idx, size);
00806 
00807         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_ENUM_DOM_ALIASES,
00808                 q, r,
00809                 qbuf, rbuf,
00810                 samr_io_q_enum_dom_aliases,
00811                 samr_io_r_enum_dom_aliases,
00812                 NT_STATUS_UNSUCCESSFUL); 
00813 
00814         /* Return output parameters */
00815 
00816         result = r.status;
00817 
00818         if (!NT_STATUS_IS_OK(result) &&
00819             NT_STATUS_V(result) != NT_STATUS_V(STATUS_MORE_ENTRIES)) {
00820                 goto done;
00821         }
00822 
00823         *num_dom_aliases = r.num_entries2;
00824 
00825         if (*num_dom_aliases == 0)
00826                 goto done;
00827 
00828         if (!((*dom_aliases) = TALLOC_ARRAY(mem_ctx, struct acct_info, *num_dom_aliases))) {
00829                 result = NT_STATUS_NO_MEMORY;
00830                 goto done;
00831         }
00832 
00833         memset(*dom_aliases, 0, sizeof(struct acct_info) * *num_dom_aliases);
00834 
00835         name_idx = 0;
00836 
00837         for (i = 0; i < *num_dom_aliases; i++) {
00838 
00839                 (*dom_aliases)[i].rid = r.sam[i].rid;
00840 
00841                 if (r.sam[i].hdr_name.buffer) {
00842                         unistr2_to_ascii((*dom_aliases)[i].acct_name,
00843                                          &r.uni_grp_name[name_idx],
00844                                          sizeof(fstring) - 1);
00845                         name_idx++;
00846                 }
00847 
00848                 *start_idx = r.next_idx;
00849         }
00850 
00851  done:
00852         return result;
00853 }

NTSTATUS rpccli_samr_query_aliasmem ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND alias_pol,
uint32 *  num_mem,
DOM_SID **  sids 
)

cli_samr.c857 行で定義されています。

参照先 cliinit_samr_q_query_aliasmem()r_samr_query_aliasmem_info::num_sidsresultsamr_io_q_query_aliasmem()samr_io_r_query_aliasmem()DOM_SID2::sidr_samr_query_aliasmem_info::sidr_samr_query_aliasmem_info::status.

参照元 cac_SamClearAliasMembers()cac_SamGetAliasMembers()cmd_samr_query_aliasmem()rpc_fetch_domain_aliases()rpc_list_alias_members().

00861 {
00862         prs_struct qbuf, rbuf;
00863         SAMR_Q_QUERY_ALIASMEM q;
00864         SAMR_R_QUERY_ALIASMEM r;
00865         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
00866         uint32 i;
00867 
00868         DEBUG(10,("cli_samr_query_aliasmem\n"));
00869 
00870         ZERO_STRUCT(q);
00871         ZERO_STRUCT(r);
00872 
00873         /* Marshall data and send request */
00874 
00875         init_samr_q_query_aliasmem(&q, alias_pol);
00876 
00877         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_QUERY_ALIASMEM,
00878                 q, r,
00879                 qbuf, rbuf,
00880                 samr_io_q_query_aliasmem,
00881                 samr_io_r_query_aliasmem,
00882                 NT_STATUS_UNSUCCESSFUL); 
00883 
00884         /* Return output parameters */
00885 
00886         if (!NT_STATUS_IS_OK(result = r.status)) {
00887                 goto done;
00888         }
00889 
00890         *num_mem = r.num_sids;
00891 
00892         if (*num_mem == 0) {
00893                 *sids = NULL;
00894                 result = NT_STATUS_OK;
00895                 goto done;
00896         }
00897 
00898         if (!(*sids = TALLOC_ARRAY(mem_ctx, DOM_SID, *num_mem))) {
00899                 result = NT_STATUS_UNSUCCESSFUL;
00900                 goto done;
00901         }
00902 
00903         for (i = 0; i < *num_mem; i++) {
00904                 (*sids)[i] = r.sid[i].sid;
00905         }
00906 
00907  done:
00908         return result;
00909 }

NTSTATUS rpccli_samr_open_alias ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND domain_pol,
uint32  access_mask,
uint32  alias_rid,
POLICY_HND alias_pol 
)

cli_samr.c913 行で定義されています。

参照先 cliinit_samr_q_open_alias()r_samr_open_alias_info::polresultsamr_io_q_open_alias()samr_io_r_open_alias()r_samr_open_alias_info::status.

参照元 cac_SamOpenAlias()cmd_samr_delete_alias()cmd_samr_query_aliasmem()rpc_add_aliasmem()rpc_del_aliasmem()rpc_fetch_domain_aliases()rpc_group_delete_internals()rpc_group_list_internals()rpc_list_alias_members().

00917 {
00918         prs_struct qbuf, rbuf;
00919         SAMR_Q_OPEN_ALIAS q;
00920         SAMR_R_OPEN_ALIAS r;
00921         NTSTATUS result;
00922 
00923         DEBUG(10,("cli_samr_open_alias with rid 0x%x\n", alias_rid));
00924 
00925         ZERO_STRUCT(q);
00926         ZERO_STRUCT(r);
00927 
00928         /* Marshall data and send request */
00929 
00930         init_samr_q_open_alias(&q, domain_pol, access_mask, alias_rid);
00931 
00932         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_OPEN_ALIAS,
00933                 q, r,
00934                 qbuf, rbuf,
00935                 samr_io_q_open_alias,
00936                 samr_io_r_open_alias,
00937                 NT_STATUS_UNSUCCESSFUL); 
00938 
00939         /* Return output parameters */
00940 
00941         if (NT_STATUS_IS_OK(result = r.status)) {
00942                 *alias_pol = r.pol;
00943 #ifdef __INSURE__
00944                 alias_pol->marker = malloc(1);
00945 #endif
00946         }
00947 
00948         return result;
00949 }

NTSTATUS rpccli_samr_create_dom_alias ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND domain_pol,
const char *  name,
POLICY_HND alias_pol 
)

cli_samr.c953 行で定義されています。

参照先 r_samr_create_dom_alias_info::alias_polcliinit_samr_q_create_dom_alias()resultsamr_io_q_create_dom_alias()samr_io_r_create_dom_alias()r_samr_create_dom_alias_info::status.

参照元 cac_SamCreateAlias()cmd_samr_create_dom_alias()rpc_alias_add_internals().

00956 {
00957         prs_struct qbuf, rbuf;
00958         SAMR_Q_CREATE_DOM_ALIAS q;
00959         SAMR_R_CREATE_DOM_ALIAS r;
00960         NTSTATUS result;
00961 
00962         DEBUG(10,("cli_samr_create_dom_alias named %s\n", name));
00963 
00964         ZERO_STRUCT(q);
00965         ZERO_STRUCT(r);
00966 
00967         /* Marshall data and send request */
00968 
00969         init_samr_q_create_dom_alias(&q, domain_pol, name);
00970 
00971         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_CREATE_DOM_ALIAS,
00972                 q, r,
00973                 qbuf, rbuf,
00974                 samr_io_q_create_dom_alias,
00975                 samr_io_r_create_dom_alias,
00976                 NT_STATUS_UNSUCCESSFUL); 
00977 
00978         /* Return output parameters */
00979 
00980         if (NT_STATUS_IS_OK(result = r.status)) {
00981                 *alias_pol = r.alias_pol;
00982         }
00983 
00984         return result;
00985 }

NTSTATUS rpccli_samr_add_aliasmem ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND alias_pol,
DOM_SID member 
)

cli_samr.c989 行で定義されています。

参照先 cliinit_samr_q_add_aliasmem()resultsamr_io_q_add_aliasmem()samr_io_r_add_aliasmem()r_samr_add_alias_mem_info::status.

参照元 cac_SamAddAliasMember()cac_SamClearAliasMembers()cac_SamSetAliasMembers()rpc_add_aliasmem().

00991 {
00992         prs_struct qbuf, rbuf;
00993         SAMR_Q_ADD_ALIASMEM q;
00994         SAMR_R_ADD_ALIASMEM r;
00995         NTSTATUS result;
00996 
00997         DEBUG(10,("cli_samr_add_aliasmem"));
00998 
00999         ZERO_STRUCT(q);
01000         ZERO_STRUCT(r);
01001 
01002         /* Marshall data and send request */
01003 
01004         init_samr_q_add_aliasmem(&q, alias_pol, member);
01005 
01006         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_ADD_ALIASMEM,
01007                 q, r,
01008                 qbuf, rbuf,
01009                 samr_io_q_add_aliasmem,
01010                 samr_io_r_add_aliasmem,
01011                 NT_STATUS_UNSUCCESSFUL); 
01012 
01013         result = r.status;
01014 
01015         return result;
01016 }

NTSTATUS rpccli_samr_del_aliasmem ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND alias_pol,
DOM_SID member 
)

cli_samr.c1020 行で定義されています。

参照先 cliinit_samr_q_del_aliasmem()resultsamr_io_q_del_aliasmem()samr_io_r_del_aliasmem()r_samr_del_alias_mem_info::status.

参照元 cac_SamClearAliasMembers()cac_SamRemoveAliasMember()rpc_del_aliasmem().

01022 {
01023         prs_struct qbuf, rbuf;
01024         SAMR_Q_DEL_ALIASMEM q;
01025         SAMR_R_DEL_ALIASMEM r;
01026         NTSTATUS result;
01027 
01028         DEBUG(10,("cli_samr_del_aliasmem"));
01029 
01030         ZERO_STRUCT(q);
01031         ZERO_STRUCT(r);
01032 
01033         /* Marshall data and send request */
01034 
01035         init_samr_q_del_aliasmem(&q, alias_pol, member);
01036 
01037         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_DEL_ALIASMEM,
01038                 q, r,
01039                 qbuf, rbuf,
01040                 samr_io_q_del_aliasmem,
01041                 samr_io_r_del_aliasmem,
01042                 NT_STATUS_UNSUCCESSFUL); 
01043 
01044         result = r.status;
01045 
01046         return result;
01047 }

NTSTATUS rpccli_samr_query_alias_info ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND alias_pol,
uint16  switch_value,
ALIAS_INFO_CTR ctr 
)

cli_samr.c1051 行で定義されています。

参照先 cliSAMR_R_QUERY_ALIASINFO::ctrinit_samr_q_query_aliasinfo()resultsamr_io_q_query_aliasinfo()samr_io_r_query_aliasinfo()SAMR_R_QUERY_ALIASINFO::status.

参照元 cac_SamGetAliasInfo()rpc_group_list_internals().

01054 {
01055         prs_struct qbuf, rbuf;
01056         SAMR_Q_QUERY_ALIASINFO q;
01057         SAMR_R_QUERY_ALIASINFO r;
01058         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
01059 
01060         DEBUG(10,("cli_samr_query_alias_info\n"));
01061 
01062         ZERO_STRUCT(q);
01063         ZERO_STRUCT(r);
01064 
01065         /* Marshall data and send request */
01066 
01067         init_samr_q_query_aliasinfo(&q, alias_pol, switch_value);
01068 
01069         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_QUERY_ALIASINFO,
01070                 q, r,
01071                 qbuf, rbuf,
01072                 samr_io_q_query_aliasinfo,
01073                 samr_io_r_query_aliasinfo,
01074                 NT_STATUS_UNSUCCESSFUL); 
01075 
01076         /* Return output parameters */
01077 
01078         if (!NT_STATUS_IS_OK(result = r.status)) {
01079                 goto done;
01080         }
01081 
01082         *ctr = *r.ctr;
01083 
01084   done:
01085 
01086         return result;
01087 }

NTSTATUS rpccli_samr_query_dom_info ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND domain_pol,
uint16  switch_value,
SAM_UNK_CTR ctr 
)

cli_samr.c1091 行で定義されています。

参照先 clir_samr_query_domain_info::ctrinit_samr_q_query_domain_info()resultsamr_io_q_query_domain_info()samr_io_r_query_domain_info()r_samr_query_domain_info::status.

参照元 cac_SamGetDomainInfo()cac_SamGetDomainInfoCtr()cmd_samr_query_dominfo()msrpc_lockout_policy()msrpc_password_policy()rpc_info_internals()rpc_sh_acct_do()sequence_number().

01096 {
01097         prs_struct qbuf, rbuf;
01098         SAMR_Q_QUERY_DOMAIN_INFO q;
01099         SAMR_R_QUERY_DOMAIN_INFO r;
01100         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
01101 
01102         DEBUG(10,("cli_samr_query_dom_info\n"));
01103 
01104         ZERO_STRUCT(q);
01105         ZERO_STRUCT(r);
01106 
01107         /* Marshall data and send request */
01108 
01109         init_samr_q_query_domain_info(&q, domain_pol, switch_value);
01110 
01111         r.ctr = ctr;
01112 
01113         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_QUERY_DOMAIN_INFO,
01114                 q, r,
01115                 qbuf, rbuf,
01116                 samr_io_q_query_domain_info,
01117                 samr_io_r_query_domain_info,
01118                 NT_STATUS_UNSUCCESSFUL); 
01119 
01120         /* Return output parameters */
01121 
01122         if (!NT_STATUS_IS_OK(result = r.status)) {
01123                 goto done;
01124         }
01125 
01126  done:
01127 
01128         return result;
01129 }

NTSTATUS rpccli_samr_query_dom_info2 ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND domain_pol,
uint16  switch_value,
SAM_UNK_CTR ctr 
)

cli_samr.c1133 行で定義されています。

参照先 clir_samr_query_domain_info2::ctrinit_samr_q_query_domain_info2()resultsamr_io_q_query_domain_info2()samr_io_r_query_domain_info2()r_samr_query_domain_info2::status.

01138 {
01139         prs_struct qbuf, rbuf;
01140         SAMR_Q_QUERY_DOMAIN_INFO2 q;
01141         SAMR_R_QUERY_DOMAIN_INFO2 r;
01142         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
01143 
01144         DEBUG(10,("cli_samr_query_dom_info2\n"));
01145 
01146         ZERO_STRUCT(q);
01147         ZERO_STRUCT(r);
01148 
01149         /* Marshall data and send request */
01150 
01151         init_samr_q_query_domain_info2(&q, domain_pol, switch_value);
01152 
01153         r.ctr = ctr;
01154 
01155         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_QUERY_DOMAIN_INFO2,
01156                 q, r,
01157                 qbuf, rbuf,
01158                 samr_io_q_query_domain_info2,
01159                 samr_io_r_query_domain_info2,
01160                 NT_STATUS_UNSUCCESSFUL); 
01161 
01162         /* Return output parameters */
01163 
01164         if (!NT_STATUS_IS_OK(result = r.status)) {
01165                 goto done;
01166         }
01167 
01168  done:
01169 
01170         return result;
01171 }

NTSTATUS rpccli_samr_set_domain_info ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND domain_pol,
uint16  switch_value,
SAM_UNK_CTR ctr 
)

cli_samr.c1175 行で定義されています。

参照先 cliinit_samr_q_set_domain_info()resultsamr_io_q_set_domain_info()samr_io_r_set_domain_info()r_samr_set_domain_info::status.

参照元 rpc_sh_acct_do().

01180 {
01181         prs_struct qbuf, rbuf;
01182         SAMR_Q_SET_DOMAIN_INFO q;
01183         SAMR_R_SET_DOMAIN_INFO r;
01184         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
01185 
01186         DEBUG(10,("cli_samr_set_domain_info\n"));
01187 
01188         ZERO_STRUCT(q);
01189         ZERO_STRUCT(r);
01190 
01191         /* Marshall data and send request */
01192 
01193         init_samr_q_set_domain_info(&q, domain_pol, switch_value, ctr);
01194 
01195         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_SET_DOMAIN_INFO,
01196                 q, r,
01197                 qbuf, rbuf,
01198                 samr_io_q_set_domain_info,
01199                 samr_io_r_set_domain_info,
01200                 NT_STATUS_UNSUCCESSFUL); 
01201 
01202         /* Return output parameters */
01203 
01204         if (!NT_STATUS_IS_OK(result = r.status)) {
01205                 goto done;
01206         }
01207 
01208  done:
01209 
01210         return result;
01211 }

NTSTATUS rpccli_samr_chgpasswd_user ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
const char *  username,
const char *  newpassword,
const char *  oldpassword 
)

cli_samr.c1215 行で定義されています。

参照先 clicli_state::desthostE_deshash()E_md4hash()E_old_pw_hash()encode_pw_buffer()init_samr_q_chgpasswd_user()resultSamOEMhash()samr_io_q_chgpasswd_user()samr_io_r_chgpasswd_user()r_samr_chgpasswd_user_info::statustalloc_asprintf().

参照元 cac_SamUserChangePasswd()cmd_samr_chgpasswd2()remote_password_change()winbindd_dual_pam_chauthtok().

01220 {
01221         prs_struct qbuf, rbuf;
01222         SAMR_Q_CHGPASSWD_USER q;
01223         SAMR_R_CHGPASSWD_USER r;
01224         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
01225 
01226         uchar new_nt_password[516];
01227         uchar new_lm_password[516];
01228         uchar old_nt_hash[16];
01229         uchar old_lanman_hash[16];
01230         uchar old_nt_hash_enc[16];
01231         uchar old_lanman_hash_enc[16];
01232 
01233         uchar new_nt_hash[16];
01234         uchar new_lanman_hash[16];
01235 
01236         char *srv_name_slash = talloc_asprintf(mem_ctx, "\\\\%s", cli->cli->desthost);
01237 
01238         DEBUG(10,("rpccli_samr_chgpasswd_user\n"));
01239 
01240         ZERO_STRUCT(q);
01241         ZERO_STRUCT(r);
01242 
01243         /* Calculate the MD4 hash (NT compatible) of the password */
01244         E_md4hash(oldpassword, old_nt_hash);
01245         E_md4hash(newpassword, new_nt_hash);
01246 
01247         if (lp_client_lanman_auth() 
01248             && E_deshash(newpassword, new_lanman_hash) 
01249             && E_deshash(oldpassword, old_lanman_hash)) {
01250                 /* E_deshash returns false for 'long' passwords (> 14
01251                    DOS chars).  This allows us to match Win2k, which
01252                    does not store a LM hash for these passwords (which
01253                    would reduce the effective password length to 14) */
01254 
01255                 encode_pw_buffer(new_lm_password, newpassword, STR_UNICODE);
01256 
01257                 SamOEMhash( new_lm_password, old_nt_hash, 516);
01258                 E_old_pw_hash( new_nt_hash, old_lanman_hash, old_lanman_hash_enc);
01259         } else {
01260                 ZERO_STRUCT(new_lm_password);
01261                 ZERO_STRUCT(old_lanman_hash_enc);
01262         }
01263 
01264         encode_pw_buffer(new_nt_password, newpassword, STR_UNICODE);
01265         
01266         SamOEMhash( new_nt_password, old_nt_hash, 516);
01267         E_old_pw_hash( new_nt_hash, old_nt_hash, old_nt_hash_enc);
01268 
01269         /* Marshall data and send request */
01270 
01271         init_samr_q_chgpasswd_user(&q, srv_name_slash, username, 
01272                                    new_nt_password, 
01273                                    old_nt_hash_enc, 
01274                                    new_lm_password,
01275                                    old_lanman_hash_enc);
01276 
01277         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_CHGPASSWD_USER,
01278                 q, r,
01279                 qbuf, rbuf,
01280                 samr_io_q_chgpasswd_user,
01281                 samr_io_r_chgpasswd_user,
01282                 NT_STATUS_UNSUCCESSFUL); 
01283 
01284         /* Return output parameters */
01285 
01286         if (!NT_STATUS_IS_OK(result = r.status)) {
01287                 goto done;
01288         }
01289 
01290  done:
01291 
01292         return result;
01293 }

NTSTATUS rpccli_samr_chng_pswd_auth_crap ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
const char *  username,
DATA_BLOB  new_nt_password,
DATA_BLOB  old_nt_hash_enc,
DATA_BLOB  new_lm_password,
DATA_BLOB  old_lm_hash_enc 
)

cli_samr.c1297 行で定義されています。

参照先 clidata_blob_::datacli_state::desthostinit_samr_q_chgpasswd_user()resultsamr_io_q_chgpasswd_user()samr_io_r_chgpasswd_user()r_samr_chgpasswd_user_info::statustalloc_asprintf().

参照元 winbindd_dual_pam_chng_pswd_auth_crap().

01304 {
01305         prs_struct qbuf, rbuf;
01306         SAMR_Q_CHGPASSWD_USER q;
01307         SAMR_R_CHGPASSWD_USER r;
01308         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
01309 
01310         char *srv_name_slash = talloc_asprintf(mem_ctx, "\\\\%s", cli->cli->desthost);
01311 
01312         DEBUG(10,("rpccli_samr_chng_pswd_auth_crap\n"));
01313 
01314         ZERO_STRUCT(q);
01315         ZERO_STRUCT(r);
01316 
01317         /* Marshall data and send request */
01318 
01319         init_samr_q_chgpasswd_user(&q, srv_name_slash, username, 
01320                                    new_nt_password.data, 
01321                                    old_nt_hash_enc.data, 
01322                                    new_lm_password.data,
01323                                    old_lm_hash_enc.data);
01324 
01325         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_CHGPASSWD_USER,
01326                 q, r,
01327                 qbuf, rbuf,
01328                 samr_io_q_chgpasswd_user,
01329                 samr_io_r_chgpasswd_user,
01330                 NT_STATUS_UNSUCCESSFUL); 
01331 
01332         /* Return output parameters */
01333 
01334         if (!NT_STATUS_IS_OK(result = r.status)) {
01335                 goto done;
01336         }
01337 
01338  done:
01339 
01340         return result;
01341 }

NTSTATUS rpccli_samr_chgpasswd3 ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
const char *  username,
const char *  newpassword,
const char *  oldpassword,
SAM_UNK_INFO_1 info,
SAMR_CHANGE_REJECT reject 
)

cli_samr.c1346 行で定義されています。

参照先 clicli_state::desthostE_deshash()E_md4hash()E_old_pw_hash()encode_pw_buffer()r_samr_chgpasswd_user3::infoinit_samr_q_chgpasswd_user3()r_samr_chgpasswd_user3::rejectSamOEMhash()samr_io_q_chgpasswd_user3()samr_io_r_chgpasswd_user3()r_samr_chgpasswd_user3::statustalloc_asprintf().

参照元 cmd_samr_chgpasswd3()winbindd_dual_pam_chauthtok().

01353 {
01354         prs_struct qbuf, rbuf;
01355         SAMR_Q_CHGPASSWD_USER3 q;
01356         SAMR_R_CHGPASSWD_USER3 r;
01357 
01358         uchar new_nt_password[516];
01359         uchar new_lm_password[516];
01360         uchar old_nt_hash[16];
01361         uchar old_lanman_hash[16];
01362         uchar old_nt_hash_enc[16];
01363         uchar old_lanman_hash_enc[16];
01364 
01365         uchar new_nt_hash[16];
01366         uchar new_lanman_hash[16];
01367 
01368         char *srv_name_slash = talloc_asprintf(mem_ctx, "\\\\%s", cli->cli->desthost);
01369 
01370         DEBUG(10,("rpccli_samr_chgpasswd_user3\n"));
01371 
01372         ZERO_STRUCT(q);
01373         ZERO_STRUCT(r);
01374 
01375         /* Calculate the MD4 hash (NT compatible) of the password */
01376         E_md4hash(oldpassword, old_nt_hash);
01377         E_md4hash(newpassword, new_nt_hash);
01378 
01379         if (lp_client_lanman_auth() 
01380             && E_deshash(newpassword, new_lanman_hash) 
01381             && E_deshash(oldpassword, old_lanman_hash)) {
01382                 /* E_deshash returns false for 'long' passwords (> 14
01383                    DOS chars).  This allows us to match Win2k, which
01384                    does not store a LM hash for these passwords (which
01385                    would reduce the effective password length to 14) */
01386 
01387                 encode_pw_buffer(new_lm_password, newpassword, STR_UNICODE);
01388 
01389                 SamOEMhash( new_lm_password, old_nt_hash, 516);
01390                 E_old_pw_hash( new_nt_hash, old_lanman_hash, old_lanman_hash_enc);
01391         } else {
01392                 ZERO_STRUCT(new_lm_password);
01393                 ZERO_STRUCT(old_lanman_hash_enc);
01394         }
01395 
01396         encode_pw_buffer(new_nt_password, newpassword, STR_UNICODE);
01397         
01398         SamOEMhash( new_nt_password, old_nt_hash, 516);
01399         E_old_pw_hash( new_nt_hash, old_nt_hash, old_nt_hash_enc);
01400 
01401         /* Marshall data and send request */
01402 
01403         init_samr_q_chgpasswd_user3(&q, srv_name_slash, username, 
01404                                     new_nt_password, 
01405                                     old_nt_hash_enc, 
01406                                     new_lm_password,
01407                                     old_lanman_hash_enc);
01408         r.info = info;
01409         r.reject = reject;
01410 
01411         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_CHGPASSWD_USER3,
01412                 q, r,
01413                 qbuf, rbuf,
01414                 samr_io_q_chgpasswd_user3,
01415                 samr_io_r_chgpasswd_user3,
01416                 NT_STATUS_UNSUCCESSFUL); 
01417 
01418         /* Return output parameters */
01419 
01420         return r.status;
01421 }

void get_query_dispinfo_params ( int  loop_count,
uint32 *  max_entries,
uint32 *  max_size 
)

cli_samr.c1428 行で定義されています。

参照元 cac_SamGetDisplayInfo()cmd_samr_query_dispinfo()query_user_list()rpc_group_list_internals()rpc_user_list_internals().

01430 {
01431         switch(loop_count) {
01432         case 0:
01433                 *max_entries = 512;
01434                 *max_size = 16383;
01435                 break;
01436         case 1:
01437                 *max_entries = 1024;
01438                 *max_size = 32766;
01439                 break;
01440         case 2:
01441                 *max_entries = 2048;
01442                 *max_size = 65532;
01443                 break;
01444         case 3:
01445                 *max_entries = 4096;
01446                 *max_size = 131064;
01447                 break;
01448         default:              /* loop_count >= 4 */
01449                 *max_entries = 4096;
01450                 *max_size = 131071;
01451                 break;
01452         }
01453 }                    

NTSTATUS rpccli_samr_query_dispinfo ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND domain_pol,
uint32 *  start_idx,
uint16  switch_value,
uint32 *  num_entries,
uint32  max_entries,
uint32  max_size,
SAM_DISPINFO_CTR ctr 
)

cli_samr.c1457 行で定義されています。

参照先 clir_samr_query_dispinfo_info::ctrinit_samr_q_query_dispinfo()r_samr_query_dispinfo_info::num_entriesresultsamr_io_q_query_dispinfo()samr_io_r_query_dispinfo()r_samr_query_dispinfo_info::status.

参照元 cac_SamGetDisplayInfo()cmd_samr_query_dispinfo()query_user_list()rpc_group_list_internals()rpc_user_list_internals().

01463 {
01464         prs_struct qbuf, rbuf;
01465         SAMR_Q_QUERY_DISPINFO q;
01466         SAMR_R_QUERY_DISPINFO r;
01467         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
01468 
01469         DEBUG(10,("cli_samr_query_dispinfo for start_idx = %u\n", *start_idx));
01470 
01471         ZERO_STRUCT(q);
01472         ZERO_STRUCT(r);
01473 
01474         *num_entries = 0;
01475 
01476         /* Marshall data and send request */
01477 
01478         init_samr_q_query_dispinfo(&q, domain_pol, switch_value,
01479                                    *start_idx, max_entries, max_size);
01480 
01481         r.ctr = ctr;
01482 
01483         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_QUERY_DISPINFO,
01484                 q, r,
01485                 qbuf, rbuf,
01486                 samr_io_q_query_dispinfo,
01487                 samr_io_r_query_dispinfo,
01488                 NT_STATUS_UNSUCCESSFUL); 
01489 
01490         /* Return output parameters */
01491 
01492         result = r.status;
01493 
01494         if (!NT_STATUS_IS_OK(result) &&
01495             NT_STATUS_V(result) != NT_STATUS_V(STATUS_MORE_ENTRIES)) {
01496                 goto done;
01497         }
01498 
01499         *num_entries = r.num_entries;
01500         *start_idx += r.num_entries;  /* No next_idx in this structure! */
01501 
01502  done:
01503         return result;
01504 }

NTSTATUS rpccli_samr_lookup_rids ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND domain_pol,
uint32  num_rids,
uint32 *  rids,
uint32 *  num_names,
char ***  names,
uint32 **  name_types 
)

cli_samr.c1509 行で定義されています。

参照先 cliinit_samr_q_lookup_rids()r_samr_lookup_rids_info::num_names1resultsamr_io_q_lookup_rids()samr_io_r_lookup_rids()r_samr_lookup_rids_info::statustalloc_strdup()r_samr_lookup_rids_info::typer_samr_lookup_rids_info::uni_nameunistr2_to_ascii().

参照元 cac_SamGetNamesFromRids()cmd_samr_lookup_rids()lookup_groupmem()rpc_list_group_members()rpc_user_info_internals().

01515 {
01516         prs_struct qbuf, rbuf;
01517         SAMR_Q_LOOKUP_RIDS q;
01518         SAMR_R_LOOKUP_RIDS r;
01519         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
01520         uint32 i;
01521 
01522         DEBUG(10,("cli_samr_lookup_rids\n"));
01523 
01524         if (num_rids > 1000) {
01525                 DEBUG(2, ("cli_samr_lookup_rids: warning: NT4 can crash if "
01526                           "more than ~1000 rids are looked up at once.\n"));
01527         }
01528 
01529         ZERO_STRUCT(q);
01530         ZERO_STRUCT(r);
01531 
01532         /* Marshall data and send request */
01533 
01534         init_samr_q_lookup_rids(mem_ctx, &q, domain_pol, 1000, num_rids, rids);
01535 
01536         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_LOOKUP_RIDS,
01537                 q, r,
01538                 qbuf, rbuf,
01539                 samr_io_q_lookup_rids,
01540                 samr_io_r_lookup_rids,
01541                 NT_STATUS_UNSUCCESSFUL); 
01542 
01543         /* Return output parameters */
01544 
01545         result = r.status;
01546 
01547         if (!NT_STATUS_IS_OK(result) &&
01548             !NT_STATUS_EQUAL(result, STATUS_SOME_UNMAPPED))
01549                 goto done;
01550 
01551         if (r.num_names1 == 0) {
01552                 *num_names = 0;
01553                 *names = NULL;
01554                 goto done;
01555         }
01556 
01557         *num_names = r.num_names1;
01558         *names = TALLOC_ARRAY(mem_ctx, char *, r.num_names1);
01559         *name_types = TALLOC_ARRAY(mem_ctx, uint32, r.num_names1);
01560 
01561         if ((*names == NULL) || (*name_types == NULL)) {
01562                 TALLOC_FREE(*names);
01563                 TALLOC_FREE(*name_types);
01564                 return NT_STATUS_NO_MEMORY;
01565         }
01566 
01567         for (i = 0; i < r.num_names1; i++) {
01568                 fstring tmp;
01569 
01570                 unistr2_to_ascii(tmp, &r.uni_name[i], sizeof(tmp) - 1);
01571                 (*names)[i] = talloc_strdup(mem_ctx, tmp);
01572                 (*name_types)[i] = r.type[i];
01573         }
01574 
01575  done:
01576 
01577         return result;
01578 }

NTSTATUS rpccli_samr_lookup_names ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND domain_pol,
uint32  flags,
uint32  num_names,
const char **  names,
uint32 *  num_rids,
uint32 **  rids,
uint32 **  rid_types 
)

cli_samr.c1582 行で定義されています。

参照先 cliinit_samr_q_lookup_names()r_samr_lookup_names_info::num_rids1resultr_samr_lookup_names_info::ridssamr_io_q_lookup_names()samr_io_r_lookup_names()r_samr_lookup_names_info::statusr_samr_lookup_names_info::types.

参照元 cac_SamGetRidsFromNames()cac_SamOpenUser()cmd_samr_delete_alias()cmd_samr_delete_dom_user()cmd_samr_lookup_names()cmd_samr_query_user()net_rpc_join_newstyle()netdom_join_domain()netdom_leave_domain()rpc_add_groupmem()rpc_del_groupmem()rpc_group_delete_internals()rpc_group_members_internals()rpc_group_rename_internals()rpc_trustdom_del_internals()rpc_user_add_internals()rpc_user_del_internals()rpc_user_info_internals()rpc_user_password_internals()rpc_user_rename_internals().

01587 {
01588         prs_struct qbuf, rbuf;
01589         SAMR_Q_LOOKUP_NAMES q;
01590         SAMR_R_LOOKUP_NAMES r;
01591         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
01592         uint32 i;
01593 
01594         DEBUG(10,("cli_samr_lookup_names\n"));
01595 
01596         ZERO_STRUCT(q);
01597         ZERO_STRUCT(r);
01598 
01599         /* Marshall data and send request */
01600 
01601         init_samr_q_lookup_names(mem_ctx, &q, domain_pol, flags,
01602                                  num_names, names);
01603 
01604         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_LOOKUP_NAMES,
01605                 q, r,
01606                 qbuf, rbuf,
01607                 samr_io_q_lookup_names,
01608                 samr_io_r_lookup_names,
01609                 NT_STATUS_UNSUCCESSFUL); 
01610 
01611         /* Return output parameters */
01612 
01613         if (!NT_STATUS_IS_OK(result = r.status)) {
01614                 goto done;
01615         }
01616 
01617         if (r.num_rids1 == 0) {
01618                 *num_rids = 0;
01619                 goto done;
01620         }
01621 
01622         *num_rids = r.num_rids1;
01623         *rids = TALLOC_ARRAY(mem_ctx, uint32, r.num_rids1);
01624         *rid_types = TALLOC_ARRAY(mem_ctx, uint32, r.num_rids1);
01625 
01626         if ((*rids == NULL) || (*rid_types == NULL)) {
01627                 TALLOC_FREE(*rids);
01628                 TALLOC_FREE(*rid_types);
01629                 return NT_STATUS_NO_MEMORY;
01630         }
01631 
01632         for (i = 0; i < r.num_rids1; i++) {
01633                 (*rids)[i] = r.rids[i];
01634                 (*rid_types)[i] = r.types[i];
01635         }
01636 
01637  done:
01638 
01639         return result;
01640 }

NTSTATUS rpccli_samr_create_dom_user ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND domain_pol,
const char *  acct_name,
uint32  acb_info,
uint32  unknown,
POLICY_HND user_pol,
uint32 *  rid 
)

cli_samr.c1644 行で定義されています。

参照先 cliinit_samr_q_create_user()resultsamr_io_q_create_user()samr_io_r_create_user()r_samr_create_user_info::statusr_samr_create_user_info::user_polr_samr_create_user_info::user_rid.

参照元 cac_SamCreateUser()cmd_samr_create_dom_user()net_rpc_join_newstyle()netdom_join_domain()rpc_trustdom_add_internals()rpc_user_add_internals()samr_create_dom_user().

01648 {
01649         prs_struct qbuf, rbuf;
01650         SAMR_Q_CREATE_USER q;
01651         SAMR_R_CREATE_USER r;
01652         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
01653 
01654         DEBUG(10,("cli_samr_create_dom_user %s\n", acct_name));
01655 
01656         ZERO_STRUCT(q);
01657         ZERO_STRUCT(r);
01658 
01659         /* Marshall data and send request */
01660 
01661         init_samr_q_create_user(&q, domain_pol, acct_name, acb_info, unknown);
01662 
01663         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_CREATE_USER,
01664                 q, r,
01665                 qbuf, rbuf,
01666                 samr_io_q_create_user,
01667                 samr_io_r_create_user,
01668                 NT_STATUS_UNSUCCESSFUL); 
01669 
01670         /* Return output parameters */
01671 
01672         if (!NT_STATUS_IS_OK(result = r.status)) {
01673                 goto done;
01674         }
01675 
01676         if (user_pol)
01677                 *user_pol = r.user_pol;
01678 
01679         if (rid)
01680                 *rid = r.user_rid;
01681 
01682  done:
01683 
01684         return result;
01685 }

NTSTATUS rpccli_samr_set_userinfo ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
const POLICY_HND user_pol,
uint16  switch_value,
DATA_BLOB sess_key,
SAM_USERINFO_CTR ctr 
)

cli_samr.c1689 行で定義されています。

参照先 cliq_samr_set_user_info::ctrsam_userinfo_ctr_info::idsam_userinfo_ctr_info::infoinit_samr_q_set_userinfo()data_blob_::lengthprs_init()resultsamr_io_q_set_userinfo()samr_io_r_set_userinfo()r_samr_set_user_info::status.

参照元 cac_SamRenameUser()cac_SamSetPassword()cac_SamSetUserInfo()cac_SamSetUserInfoCtr()net_rpc_join_newstyle()netdom_join_domain()rpc_trustdom_add_internals()rpc_user_add_internals()rpc_user_password_internals()rpc_user_rename_internals().

01692 {
01693         prs_struct qbuf, rbuf;
01694         SAMR_Q_SET_USERINFO q;
01695         SAMR_R_SET_USERINFO r;
01696         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
01697 
01698         DEBUG(10,("cli_samr_set_userinfo\n"));
01699 
01700         ZERO_STRUCT(q);
01701         ZERO_STRUCT(r);
01702 
01703         if (!sess_key->length) {
01704                 DEBUG(1, ("No user session key\n"));
01705                 return NT_STATUS_NO_USER_SESSION_KEY;
01706         }
01707 
01708         /* Initialise parse structures */
01709 
01710         prs_init(&qbuf, RPC_MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
01711         prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
01712 
01713         /* Marshall data and send request */
01714 
01715         q.ctr = ctr;
01716 
01717         init_samr_q_set_userinfo(&q, user_pol, sess_key, switch_value, 
01718                                  ctr->info.id);
01719 
01720         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_SET_USERINFO,
01721                 q, r,
01722                 qbuf, rbuf,
01723                 samr_io_q_set_userinfo,
01724                 samr_io_r_set_userinfo,
01725                 NT_STATUS_UNSUCCESSFUL); 
01726 
01727         /* Return output parameters */
01728 
01729         if (!NT_STATUS_IS_OK(result = r.status)) {
01730                 goto done;
01731         }
01732 
01733  done:
01734 
01735         return result;
01736 }

NTSTATUS rpccli_samr_set_userinfo2 ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
const POLICY_HND user_pol,
uint16  switch_value,
DATA_BLOB sess_key,
SAM_USERINFO_CTR ctr 
)

cli_samr.c1740 行で定義されています。

参照先 cliinit_samr_q_set_userinfo2()data_blob_::lengthresultsamr_io_q_set_userinfo2()samr_io_r_set_userinfo2()r_samr_set_user_info2::status.

参照元 cac_SamDisableUser()cac_SamEnableUser()cac_SamSetUserInfo()net_rpc_join_newstyle()netdom_join_domain()netdom_leave_domain()rpc_sh_user_flag_edit_internals()rpc_sh_user_str_edit_internals()samr_set_user_info2().

01743 {
01744         prs_struct qbuf, rbuf;
01745         SAMR_Q_SET_USERINFO2 q;
01746         SAMR_R_SET_USERINFO2 r;
01747         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
01748 
01749         DEBUG(10,("cli_samr_set_userinfo2\n"));
01750 
01751         if (!sess_key->length) {
01752                 DEBUG(1, ("No user session key\n"));
01753                 return NT_STATUS_NO_USER_SESSION_KEY;
01754         }
01755 
01756         ZERO_STRUCT(q);
01757         ZERO_STRUCT(r);
01758 
01759         /* Marshall data and send request */
01760 
01761         init_samr_q_set_userinfo2(&q, user_pol, sess_key, switch_value, ctr);
01762 
01763         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_SET_USERINFO2,
01764                 q, r,
01765                 qbuf, rbuf,
01766                 samr_io_q_set_userinfo2,
01767                 samr_io_r_set_userinfo2,
01768                 NT_STATUS_UNSUCCESSFUL); 
01769 
01770         /* Return output parameters */
01771 
01772         if (!NT_STATUS_IS_OK(result = r.status)) {
01773                 goto done;
01774         }
01775 
01776  done:
01777 
01778         return result;
01779 }

NTSTATUS rpccli_samr_delete_dom_group ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND group_pol 
)

cli_samr.c1783 行で定義されています。

参照先 cliinit_samr_q_delete_dom_group()resultsamr_io_q_delete_dom_group()samr_io_r_delete_dom_group()r_samr_delete_dom_group_info::status.

参照元 cac_SamDeleteGroup()rpc_group_delete_internals().

01785 {
01786         prs_struct qbuf, rbuf;
01787         SAMR_Q_DELETE_DOM_GROUP q;
01788         SAMR_R_DELETE_DOM_GROUP r;
01789         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
01790 
01791         DEBUG(10,("cli_samr_delete_dom_group\n"));
01792 
01793         ZERO_STRUCT(q);
01794         ZERO_STRUCT(r);
01795 
01796         /* Marshall data and send request */
01797 
01798         init_samr_q_delete_dom_group(&q, group_pol);
01799 
01800         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_DELETE_DOM_GROUP,
01801                 q, r,
01802                 qbuf, rbuf,
01803                 samr_io_q_delete_dom_group,
01804                 samr_io_r_delete_dom_group,
01805                 NT_STATUS_UNSUCCESSFUL); 
01806 
01807         /* Return output parameters */
01808 
01809         result = r.status;
01810 
01811         return result;
01812 }

NTSTATUS rpccli_samr_delete_dom_alias ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND alias_pol 
)

cli_samr.c1816 行で定義されています。

参照先 cliinit_samr_q_delete_dom_alias()resultsamr_io_q_delete_dom_alias()samr_io_r_delete_dom_alias()r_samr_delete_dom_alias_info::status.

参照元 cac_SamDeleteAlias()cmd_samr_delete_alias()rpc_group_delete_internals().

01818 {
01819         prs_struct qbuf, rbuf;
01820         SAMR_Q_DELETE_DOM_ALIAS q;
01821         SAMR_R_DELETE_DOM_ALIAS r;
01822         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
01823 
01824         DEBUG(10,("cli_samr_delete_dom_alias\n"));
01825 
01826         ZERO_STRUCT(q);
01827         ZERO_STRUCT(r);
01828 
01829         /* Marshall data and send request */
01830 
01831         init_samr_q_delete_dom_alias(&q, alias_pol);
01832 
01833         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_DELETE_DOM_ALIAS,
01834                 q, r,
01835                 qbuf, rbuf,
01836                 samr_io_q_delete_dom_alias,
01837                 samr_io_r_delete_dom_alias,
01838                 NT_STATUS_UNSUCCESSFUL); 
01839 
01840         /* Return output parameters */
01841 
01842         result = r.status;
01843 
01844         return result;
01845 }

NTSTATUS rpccli_samr_delete_dom_user ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND user_pol 
)

cli_samr.c1849 行で定義されています。

参照先 cliinit_samr_q_delete_dom_user()resultsamr_io_q_delete_dom_user()samr_io_r_delete_dom_user()r_samr_delete_dom_user_info::status.

参照元 cac_SamDeleteUser()cmd_samr_delete_dom_user()rpc_trustdom_del_internals()rpc_user_add_internals()rpc_user_del_internals()samr_delete_dom_user().

01851 {
01852         prs_struct qbuf, rbuf;
01853         SAMR_Q_DELETE_DOM_USER q;
01854         SAMR_R_DELETE_DOM_USER r;
01855         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
01856 
01857         DEBUG(10,("cli_samr_delete_dom_user\n"));
01858 
01859         ZERO_STRUCT(q);
01860         ZERO_STRUCT(r);
01861 
01862         /* Marshall data and send request */
01863 
01864         init_samr_q_delete_dom_user(&q, user_pol);
01865 
01866         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_DELETE_DOM_USER,
01867                 q, r,
01868                 qbuf, rbuf,
01869                 samr_io_q_delete_dom_user,
01870                 samr_io_r_delete_dom_user,
01871                 NT_STATUS_UNSUCCESSFUL); 
01872 
01873         /* Return output parameters */
01874 
01875         result = r.status;
01876 
01877         return result;
01878 }

NTSTATUS rpccli_samr_remove_sid_foreign_domain ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND user_pol,
DOM_SID sid 
)

cli_samr.c1882 行で定義されています。

参照先 cliinit_samr_q_remove_sid_foreign_domain()resultsamr_io_q_remove_sid_foreign_domain()samr_io_r_remove_sid_foreign_domain()r_samr_remove_sid_foreign_domain_info::status.

参照元 rpc_trustdom_del_internals().

01886 {
01887         prs_struct qbuf, rbuf;
01888         SAMR_Q_REMOVE_SID_FOREIGN_DOMAIN q;
01889         SAMR_R_REMOVE_SID_FOREIGN_DOMAIN r;
01890         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
01891 
01892         DEBUG(10,("cli_samr_remove_sid_foreign_domain\n"));
01893 
01894         ZERO_STRUCT(q);
01895         ZERO_STRUCT(r);
01896 
01897         /* Marshall data and send request */
01898 
01899         init_samr_q_remove_sid_foreign_domain(&q, user_pol, sid);
01900 
01901         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_REMOVE_SID_FOREIGN_DOMAIN,
01902                 q, r,
01903                 qbuf, rbuf,
01904                 samr_io_q_remove_sid_foreign_domain,
01905                 samr_io_r_remove_sid_foreign_domain,
01906                 NT_STATUS_UNSUCCESSFUL); 
01907 
01908         /* Return output parameters */
01909 
01910         result = r.status;
01911 
01912         return result;
01913 }

NTSTATUS rpccli_samr_query_sec_obj ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND user_pol,
uint32  sec_info,
TALLOC_CTX ctx,
SEC_DESC_BUF **  sec_desc_buf 
)

cli_samr.c1917 行で定義されています。

参照先 r_samr_query_sec_obj_info::bufclidup_sec_desc_buf()init_samr_q_query_sec_obj()resultsamr_io_q_query_sec_obj()samr_io_r_query_sec_obj()r_samr_query_sec_obj_info::status.

参照元 cac_SamGetSecurityObject()cmd_samr_query_sec_obj().

01920 {
01921         prs_struct qbuf, rbuf;
01922         SAMR_Q_QUERY_SEC_OBJ q;
01923         SAMR_R_QUERY_SEC_OBJ r;
01924         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
01925 
01926         DEBUG(10,("cli_samr_query_sec_obj\n"));
01927 
01928         ZERO_STRUCT(q);
01929         ZERO_STRUCT(r);
01930 
01931         /* Marshall data and send request */
01932 
01933         init_samr_q_query_sec_obj(&q, user_pol, sec_info);
01934 
01935         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_QUERY_SEC_OBJECT,
01936                 q, r,
01937                 qbuf, rbuf,
01938                 samr_io_q_query_sec_obj,
01939                 samr_io_r_query_sec_obj,
01940                 NT_STATUS_UNSUCCESSFUL); 
01941 
01942         /* Return output parameters */
01943 
01944         result = r.status;
01945         *sec_desc_buf=dup_sec_desc_buf(ctx, r.buf);
01946 
01947         return result;
01948 }

NTSTATUS rpccli_samr_set_sec_obj ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND user_pol,
uint32  sec_info,
SEC_DESC_BUF sec_desc_buf 
)

cli_samr.c1952 行で定義されています。

参照先 cliinit_samr_q_set_sec_obj()resultsamr_io_q_set_sec_obj()samr_io_r_set_sec_obj()r_samr_set_sec_obj_info::status.

01955 {
01956         prs_struct qbuf, rbuf;
01957         SAMR_Q_SET_SEC_OBJ q;
01958         SAMR_R_SET_SEC_OBJ r;
01959         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
01960 
01961         DEBUG(10,("cli_samr_set_sec_obj\n"));
01962 
01963         ZERO_STRUCT(q);
01964         ZERO_STRUCT(r);
01965 
01966         /* Marshall data and send request */
01967 
01968         init_samr_q_set_sec_obj(&q, user_pol, sec_info, sec_desc_buf);
01969 
01970         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_SET_SEC_OBJECT,
01971                 q, r,
01972                 qbuf, rbuf,
01973                 samr_io_q_set_sec_obj,
01974                 samr_io_r_set_sec_obj,
01975                 NT_STATUS_UNSUCCESSFUL); 
01976 
01977         /* Return output parameters */
01978 
01979         result = r.status;
01980 
01981         return result;
01982 }

NTSTATUS rpccli_samr_get_dom_pwinfo ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
uint16 *  min_pwd_length,
uint32 *  password_properties 
)

cli_samr.c1987 行で定義されています。

参照先 clicli_state::desthostinit_samr_q_get_dom_pwinfo()r_samr_get_dom_pwinfo::min_pwd_lengthr_samr_get_dom_pwinfo::password_propertiesresultsamr_io_q_get_dom_pwinfo()samr_io_r_get_dom_pwinfo()r_samr_get_dom_pwinfo::status.

参照元 cmd_samr_get_dom_pwinfo().

01989 {
01990         prs_struct qbuf, rbuf;
01991         SAMR_Q_GET_DOM_PWINFO q;
01992         SAMR_R_GET_DOM_PWINFO r;
01993         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
01994 
01995         DEBUG(10,("cli_samr_get_dom_pwinfo\n"));
01996 
01997         ZERO_STRUCT(q);
01998         ZERO_STRUCT(r);
01999 
02000         /* Marshall data and send request */
02001 
02002         init_samr_q_get_dom_pwinfo(&q, cli->cli->desthost);
02003 
02004         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_GET_DOM_PWINFO,
02005                 q, r,
02006                 qbuf, rbuf,
02007                 samr_io_q_get_dom_pwinfo,
02008                 samr_io_r_get_dom_pwinfo,
02009                 NT_STATUS_UNSUCCESSFUL); 
02010 
02011         /* Return output parameters */
02012 
02013         result = r.status;
02014 
02015         if (NT_STATUS_IS_OK(result)) {
02016                 if (min_pwd_length)
02017                         *min_pwd_length = r.min_pwd_length;
02018                 if (password_properties)
02019                         *password_properties = r.password_properties;
02020         }
02021 
02022         return result;
02023 }

NTSTATUS rpccli_samr_get_usrdom_pwinfo ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND pol,
uint16 *  min_pwd_length,
uint32 *  password_properties,
uint32 *  unknown1 
)

cli_samr.c2027 行で定義されています。

参照先 cliinit_samr_q_get_usrdom_pwinfo()r_samr_usrdom_pwinfo_info::min_pwd_lengthr_samr_usrdom_pwinfo_info::password_propertiespolresultsamr_io_q_get_usrdom_pwinfo()samr_io_r_get_usrdom_pwinfo()r_samr_usrdom_pwinfo_info::statusr_samr_usrdom_pwinfo_info::unknown_1.

参照元 cmd_samr_get_usrdom_pwinfo().

02030 {
02031         prs_struct qbuf, rbuf;
02032         SAMR_Q_GET_USRDOM_PWINFO q;
02033         SAMR_R_GET_USRDOM_PWINFO r;
02034         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
02035 
02036         DEBUG(10,("cli_samr_get_usrdom_pwinfo\n"));
02037 
02038         ZERO_STRUCT(q);
02039         ZERO_STRUCT(r);
02040 
02041         /* Marshall data and send request */
02042 
02043         init_samr_q_get_usrdom_pwinfo(&q, pol);
02044 
02045         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_GET_USRDOM_PWINFO,
02046                    q, r,
02047                    qbuf, rbuf,
02048                    samr_io_q_get_usrdom_pwinfo,
02049                    samr_io_r_get_usrdom_pwinfo,
02050                    NT_STATUS_UNSUCCESSFUL); 
02051 
02052         /* Return output parameters */
02053 
02054         result = r.status;
02055 
02056         if (NT_STATUS_IS_OK(result)) {
02057                 if (min_pwd_length)
02058                         *min_pwd_length = r.min_pwd_length;
02059                 if (password_properties)
02060                         *password_properties = r.password_properties;
02061                 if (unknown1)
02062                         *unknown1 = r.unknown_1;
02063         }
02064 
02065         return result;
02066 }

NTSTATUS rpccli_samr_lookup_domain ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
POLICY_HND user_pol,
char *  domain_name,
DOM_SID sid 
)

cli_samr.c2071 行で定義されています。

参照先 clir_samr_lookup_domain_info::dom_sidinit_samr_q_lookup_domain()resultsamr_io_q_lookup_domain()samr_io_r_lookup_domain()DOM_SID2::sidsid_copy()r_samr_lookup_domain_info::status.

参照元 cac_SamLookupDomain()cmd_samr_lookup_domain().

02074 {
02075         prs_struct qbuf, rbuf;
02076         SAMR_Q_LOOKUP_DOMAIN q;
02077         SAMR_R_LOOKUP_DOMAIN r;
02078         NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
02079 
02080         DEBUG(10,("cli_samr_lookup_domain\n"));
02081 
02082         ZERO_STRUCT(q);
02083         ZERO_STRUCT(r);
02084 
02085         /* Marshall data and send request */
02086 
02087         init_samr_q_lookup_domain(&q, user_pol, domain_name);
02088 
02089         CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_LOOKUP_DOMAIN,
02090                 q, r,
02091                 qbuf, rbuf,
02092                 samr_io_q_lookup_domain,
02093                 samr_io_r_lookup_domain,
02094                 NT_STATUS_UNSUCCESSFUL); 
02095 
02096         /* Return output parameters */
02097 
02098         result = r.status;
02099 
02100         if (NT_STATUS_IS_OK(result))
02101                 sid_copy(sid, &r.dom_sid.sid);
02102 
02103         return result;
02104 }


Sambaに対してSat Aug 29 21:24:07 2009に生成されました。  doxygen 1.4.7