krb5_error_code krb5_db2_destroy(krb5_context context, char *conf_section, char **db_args) { krb5_error_code status = 0; krb5_db2_context *db_ctx; char *db_name; if (k5db2_inited(context)) { status = krb5_db2_fini(context); if (status != 0) return status; } krb5_clear_error_message(context); status = configure_context(context, conf_section, db_args); if (status != 0) return status; status = check_openable(context); if (status != 0) return status; db_ctx = context->dal_handle->db_context; db_name = gen_dbsuffix(db_ctx->db_name, db_ctx->tempdb ? "~" : ""); if (db_name == NULL) return ENOMEM; status = destroy_db(context, db_name); free(db_name); return status; }
krb5_error_code krb5_db2_create(krb5_context context, char *conf_section, char **db_args) { krb5_error_code status = 0; krb5_db2_context *db_ctx; krb5_clear_error_message(context); if (k5db2_inited(context)) return 0; status = configure_context(context, conf_section, db_args); if (status != 0) return status; status = check_openable(context); if (status == 0) return EEXIST; db_ctx = context->dal_handle->db_context; status = create_db(context, db_ctx->db_name); if (status != 0) return status; return krb5_db2_init(context); }
krb5_error_code krb5_db2_destroy(krb5_context context, char *conf_section, char **db_args) { krb5_error_code status; krb5_db2_context *dbc; char *dbname = NULL, *lockname = NULL, *polname = NULL, *plockname = NULL; if (inited(context)) { status = krb5_db2_fini(context); if (status != 0) return status; } krb5_clear_error_message(context); status = configure_context(context, conf_section, db_args); if (status != 0) return status; status = check_openable(context); if (status != 0) return status; dbc = context->dal_handle->db_context; status = ctx_allfiles(dbc, &dbname, &lockname, &polname, &plockname); if (status) goto cleanup; status = destroy_file(dbname); if (status) goto cleanup; status = unlink(lockname); if (status) goto cleanup; status = osa_adb_destroy_db(polname, plockname, OSA_ADB_POLICY_DB_MAGIC); if (status) return status; status = krb5_db2_fini(context); cleanup: free(dbname); free(lockname); free(polname); free(plockname); return status; }
krb5_error_code krb5_db2_open(krb5_context context, char *conf_section, char **db_args, int mode) { krb5_error_code status = 0; krb5_clear_error_message(context); if (k5db2_inited(context)) return 0; status = configure_context(context, conf_section, db_args); if (status != 0) return status; status = check_openable(context); if (status != 0) return status; return krb5_db2_init(context); }
krb5_error_code krb5_db2_create(krb5_context context, char *conf_section, char **db_args) { krb5_error_code status = 0; krb5_db2_context *dbc; krb5_clear_error_message(context); if (inited(context)) return 0; status = configure_context(context, conf_section, db_args); if (status != 0) return status; dbc = context->dal_handle->db_context; status = ctx_create_db(context, dbc); if (status != 0) return status; if (!dbc->tempdb) krb5_db2_unlock(context); return 0; }