isns_object_t * isns_create_storage_node2(const isns_source_t *source, uint32_t type, isns_object_t *parent) { isns_attr_t *name_attr; isns_object_t *obj; if (parent && !ISNS_IS_ENTITY(parent)) { isns_warning("Invalid container type \"%s\" for storage node: " "should be \"%s\"\n", parent->ie_template->iot_name, isns_entity_template.iot_name); return NULL; } if ((name_attr = isns_source_attr(source)) == NULL) { isns_warning("No source attribute\n"); return NULL; } if (name_attr->ia_tag_id == ISNS_TAG_ISCSI_NAME) { obj = isns_create_object(&isns_iscsi_node_template, NULL, parent); isns_attr_list_update_attr(&obj->ie_attrs, name_attr); isns_object_set_uint32(obj, ISNS_TAG_ISCSI_NODE_TYPE, type); } else { /* No iFCP yet, sorry */ isns_warning("%s: source tag type %u not supported\n", __FUNCTION__); return NULL; } return obj; }
/* * Support for SCNRegister calls */ isns_simple_t * isns_create_scn_registration2(isns_client_t *clnt, unsigned int bitmap, isns_source_t *source) { isns_simple_t *call; if (!source) source = clnt->ic_source; call = isns_simple_create(ISNS_SCN_REGISTER, source, NULL); if (call) { isns_attr_list_append_attr(&call->is_message_attrs, isns_source_attr(source)); isns_attr_list_append_uint32(&call->is_operating_attrs, ISNS_TAG_ISCSI_SCN_BITMAP, bitmap); } return call; }