Example #1
0
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 );
	}
}
Example #2
0
File: csn.c Project: leto/389-ds
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;
}
Example #3
0
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;
}
Example #4
0
/* 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;
}
Example #5
0
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;
}