Ejemplo n.º 1
0
/*
 * Initialize SCN machinery
 */
void
isns_scn_init(isns_server_t *srv)
{
	isns_db_t	*db = srv->is_db;
	isns_object_list_t nodes = ISNS_OBJECT_LIST_INIT;
	isns_scn_t	**tail;
	unsigned int	i;

	isns_scn_server = srv;
	isns_register_callback(isns_scn_callback, db);

	/* Recover SCN state. */
	isns_db_gang_lookup(db, &isns_iscsi_node_template, NULL, &nodes);
#ifdef notyet
	isns_db_gang_lookup(db, &isns_fc_node_template, NULL, &nodes);
#endif

	tail = &isns_scn_list;
	for (i = 0; i < nodes.iol_count; ++i) {
		isns_object_t	*node = nodes.iol_data[i];
		isns_scn_t	*scn;

		if (!node->ie_scn_mask)
			continue;

		isns_debug_state("Recovering SCN state for %s %u\n",
				node->ie_template->iot_name,
				node->ie_index);
		scn = isns_scn_setup(NULL, node);
		if (scn) {
			*tail = scn;
			tail = &scn->scn_next;
		}
	}
}
Ejemplo n.º 2
0
isns_keystore_t *
isns_create_db_keystore(isns_db_t *db)
{
	isns_db_keystore_t *store;
	isns_object_t	*entity;

	isns_debug_auth("Creating DB keystore\n");
	if (!(entity = isns_db_get_control(db))) {
		isns_error("Could not create control entity in database\n");
		return NULL;
	}
	isns_debug_auth("Control entity is 0x%08x\n", entity->ie_index);

	store = isns_calloc(1, sizeof(*store));
	store->sd_base.ic_name = "database key store";
	store->sd_base.ic_find = __isns_db_keystore_find;
	store->sd_base.ic_get_policy = __isns_db_keystore_get_policy;
	store->sd_control = entity;
	store->sd_db = db;

	isns_register_callback(__isns_db_keystore_change_notify, store);

	return (isns_keystore_t *) store;
}