NTSTATUS smb_register_idmap(int version, const char *name, struct idmap_methods *methods)
{
- struct idmap_function_entry *entry;
+ struct idmap_function_entry *entry, *tmp;
if ((version != SMB_IDMAP_INTERFACE_VERSION)) {
DEBUG(0, ("Failed to register idmap module.\n"
entry->name = smb_xstrdup(name);
entry->methods = methods;
- DLIST_ADD(backends, entry);
+ DLIST_ADD_END(backends, entry, tmp);
DEBUG(5, ("Successfully added idmap backend '%s'\n", name));
return NT_STATUS_OK;
}
key.dptr = keystr;
key.dsize = strlen(keystr) + 1;
- DEBUG(10,("internal_get_id_from_sid: fetching record %s\n", keystr ));
+ DEBUG(10,("internal_get_id_from_sid: fetching record %s of type 0x%x\n", keystr, type ));
data = tdb_fetch(idmap_tdb, key);
- if (!data.dptr)
+ if (!data.dptr) {
+ DEBUG(10,("internal_get_id_from_sid: record %s not found\n", keystr ));
return ret;
+ } else {
+ DEBUG(10,("internal_get_id_from_sid: record %s -> %s\n", keystr, data.dptr ));
+ }
if (type == ID_EMPTY || type == ID_USERID) {
fstring scanstr;
case ID_USERID:
request.data.uid = id.uid;
operation = WINBINDD_UID_TO_SID;
+ DEBUG(10,("db_get_sid_from_id: asking winbindd uid %u -> sid\n",
+ (unsigned int)id.uid ));
break;
case ID_GROUPID:
request.data.gid = id.gid;
operation = WINBINDD_GID_TO_SID;
+ DEBUG(10,("db_get_sid_from_id: asking winbindd gid %u -> sid\n",
+ (unsigned int)id.gid ));
break;
default:
return NT_STATUS_INVALID_PARAMETER;
/* Make The Request */
result = winbindd_request(operation, &request, &response);
if (result == NSS_STATUS_SUCCESS) {
+ DEBUG(10,("db_get_sid_from_id: winbindd replied ok (%s)\n", response.data.sid.sid ));
if (!string_to_sid(sid, response.data.sid.sid)) {
return NT_STATUS_INVALID_SID;
}
sid_copy(sid, &global_sid_NULL);
}
+ DEBUG(10,("db_get_sid_from_id: winbindd lookup fail\n"));
+
return NT_STATUS_UNSUCCESSFUL;
}
ZERO_STRUCT(request);
ZERO_STRUCT(response);
+ sid_to_string(sid_str, sid);
+ fstrcpy(request.data.sid, sid_str);
+
switch (*id_type & ID_TYPEMASK) {
case ID_USERID:
operation = WINBINDD_SID_TO_UID;
+ DEBUG(10,("db_get_id_from_sid: asking winbindd %s -> uid\n",
+ sid_str ));
break;
case ID_GROUPID:
operation = WINBINDD_SID_TO_GID;
+ DEBUG(10,("db_get_id_from_sid: asking winbindd %s -> gid\n",
+ sid_str ));
break;
default:
return NT_STATUS_INVALID_PARAMETER;
}
- sid_to_string(sid_str, sid);
- fstrcpy(request.data.sid, sid_str);
-
/* Make The Request */
result = winbindd_request(operation, &request, &response);
if (result == NSS_STATUS_SUCCESS) {
if (operation == WINBINDD_SID_TO_UID) {
(*id).uid = response.data.uid;
+ DEBUG(10,("db_get_id_from_sid: winbindd replied ok (%u)\n", response.data.uid));
} else {
(*id).gid = response.data.gid;
+ DEBUG(10,("db_get_id_from_sid: winbindd replied ok (%u)\n", response.data.gid ));
}
return NT_STATUS_OK;
}
+ DEBUG(10,("db_get_id_from_sid: winbindd lookup fail\n"));
+
return NT_STATUS_UNSUCCESSFUL;
}
{
return smb_register_idmap(SMB_IDMAP_INTERFACE_VERSION, "winbind", &winbind_methods);
}
-