void set_entry_points() { slapdEntryPoints *sep; sep = (slapdEntryPoints *) slapi_ch_malloc( sizeof( slapdEntryPoints )); sep->sep_ps_wakeup_all = (caddr_t)ps_wakeup_all; sep->sep_ps_service = (caddr_t)ps_service_persistent_searches; sep->sep_disconnect_server = (caddr_t)disconnect_server; sep->sep_slapd_ssl_init = (caddr_t)slapd_ssl_init; sep->sep_slapd_ssl_init2 = (caddr_t)slapd_ssl_init2; set_dll_entry_points( sep ); /* To apply the nsslapd-counters config value properly, these values are initialized here after config file is read */ if (config_get_slapi_counters()) { ops_initiated = slapi_counter_new(); ops_completed = slapi_counter_new(); g_set_num_entries_sent( slapi_counter_new() ); g_set_num_bytes_sent( slapi_counter_new() ); } else { ops_initiated = NULL; ops_completed = NULL; g_set_num_entries_sent( NULL ); g_set_num_bytes_sent( NULL ); } }
static void csn_create_counters() { slapi_csn_counter_created = slapi_counter_new(); slapi_csn_counter_deleted = slapi_counter_new(); slapi_csn_counter_exist = slapi_counter_new(); counters_created= 1; }
static int ldbm_instance_generate(struct ldbminfo *li, char *instance_name, Slapi_Backend **ret_be) { Slapi_Backend *new_be = NULL; int rc = 0; /* Create a new instance, process config info for it, * and then call slapi_be_new and create a new backend here */ new_be = slapi_be_new(LDBM_DATABASE_TYPE_NAME /* type */, instance_name, 0 /* public */, 1 /* do log changes */); new_be->be_database = li->li_plugin; rc = ldbm_instance_create(new_be, instance_name); if (rc) { goto bail; } ldbm_instance_config_load_dse_info(new_be->be_instance_info); ldbm_instance_create_default_indexes(new_be); /* if USN plugin is enabled, set slapi_counter */ if (plugin_enabled("USN", li->li_identity) && ldbm_back_isinitialized()) { /* * ldbm_back is already initialized. * I.e., a new instance is being added. * If not initialized, ldbm_usn_init is called later and * be usn counter is initialized there. */ if (config_get_entryusn_global()) { /* global usn counter is already created. * set it to be_usn_counter. */ new_be->be_usn_counter = li->li_global_usn_counter; } else { new_be->be_usn_counter = slapi_counter_new(); slapi_counter_set_value(new_be->be_usn_counter, INITIALUSN); } } if (ret_be != NULL) { *ret_be = new_be; } bail: return rc; }
/* Creates and initializes a new ldbm_instance structure. * Also sets up some default indexes for the new instance. */ int ldbm_instance_create(backend *be, char *name) { struct ldbminfo *li = (struct ldbminfo *) be->be_database->plg_private; ldbm_instance *inst = NULL; int rc = 0; /* Allocate storage for the ldbm_instance structure. Information specific * to this instance of the ldbm backend will be held here. */ inst = (ldbm_instance *) slapi_ch_calloc(1, sizeof(ldbm_instance)); /* Record the name of this instance. */ inst->inst_name = slapi_ch_strdup(name); /* initialize the entry cache */ if (! cache_init(&(inst->inst_cache), DEFAULT_CACHE_SIZE, DEFAULT_CACHE_ENTRIES, CACHE_TYPE_ENTRY)) { slapi_log_err(SLAPI_LOG_ERR, "ldbm_instance_create", "cache_init failed\n"); rc = -1; goto error; } /* * initialize the dn cache * We do so, regardless of the subtree-rename value. * It is needed when converting the db from DN to RDN format. */ if (! cache_init(&(inst->inst_dncache), DEFAULT_DNCACHE_SIZE, DEFAULT_DNCACHE_MAXCOUNT, CACHE_TYPE_DN)) { slapi_log_err(SLAPI_LOG_ERR, "ldbm_instance_create", "dn cache_init failed\n"); rc = -1; goto error; } /* Lock for the list of open db handles */ inst->inst_handle_list_mutex = PR_NewLock(); if (NULL == inst->inst_handle_list_mutex) { slapi_log_err(SLAPI_LOG_ERR, "ldbm_instance_create", "PR_NewLock failed\n"); rc = -1; goto error; } /* Lock used to synchronize modify operations. */ inst->inst_db_mutex = PR_NewMonitor(); if (NULL == inst->inst_db_mutex) { slapi_log_err(SLAPI_LOG_ERR, "ldbm_instance_create", "PR_NewMonitor failed\n"); rc = -1; goto error; } if ((inst->inst_config_mutex = PR_NewLock()) == NULL) { slapi_log_err(SLAPI_LOG_ERR, "ldbm_instance_create", "PR_NewLock failed\n"); rc = -1; goto error; } if ((inst->inst_nextid_mutex = PR_NewLock()) == NULL) { slapi_log_err(SLAPI_LOG_ERR, "ldbm_instance_create", "PR_NewLock failed\n"); rc = -1; goto error; } if ((inst->inst_indexer_cv = PR_NewCondVar(inst->inst_nextid_mutex)) == NULL) { slapi_log_err(SLAPI_LOG_ERR, "ldbm_instance_create", "PR_NewCondVar failed\n"); rc = -1; goto error; } /* Keeps track of how many operations are currently using this instance */ inst->inst_ref_count = slapi_counter_new(); inst->inst_be = be; inst->inst_li = li; be->be_instance_info = inst; /* Initialize the fields with some default values. */ ldbm_instance_config_setup_default(inst); /* Add this new instance to the the set of instances */ { Object *instance_obj; instance_obj = object_new((void *) inst, &ldbm_instance_destructor); objset_add_obj(li->li_instance_set, instance_obj); object_release(instance_obj); } goto done; error: slapi_ch_free_string(&inst->inst_name); slapi_ch_free((void**)&inst); done: return rc; }
static int snmp_collator_init(){ int i; /* * Create the global SNMP counters */ g_get_global_snmp_vars()->ops_tbl.dsAnonymousBinds = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsUnAuthBinds = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsSimpleAuthBinds = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsStrongAuthBinds = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsBindSecurityErrors = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsInOps = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsReadOps = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsCompareOps = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsAddEntryOps = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsRemoveEntryOps = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsModifyEntryOps = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsModifyRDNOps = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsListOps = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsSearchOps = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsOneLevelSearchOps = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsWholeSubtreeSearchOps = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsReferrals = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsChainings = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsSecurityErrors = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsErrors = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsConnections = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsConnectionSeq = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsBytesRecv = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsBytesSent = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsEntriesReturned = slapi_counter_new(); g_get_global_snmp_vars()->ops_tbl.dsReferralsReturned = slapi_counter_new(); g_get_global_snmp_vars()->entries_tbl.dsMasterEntries = slapi_counter_new(); g_get_global_snmp_vars()->entries_tbl.dsCopyEntries = slapi_counter_new(); g_get_global_snmp_vars()->entries_tbl.dsCacheEntries = slapi_counter_new(); g_get_global_snmp_vars()->entries_tbl.dsCacheHits = slapi_counter_new(); g_get_global_snmp_vars()->entries_tbl.dsSlaveHits = slapi_counter_new(); /* Initialize the global interaction table */ for(i=0; i < NUM_SNMP_INT_TBL_ROWS; i++) { g_get_global_snmp_vars()->int_tbl[i].dsIntIndex = i + 1; strncpy(g_get_global_snmp_vars()->int_tbl[i].dsName, "Not Available", sizeof(g_get_global_snmp_vars()->int_tbl[i].dsName)); g_get_global_snmp_vars()->int_tbl[i].dsTimeOfCreation = 0; g_get_global_snmp_vars()->int_tbl[i].dsTimeOfLastAttempt = 0; g_get_global_snmp_vars()->int_tbl[i].dsTimeOfLastSuccess = 0; g_get_global_snmp_vars()->int_tbl[i].dsFailuresSinceLastSuccess = 0; g_get_global_snmp_vars()->int_tbl[i].dsFailures = 0; g_get_global_snmp_vars()->int_tbl[i].dsSuccesses = 0; strncpy(g_get_global_snmp_vars()->int_tbl[i].dsURL, "Not Available", sizeof(g_get_global_snmp_vars()->int_tbl[i].dsURL)); } /* Get the semaphore */ snmp_collator_sem_wait(); /* Initialize the mmap structure */ memset((void *) stats, 0, sizeof(*stats)); /* Load header stats table */ strncpy(stats->hdr_stats.dsVersion, SLAPD_VERSION_STR, (sizeof(stats->hdr_stats.dsVersion)/sizeof(char)) - 1); stats->hdr_stats.restarted = 0; stats->hdr_stats.startTime = time(0); /* This is a bit off, hope it's ok */ loadConfigStats(); /* update the mmap'd tables */ snmp_update_ops_table(); snmp_update_entries_table(); snmp_update_interactions_table(); /* Release the semaphore */ sem_post(stats_sem); /* create lock for interaction table */ interaction_table_mutex = PR_NewLock(); return 0; }