| NSS_STATUS winbindd_request_response | ( | int | req_type, | |
| struct winbindd_request * | request, | |||
| struct winbindd_response * | response | |||
| ) |
wb_common.c の 634 行で定義されています。
参照元 _nss_winbind_endgrent()・_nss_winbind_endpwent()・_nss_winbind_getgrgid_r()・_nss_winbind_getgrnam_r()・_nss_winbind_getpwent_r()・_nss_winbind_getpwnam_r()・_nss_winbind_getpwuid_r()・_nss_winbind_getusersids()・_nss_winbind_gidtosid()・_nss_winbind_hosts_getbyaddr()・_nss_winbind_hosts_getbyname()・_nss_winbind_initgroups_dyn()・_nss_winbind_ipnodes_getbyname()・_nss_winbind_nametosid()・_nss_winbind_setgrent()・_nss_winbind_setpwent()・_nss_winbind_sidtogid()・_nss_winbind_sidtoname()・_nss_winbind_sidtouid()・_nss_winbind_uidtosid()・check_plaintext_auth()・contact_winbind_auth_crap()・contact_winbind_change_pswd_auth_crap()・do_ccache_ntlm_auth()・get_require_membership_sid()・get_user_sids()・get_user_tokens()・get_winbind_domain()・get_winbind_netbios_name()・netbsdwinbind_getgroupmembership()・print_domain_groups()・print_domain_users()・pwd_to_sid()・py_auth_crap()・py_auth_plaintext()・py_auth_smbd()・py_check_secret()・py_enum_domain_groups()・py_enum_domain_users()・py_enum_trust_dom()・py_getpwnam()・py_getpwuid()・py_gid_to_sid()・py_name_to_sid()・py_sid_to_gid()・py_sid_to_name()・py_sid_to_uid()・py_uid_to_sid()・reply_spnego_kerberos()・wb_aix_authenticate()・wb_aix_chpass()・wb_aix_getgrgid()・wb_aix_getgrnam()・wb_aix_getgrset()・wb_aix_getpwnam()・wb_aix_getpwuid()・wb_aix_lsgroup()・wb_aix_lsuser()・wb_is_trusted_domain()・wbinfo_auth()・wbinfo_auth_crap()・wbinfo_auth_krb5()・wbinfo_check_secret()・wbinfo_domain_info()・wbinfo_get_groupinfo()・wbinfo_get_userdomgroups()・wbinfo_get_usergroups()・wbinfo_get_userinfo()・wbinfo_get_usersids()・wbinfo_getdcname()・wbinfo_gid_to_sid()・wbinfo_klog()・wbinfo_list_domains()・wbinfo_lookupname()・wbinfo_lookuprids()・wbinfo_lookupsid()・wbinfo_ping()・wbinfo_show_sequence()・wbinfo_sid_to_gid()・wbinfo_sid_to_uid()・wbinfo_uid_to_sid()・wbinfo_wins_byip()・wbinfo_wins_byname()・winbind_allocate_gid()・winbind_allocate_uid()・winbind_getgrent()・winbind_gid_to_sid()・winbind_idmap_dump_maps()・winbind_lookup_name()・winbind_lookup_rids()・winbind_lookup_sid()・winbind_open_pipe_sock()・winbind_ping()・winbind_separator()・winbind_separator_int()・winbind_set_gid_hwm()・winbind_set_mapping()・winbind_set_uid_hwm()・winbind_sid_to_gid()・winbind_sid_to_uid()・winbind_sids_to_unixids()・winbind_uid_to_sid().
00637 { 00638 NSS_STATUS status = NSS_STATUS_UNAVAIL; 00639 int count = 0; 00640 00641 while ((status == NSS_STATUS_UNAVAIL) && (count < 10)) { 00642 status = winbindd_send_request(req_type, 0, request); 00643 if (status != NSS_STATUS_SUCCESS) 00644 return(status); 00645 status = winbindd_get_response(response); 00646 count += 1; 00647 } 00648 00649 return status; 00650 }
| BOOL winbind_lookup_name | ( | const char * | dom_name, | |
| const char * | name, | |||
| DOM_SID * | sid, | |||
| enum lsa_SidType * | name_type | |||
| ) |
wb_client.c の 37 行で定義されています。
参照先 winbindd_response::data・winbindd_request::data・winbindd_request::name・NSS_STATUS_SUCCESS・result・winbindd_response::sid・string_to_sid()・WINBINDD_LOOKUPNAME・winbindd_request_response().
参照元 idmap_nss_unixids_to_sids()・lookup_name().
00039 { 00040 struct winbindd_request request; 00041 struct winbindd_response response; 00042 NSS_STATUS result; 00043 00044 if (!sid || !name_type) 00045 return False; 00046 00047 /* Send off request */ 00048 00049 ZERO_STRUCT(request); 00050 ZERO_STRUCT(response); 00051 00052 fstrcpy(request.data.name.dom_name, dom_name); 00053 fstrcpy(request.data.name.name, name); 00054 00055 if ((result = winbindd_request_response(WINBINDD_LOOKUPNAME, &request, 00056 &response)) == NSS_STATUS_SUCCESS) { 00057 if (!string_to_sid(sid, response.data.sid.sid)) 00058 return False; 00059 *name_type = (enum lsa_SidType)response.data.sid.type; 00060 } 00061 00062 return result == NSS_STATUS_SUCCESS; 00063 }
| BOOL winbind_lookup_sid | ( | TALLOC_CTX * | mem_ctx, | |
| const DOM_SID * | sid, | |||
| const char ** | domain, | |||
| const char ** | name, | |||
| enum lsa_SidType * | name_type | |||
| ) |
wb_client.c の 67 行で定義されています。
参照先 winbindd_response::data・winbindd_request::data・winbindd_response::name・NSS_STATUS_SUCCESS・result・winbindd_response::sid・winbindd_request::sid・sid_string_static()・talloc_strdup()・WINBINDD_LOOKUPSID・winbindd_request_response().
参照元 idmap_nss_sids_to_unixids()・lookup_as_domain()・lookup_name().
00070 { 00071 struct winbindd_request request; 00072 struct winbindd_response response; 00073 NSS_STATUS result; 00074 00075 /* Initialise request */ 00076 00077 ZERO_STRUCT(request); 00078 ZERO_STRUCT(response); 00079 00080 fstrcpy(request.data.sid, sid_string_static(sid)); 00081 00082 /* Make request */ 00083 00084 result = winbindd_request_response(WINBINDD_LOOKUPSID, &request, 00085 &response); 00086 00087 if (result != NSS_STATUS_SUCCESS) { 00088 return False; 00089 } 00090 00091 /* Copy out result */ 00092 00093 if (domain != NULL) { 00094 *domain = talloc_strdup(mem_ctx, response.data.name.dom_name); 00095 if (*domain == NULL) { 00096 DEBUG(0, ("talloc failed\n")); 00097 return False; 00098 } 00099 } 00100 if (name != NULL) { 00101 *name = talloc_strdup(mem_ctx, response.data.name.name); 00102 if (*name == NULL) { 00103 DEBUG(0, ("talloc failed\n")); 00104 return False; 00105 } 00106 } 00107 00108 *name_type = (enum lsa_SidType)response.data.name.type; 00109 00110 DEBUG(10, ("winbind_lookup_sid: SUCCESS: SID %s -> %s %s\n", 00111 sid_string_static(sid), response.data.name.dom_name, 00112 response.data.name.name)); 00113 return True; 00114 }
| BOOL winbind_lookup_rids | ( | TALLOC_CTX * | mem_ctx, | |
| const DOM_SID * | domain_sid, | |||
| int | num_rids, | |||
| uint32 * | rids, | |||
| const char ** | domain_name, | |||
| const char *** | names, | |||
| enum lsa_SidType ** | types | |||
| ) |
wb_client.c の 116 行で定義されています。
参照先 winbindd_response::data・winbindd_request::data・winbindd_response::domain_name・domain_sid・winbindd_response::extra_data・winbindd_request::extra_data・winbindd_request::extra_len・len・NSS_STATUS_SUCCESS・result・winbindd_request::sid・sid_string_static()・sprintf_append()・talloc_strdup()・WINBINDD_LOOKUPRIDS・winbindd_request_response().
参照元 wb_lookup_rids()・wbinfo_lookuprids().
00121 { 00122 size_t i, buflen; 00123 ssize_t len; 00124 char *ridlist; 00125 char *p; 00126 struct winbindd_request request; 00127 struct winbindd_response response; 00128 NSS_STATUS result; 00129 00130 if (num_rids == 0) { 00131 return False; 00132 } 00133 00134 /* Initialise request */ 00135 00136 ZERO_STRUCT(request); 00137 ZERO_STRUCT(response); 00138 00139 fstrcpy(request.data.sid, sid_string_static(domain_sid)); 00140 00141 len = 0; 00142 buflen = 0; 00143 ridlist = NULL; 00144 00145 for (i=0; i<num_rids; i++) { 00146 sprintf_append(mem_ctx, &ridlist, &len, &buflen, 00147 "%ld\n", rids[i]); 00148 } 00149 00150 if ((num_rids != 0) && (ridlist == NULL)) { 00151 return False; 00152 } 00153 00154 request.extra_data.data = ridlist; 00155 request.extra_len = strlen(ridlist)+1; 00156 00157 result = winbindd_request_response(WINBINDD_LOOKUPRIDS, 00158 &request, &response); 00159 00160 TALLOC_FREE(ridlist); 00161 00162 if (result != NSS_STATUS_SUCCESS) { 00163 return False; 00164 } 00165 00166 *domain_name = talloc_strdup(mem_ctx, response.data.domain_name); 00167 00168 if (num_rids) { 00169 *names = TALLOC_ARRAY(mem_ctx, const char *, num_rids); 00170 *types = TALLOC_ARRAY(mem_ctx, enum lsa_SidType, num_rids); 00171 00172 if ((*names == NULL) || (*types == NULL)) { 00173 goto fail; 00174 } 00175 } else { 00176 *names = NULL; 00177 *types = NULL; 00178 } 00179 00180 p = (char *)response.extra_data.data; 00181 00182 for (i=0; i<num_rids; i++) { 00183 char *q; 00184 00185 if (*p == '\0') { 00186 DEBUG(10, ("Got invalid reply: %s\n", 00187 (char *)response.extra_data.data)); 00188 goto fail; 00189 } 00190 00191 (*types)[i] = (enum lsa_SidType)strtoul(p, &q, 10); 00192 00193 if (*q != ' ') { 00194 DEBUG(10, ("Got invalid reply: %s\n", 00195 (char *)response.extra_data.data)); 00196 goto fail; 00197 } 00198 00199 p = q+1; 00200 00201 q = strchr(p, '\n'); 00202 if (q == NULL) { 00203 DEBUG(10, ("Got invalid reply: %s\n", 00204 (char *)response.extra_data.data)); 00205 goto fail; 00206 } 00207 00208 *q = '\0'; 00209 00210 (*names)[i] = talloc_strdup(*names, p); 00211 00212 p = q+1; 00213 } 00214 00215 if (*p != '\0') { 00216 DEBUG(10, ("Got invalid reply: %s\n", 00217 (char *)response.extra_data.data)); 00218 goto fail; 00219 } 00220 00221 SAFE_FREE(response.extra_data.data); 00222 00223 return True; 00224 00225 fail: 00226 TALLOC_FREE(*names); 00227 TALLOC_FREE(*types); 00228 return False; 00229 }
wb_client.c の 233 行で定義されています。
参照先 winbindd_response::data・winbindd_request::data・NSS_STATUS_SUCCESS・result・winbindd_request::sid・winbindd_response::sid・sid_to_string()・winbindd_response::uid・winbindd_request_response()・WINBINDD_SID_TO_UID.
参照元 sid_to_uid().
00234 { 00235 struct winbindd_request request; 00236 struct winbindd_response response; 00237 int result; 00238 fstring sid_str; 00239 00240 if (!puid) 00241 return False; 00242 00243 /* Initialise request */ 00244 00245 ZERO_STRUCT(request); 00246 ZERO_STRUCT(response); 00247 00248 sid_to_string(sid_str, sid); 00249 fstrcpy(request.data.sid, sid_str); 00250 00251 /* Make request */ 00252 00253 result = winbindd_request_response(WINBINDD_SID_TO_UID, &request, &response); 00254 00255 /* Copy out result */ 00256 00257 if (result == NSS_STATUS_SUCCESS) { 00258 *puid = response.data.uid; 00259 } 00260 00261 return (result == NSS_STATUS_SUCCESS); 00262 }
wb_client.c の 266 行で定義されています。
参照先 winbindd_response::data・winbindd_request::data・global_sid_NULL・NSS_STATUS_SUCCESS・result・winbindd_response::sid・sid_copy()・string_to_sid()・winbindd_request::uid・winbindd_request_response()・WINBINDD_UID_TO_SID.
参照元 uid_to_sid().
00267 { 00268 struct winbindd_request request; 00269 struct winbindd_response response; 00270 int result; 00271 00272 if (!sid) 00273 return False; 00274 00275 /* Initialise request */ 00276 00277 ZERO_STRUCT(request); 00278 ZERO_STRUCT(response); 00279 00280 request.data.uid = uid; 00281 00282 /* Make request */ 00283 00284 result = winbindd_request_response(WINBINDD_UID_TO_SID, &request, &response); 00285 00286 /* Copy out result */ 00287 00288 if (result == NSS_STATUS_SUCCESS) { 00289 if (!string_to_sid(sid, response.data.sid.sid)) 00290 return False; 00291 } else { 00292 sid_copy(sid, &global_sid_NULL); 00293 } 00294 00295 return (result == NSS_STATUS_SUCCESS); 00296 }
wb_client.c の 300 行で定義されています。
参照先 winbindd_response::data・winbindd_request::data・winbindd_response::gid・NSS_STATUS_SUCCESS・result・winbindd_request::sid・winbindd_response::sid・sid_to_string()・winbindd_request_response()・WINBINDD_SID_TO_GID.
参照元 sid_to_gid().
00301 { 00302 struct winbindd_request request; 00303 struct winbindd_response response; 00304 int result; 00305 fstring sid_str; 00306 00307 if (!pgid) 00308 return False; 00309 00310 /* Initialise request */ 00311 00312 ZERO_STRUCT(request); 00313 ZERO_STRUCT(response); 00314 00315 sid_to_string(sid_str, sid); 00316 fstrcpy(request.data.sid, sid_str); 00317 00318 /* Make request */ 00319 00320 result = winbindd_request_response(WINBINDD_SID_TO_GID, &request, &response); 00321 00322 /* Copy out result */ 00323 00324 if (result == NSS_STATUS_SUCCESS) { 00325 *pgid = response.data.gid; 00326 } 00327 00328 return (result == NSS_STATUS_SUCCESS); 00329 }
wb_client.c の 333 行で定義されています。
参照先 winbindd_response::data・winbindd_request::data・winbindd_request::gid・global_sid_NULL・NSS_STATUS_SUCCESS・result・winbindd_response::sid・sid_copy()・string_to_sid()・WINBINDD_GID_TO_SID・winbindd_request_response().
参照元 gid_to_sid().
00334 { 00335 struct winbindd_request request; 00336 struct winbindd_response response; 00337 int result; 00338 00339 if (!sid) 00340 return False; 00341 00342 /* Initialise request */ 00343 00344 ZERO_STRUCT(request); 00345 ZERO_STRUCT(response); 00346 00347 request.data.gid = gid; 00348 00349 /* Make request */ 00350 00351 result = winbindd_request_response(WINBINDD_GID_TO_SID, &request, &response); 00352 00353 /* Copy out result */ 00354 00355 if (result == NSS_STATUS_SUCCESS) { 00356 if (!string_to_sid(sid, response.data.sid.sid)) 00357 return False; 00358 } else { 00359 sid_copy(sid, &global_sid_NULL); 00360 } 00361 00362 return (result == NSS_STATUS_SUCCESS); 00363 }
wb_client.c の 367 行で定義されています。
参照先 winbindd_response::data・winbindd_request::data・winbindd_response::extra_data・winbindd_request::extra_data・winbindd_request::extra_len・unixid::id・ID_MAPPED・ID_UNMAPPED・NSS_STATUS_SUCCESS・result・winbindd_response::sid・sid_copy()・id_map::status・status・unixid::type・type・winbindd_request_response()・WINBINDD_SIDS_TO_XIDS・id_map::xid.
00368 { 00369 struct winbindd_request request; 00370 struct winbindd_response response; 00371 int result; 00372 DOM_SID *sids; 00373 int i; 00374 00375 /* Initialise request */ 00376 00377 ZERO_STRUCT(request); 00378 ZERO_STRUCT(response); 00379 00380 request.extra_len = num_ids * sizeof(DOM_SID); 00381 00382 sids = (DOM_SID *)SMB_MALLOC(request.extra_len); 00383 for (i = 0; i < num_ids; i++) { 00384 sid_copy(&sids[i], ids[i].sid); 00385 } 00386 00387 request.extra_data.data = (char *)sids; 00388 00389 /* Make request */ 00390 00391 result = winbindd_request_response(WINBINDD_SIDS_TO_XIDS, &request, &response); 00392 00393 /* Copy out result */ 00394 00395 if (result == NSS_STATUS_SUCCESS) { 00396 struct unixid *wid = (struct unixid *)response.extra_data.data; 00397 00398 for (i = 0; i < num_ids; i++) { 00399 if (wid[i].type == -1) { 00400 ids[i].status = ID_UNMAPPED; 00401 } else { 00402 ids[i].status = ID_MAPPED; 00403 ids[i].xid.type = wid[i].type; 00404 ids[i].xid.id = wid[i].id; 00405 } 00406 } 00407 } 00408 00409 SAFE_FREE(request.extra_data.data); 00410 SAFE_FREE(response.extra_data.data); 00411 00412 return (result == NSS_STATUS_SUCCESS); 00413 }
| BOOL winbind_idmap_dump_maps | ( | TALLOC_CTX * | memctx, | |
| const char * | file | |||
| ) |
wb_client.c の 415 行で定義されています。
参照先 winbindd_request::data・winbindd_request::extra_data・winbindd_request::extra_len・NSS_STATUS_SUCCESS・result・WINBINDD_DUMP_MAPS・winbindd_request_response().
00416 { 00417 struct winbindd_request request; 00418 struct winbindd_response response; 00419 int result; 00420 00421 ZERO_STRUCT(request); 00422 ZERO_STRUCT(response); 00423 00424 request.extra_data.data = SMB_STRDUP(file); 00425 request.extra_len = strlen(request.extra_data.data) + 1; 00426 00427 result = winbindd_request_response(WINBINDD_DUMP_MAPS, &request, &response); 00428 00429 SAFE_FREE(request.extra_data.data); 00430 return (result == NSS_STATUS_SUCCESS); 00431 }
| BOOL winbind_allocate_uid | ( | uid_t * | uid | ) |
wb_client.c の 433 行で定義されています。
参照先 winbindd_response::data・NSS_STATUS_SUCCESS・result・winbindd_response::uid・WINBINDD_ALLOCATE_UID・winbindd_request_response().
参照元 ldapsam_create_user()・net_sam_provision()・wbinfo_allocate_uid().
00434 { 00435 struct winbindd_request request; 00436 struct winbindd_response response; 00437 int result; 00438 00439 /* Initialise request */ 00440 00441 ZERO_STRUCT(request); 00442 ZERO_STRUCT(response); 00443 00444 /* Make request */ 00445 00446 result = winbindd_request_response(WINBINDD_ALLOCATE_UID, 00447 &request, &response); 00448 00449 if (result != NSS_STATUS_SUCCESS) 00450 return False; 00451 00452 /* Copy out result */ 00453 *uid = response.data.uid; 00454 00455 return True; 00456 }
| BOOL winbind_allocate_gid | ( | gid_t * | gid | ) |
wb_client.c の 458 行で定義されています。
参照先 winbindd_response::data・winbindd_response::gid・NSS_STATUS_SUCCESS・result・WINBINDD_ALLOCATE_GID・winbindd_request_response().
参照元 ldapsam_create_dom_group()・net_sam_provision()・pdb_create_builtin_alias()・pdb_default_create_alias()・wbinfo_allocate_gid().
00459 { 00460 struct winbindd_request request; 00461 struct winbindd_response response; 00462 int result; 00463 00464 /* Initialise request */ 00465 00466 ZERO_STRUCT(request); 00467 ZERO_STRUCT(response); 00468 00469 /* Make request */ 00470 00471 result = winbindd_request_response(WINBINDD_ALLOCATE_GID, 00472 &request, &response); 00473 00474 if (result != NSS_STATUS_SUCCESS) 00475 return False; 00476 00477 /* Copy out result */ 00478 *gid = response.data.gid; 00479 00480 return True; 00481 }
wb_client.c の 483 行で定義されています。
参照先 winbindd_request::data・winbindd_request::dual_idmapset・unixid::id・NSS_STATUS_SUCCESS・result・id_map::sid・sid_to_string()・unixid::type・winbindd_request_response()・WINBINDD_SET_MAPPING・id_map::xid.
参照元 net_idmap_restore().
00484 { 00485 struct winbindd_request request; 00486 struct winbindd_response response; 00487 int result; 00488 00489 /* Initialise request */ 00490 00491 ZERO_STRUCT(request); 00492 ZERO_STRUCT(response); 00493 00494 /* Make request */ 00495 00496 request.data.dual_idmapset.id = map->xid.id; 00497 request.data.dual_idmapset.type = map->xid.type; 00498 sid_to_string(request.data.dual_idmapset.sid, map->sid); 00499 00500 result = winbindd_request_response(WINBINDD_SET_MAPPING, &request, &response); 00501 00502 return (result == NSS_STATUS_SUCCESS); 00503 }
| BOOL winbind_set_uid_hwm | ( | unsigned long | id | ) |
wb_client.c の 505 行で定義されています。
参照先 winbindd_request::data・winbindd_request::dual_idmapset・ID_TYPE_UID・NSS_STATUS_SUCCESS・result・winbindd_request_response()・WINBINDD_SET_HWM.
参照元 net_idmap_restore().
00506 { 00507 struct winbindd_request request; 00508 struct winbindd_response response; 00509 int result; 00510 00511 /* Initialise request */ 00512 00513 ZERO_STRUCT(request); 00514 ZERO_STRUCT(response); 00515 00516 /* Make request */ 00517 00518 request.data.dual_idmapset.id = id; 00519 request.data.dual_idmapset.type = ID_TYPE_UID; 00520 00521 result = winbindd_request_response(WINBINDD_SET_HWM, &request, &response); 00522 00523 return (result == NSS_STATUS_SUCCESS); 00524 }
| BOOL winbind_set_gid_hwm | ( | unsigned long | id | ) |
wb_client.c の 526 行で定義されています。
参照先 winbindd_request::data・winbindd_request::dual_idmapset・ID_TYPE_GID・NSS_STATUS_SUCCESS・result・winbindd_request_response()・WINBINDD_SET_HWM.
参照元 net_idmap_restore().
00527 { 00528 struct winbindd_request request; 00529 struct winbindd_response response; 00530 int result; 00531 00532 /* Initialise request */ 00533 00534 ZERO_STRUCT(request); 00535 ZERO_STRUCT(response); 00536 00537 /* Make request */ 00538 00539 request.data.dual_idmapset.id = id; 00540 request.data.dual_idmapset.type = ID_TYPE_GID; 00541 00542 result = winbindd_request_response(WINBINDD_SET_HWM, &request, &response); 00543 00544 return (result == NSS_STATUS_SUCCESS); 00545 }
| BOOL winbind_ping | ( | void | ) |
wb_client.c の 551 行で定義されています。
参照先 NSS_STATUS_SUCCESS・result・WINBINDD_PING・winbindd_request_response().
参照元 create_local_token()・gid_to_sid()・net_idmap_restore()・net_sam_createbuiltingroup()・net_sam_createlocalgroup()・net_sam_provision()・sid_to_gid()・sid_to_uid()・smb_getpwnam()・uid_to_sid()・winbindd_running().
00552 { 00553 NSS_STATUS result; 00554 00555 result = winbindd_request_response(WINBINDD_PING, NULL, NULL); 00556 00557 return result == NSS_STATUS_SUCCESS; 00558 }
| NSS_STATUS wb_is_trusted_domain | ( | const char * | domain | ) |
wb_client.c の 578 行で定義されています。
参照先 winbindd_request::domain_name・WINBINDD_DOMAIN_INFO・winbindd_request_response().
参照元 is_trusted_domain().
00579 { 00580 struct winbindd_request request; 00581 struct winbindd_response response; 00582 00583 /* Call winbindd */ 00584 00585 ZERO_STRUCT(request); 00586 ZERO_STRUCT(response); 00587 00588 fstrcpy(request.domain_name, domain); 00589 00590 return winbindd_request_response(WINBINDD_DOMAIN_INFO, &request, &response); 00591 }
1.4.7