static NTSTATUS testsam_init(struct pdb_methods **pdb_method, const char *location) { NTSTATUS nt_status; if (!NT_STATUS_IS_OK(nt_status = make_pdb_method( pdb_method ))) { return nt_status; } (*pdb_method)->name = "testsam"; /* Functions your pdb module doesn't provide should not be set, make_pdb_methods() already provide suitable defaults for missing functions */ (*pdb_method)->getsampwnam = testsam_getsampwnam; (*pdb_method)->getsampwsid = testsam_getsampwsid; (*pdb_method)->add_sam_account = testsam_add_sam_account; (*pdb_method)->update_sam_account = testsam_update_sam_account; (*pdb_method)->delete_sam_account = testsam_delete_sam_account; testsam_debug_level = debug_add_class("testsam"); if (testsam_debug_level == -1) { testsam_debug_level = DBGC_ALL; DEBUG(0, ("testsam: Couldn't register custom debugging class!\n")); } else DEBUG(0, ("testsam: Debug class number of 'testsam': %d\n", testsam_debug_level)); DEBUG(0, ("Initializing testsam\n")); if (location) DEBUG(10, ("Location: %s\n", location)); return NT_STATUS_OK; }
NTSTATUS vfs_greyhole_init(void) { NTSTATUS ret = smb_register_vfs(SMB_VFS_INTERFACE_VERSION, "greyhole", greyhole_op_tuples); if (!NT_STATUS_IS_OK(ret)) return ret; vfs_greyhole_debug_level = debug_add_class("greyhole"); if (vfs_greyhole_debug_level == -1) { vfs_greyhole_debug_level = DBGC_VFS; DEBUG(0, ("vfs_greyhole: Couldn't register custom debugging class!\n")); } else { DEBUG(10, ("vfs_greyhole: Debug class number of 'greyhole': %d\n", vfs_greyhole_debug_level)); } return ret; }
NTSTATUS vfs_extd_audit_init(void) { NTSTATUS ret = smb_register_vfs(SMB_VFS_INTERFACE_VERSION, "extd_audit", &vfs_extd_audit_fns); if (!NT_STATUS_IS_OK(ret)) return ret; vfs_extd_audit_debug_level = debug_add_class("extd_audit"); if (vfs_extd_audit_debug_level == -1) { vfs_extd_audit_debug_level = DBGC_VFS; DEBUG(0, ("vfs_extd_audit: Couldn't register custom debugging class!\n")); } else { DEBUG(10, ("vfs_extd_audit: Debug class number of 'extd_audit': %d\n", vfs_extd_audit_debug_level)); } return ret; }
/**************************************************************************** Init debugging (one time stuff) ****************************************************************************/ void debug_init(void) { static BOOL initialised = False; const char **p; if (initialised) return; initialised = True; message_register(MSG_DEBUG, debug_message); message_register(MSG_REQ_DEBUGLEVEL, debuglevel_message); for(p = default_classname_table; *p; p++) { debug_add_class(*p); } }
NTSTATUS vfs_shadow_copy_init(void) { NTSTATUS ret = smb_register_vfs(SMB_VFS_INTERFACE_VERSION, "shadow_copy", shadow_copy_ops); if (!NT_STATUS_IS_OK(ret)) return ret; vfs_shadow_copy_debug_level = debug_add_class("shadow_copy"); if (vfs_shadow_copy_debug_level == -1) { vfs_shadow_copy_debug_level = DBGC_VFS; DEBUG(0, ("%s: Couldn't register custom debugging class!\n", "vfs_shadow_copy_init")); } else { DEBUG(10, ("%s: Debug class number of '%s': %d\n", "vfs_shadow_copy_init","shadow_copy",vfs_shadow_copy_debug_level)); } return ret; }
/**************************************************************************** utility to translate names to debug class index's (public version) ****************************************************************************/ int debug_lookup_classname(const char *classname) { int ndx; if (!classname || !*classname) return -1; ndx = debug_lookup_classname_int(classname); if (ndx != -1) return ndx; if (debug_warn_unknown_class) { DEBUG(0, ("debug_lookup_classname(%s): Unknown class\n", classname)); } if (debug_auto_add_unknown_class) { return debug_add_class(classname); } return -1; }
static NTSTATUS multisam_init(struct pdb_methods **pdb_method, const char *location) { NTSTATUS nt_status; int i; struct multisam_data *data; multisam_debug_level = debug_add_class("multisam"); if (multisam_debug_level == -1) { multisam_debug_level = DBGC_ALL; DEBUG(0, ("multisam: Couldn't register custom debugging class!\n")); } if ( !NT_STATUS_IS_OK(nt_status = make_pdb_method( pdb_method )) ) { return nt_status; } data = talloc(*pdb_method, struct multisam_data); (*pdb_method)->private_data = data; /* Create default_methods with default functions (as in pdb_interface.c) */ if (!NT_STATUS_IS_OK(nt_status = make_pdb_method( &(data->default_methods)))) { DEBUG(0, ("Could not create default pdb_method\n")); return nt_status; } (*pdb_method)->name = "multisam"; /* Mandatory implementation */ (*pdb_method)->setsampwent = multisam_setsampwent; (*pdb_method)->endsampwent = multisam_endsampwent; (*pdb_method)->getsampwent = multisam_getsampwent; (*pdb_method)->getsampwnam = multisam_getsampwnam; (*pdb_method)->getsampwsid = multisam_getsampwsid; (*pdb_method)->add_sam_account = multisam_add_sam_account; (*pdb_method)->update_sam_account = multisam_update_sam_account; (*pdb_method)->delete_sam_account = multisam_delete_sam_account; (*pdb_method)->rename_sam_account = multisam_rename_sam_account; (*pdb_method)->rid_algorithm = multisam_rid_algorithm; (*pdb_method)->new_rid = multisam_dummy_new_rid; (*pdb_method)->create_user = multisam_create_user; (*pdb_method)->delete_user = multisam_delete_user; (*pdb_method)->uid_to_rid = multisam_uid_to_rid; (*pdb_method)->gid_to_sid = multisam_gid_to_sid; (*pdb_method)->sid_to_id = multisam_sid_to_id; /* Not yet implemented here */ #if 0 (*pdb_method)->update_login_attempts = multisam_update_login_attempts; (*pdb_method)->getgrsid = multisam_getgrsid; (*pdb_method)->getgrgid = multisam_getgrgid; (*pdb_method)->getgrnam = multisam_getgrnam; (*pdb_method)->create_dom_group = multisam_create_dom_group; (*pdb_method)->delete_dom_group = multisam_delete_dom_group; (*pdb_method)->enum_group_mapping = multisam_enum_group_mapping; (*pdb_method)->enum_group_members = multisam_enum_group_members; (*pdb_method)->enum_group_memberships = multisam_enum_group_memberships; (*pdb_method)->add_groupmem = multisam_add_groupmem; (*pdb_method)->del_groupmem = multisam_del_groupmem; (*pdb_method)->find_alias = multisam_find_alias; (*pdb_method)->create_alias = multisam_create_alias; (*pdb_method)->delete_alias = multisam_delete_alias; (*pdb_method)->get_aliasinfo = multisam_get_aliasinfo; (*pdb_method)->set_aliasinfo = multisam_set_aliasinfo; (*pdb_method)->add_aliasmem = multisam_add_aliasmem; (*pdb_method)->del_aliasmem = multisam_del_aliasmem; (*pdb_method)->enum_aliasmem = multisam_enum_aliasmem; (*pdb_method)->enum_alias_memberships = multisam_alias_memberships; (*pdb_method)->lookup_rids = multisam_lookup_rids; (*pdb_method)->get_account_policy = multisam_get_account_policy; (*pdb_method)->set_account_policy = multisam_set_account_policy; (*pdb_method)->get_seq_num = multisam_get_seq_num; (*pdb_method)->search_users = multisam_search_users; (*pdb_method)->search_groups = multisam_search_groups; (*pdb_method)->search_aliases = multisam_search_aliases; #endif if (!location) { DEBUG(0, ("No identifier specified. Check the Samba HOWTO Collection for details\n")); return NT_STATUS_INVALID_PARAMETER; } data->location = talloc_strdup(data, location); data->names = str_list_make_talloc(data, data->location, NULL); data->num_backends = str_list_count((const char **)data->names); data->locations = talloc_array(data, char *, data->num_backends); data->methods = talloc_array(data, struct pdb_methods *, data->num_backends); for (i = 0; i < data->num_backends; i++) { struct pdb_init_function_entry *entry = NULL; data->locations[i] = strchr(data->names[i], ':'); if (data->locations[i]) { *(data->locations[i]) = '\0'; data->locations[i]++; } entry = pdb_find_backend_entry(data->names[i]); if (!entry) { DEBUG(2,("No builtin backend found, trying to load plugin\n")); if(NT_STATUS_IS_OK(smb_probe_module("pdb", data->names[i])) && !(entry = pdb_find_backend_entry(data->names[i]))) { DEBUG(0,("Plugin is available, but doesn't register passdb backend %s\n", data->names[i])); return NT_STATUS_UNSUCCESSFUL; } } if (!entry) { DEBUG(0, ("Unable to find multisam backend %d: %s\n", i, data->names[i])); return NT_STATUS_UNSUCCESSFUL; } DEBUG(2, ("Found entry point. Loading multisam backend %d: %s\n", i, data->names[i])); nt_status = entry->init(&data->methods[i], data->locations[i]); if (NT_STATUS_IS_ERR(nt_status)) { return nt_status; } /* These functions are only used on LDAP now.. */ if (!IS_DEFAULT(data->methods[i], add_group_mapping_entry)) (*pdb_method)->add_group_mapping_entry = multisam_add_group_mapping_entry; if (!IS_DEFAULT(data->methods[i], update_group_mapping_entry)) (*pdb_method)->update_group_mapping_entry = multisam_update_group_mapping_entry; if (!IS_DEFAULT(data->methods[i], delete_group_mapping_entry)) (*pdb_method)->delete_group_mapping_entry = multisam_delete_group_mapping_entry; } return NT_STATUS_OK; }