Update of /cvsroot/linuxisns/isnsNT/isnsserver/src In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv19062/src Modified Files: iSNSList.c iSNSdb.c iSNSdereg.c iSNSesi.c iSNSobjects.c iSNSquery.c iSNSreg.c iSNSscn.c Log Message: abstract database read/write calls Index: iSNSobjects.c =================================================================== RCS file: /cvsroot/linuxisns/isnsNT/isnsserver/src/iSNSobjects.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** iSNSobjects.c 24 Aug 2007 22:51:34 -0000 1.1 --- iSNSobjects.c 27 Aug 2007 21:25:17 -0000 1.2 *************** *** 49,52 **** --- 49,90 ---- /********************************************************************* + read_FCNodeObject + *********************************************************************/ + int + read_FCNodeObject (char *p_id, SOIP_Fc_Node **p_node, SOIP_DB_Entry *p_entry) + { + ISNS_DBKey key; + int rval; + + if ( (p_id == NULL ) || (strlen(p_id) <= 0) ) + return (ERROR); + + key.tag = NODE_NAME_KEY; + strcpy(key.val.node_key.v, p_id); + rval = ISNSdbRead(&key,p_entry); + *p_node = (SOIP_Fc_Node *)&p_entry->data; + return rval; + } + + /********************************************************************* + read_FCPortObject + *********************************************************************/ + int + read_FCPortObject (char *p_id, SOIP_Ifcp **p_node, SOIP_DB_Entry *p_entry) + { + ISNS_DBKey key; + int rval; + + if ( (p_id == NULL ) || (strlen(p_id) <= 0) ) + return (ERROR); + + key.tag = PORT_NAME_KEY; + strcpy(key.val.port_key.v, p_id); + rval = ISNSdbRead(&key,p_entry); + *p_node = (SOIP_Ifcp *)&p_entry->data; + return rval; + } + + /********************************************************************* read_ISCSIObject *********************************************************************/ *************** *** 61,65 **** key.tag = ISCSI_ID_KEY; ! strcpy(key.val.node_key.v, p_id); rval = ISNSdbRead(&key,p_entry); *p_node = (SOIP_Iscsi *)&p_entry->data; --- 99,103 ---- key.tag = ISCSI_ID_KEY; ! strcpy(key.val.iscsi_key.v, p_id); rval = ISNSdbRead(&key,p_entry); *p_node = (SOIP_Iscsi *)&p_entry->data; *************** *** 99,102 **** --- 137,178 ---- /********************************************************************* + read_PortalObject + *********************************************************************/ + int + read_PortalObject (SOIP_Portal_Key *p_portal_key, SOIP_Portal **p_portal, SOIP_DB_Entry *p_entry) + { + ISNS_DBKey key; + int rval; + + if ( p_portal_key == NULL ) + return (ERROR); + + key.tag = PORTAL_ID_KEY; + __ISNS_COPY (&key.val.portal_key, sizeof(SOIP_Portal_Key), p_portal_key, sizeof(SOIP_Portal_Key)); + rval = ISNSdbRead(&key,p_entry); + *p_portal = (SOIP_Portal *)&p_entry->data; + return rval; + } + + /********************************************************************* + read_PortalGroupObject + *********************************************************************/ + int + read_PortalGroupObject (SOIP_Portal_Group_Key *p_portal_key, SOIP_Portal_Group **p_portal, SOIP_DB_Entry *p_entry) + { + ISNS_DBKey key; + int rval; + + if ( p_portal_key == NULL ) + return (ERROR); + + key.tag = PORTAL_GROUP_ID_KEY; + __ISNS_COPY (&key.val.portal_group_key, sizeof(SOIP_Portal_Group_Key), p_portal_key, sizeof(SOIP_Portal_Group_Key)); + rval = ISNSdbRead(&key,p_entry); + *p_portal = (SOIP_Portal_Group *)&p_entry->data; + return rval; + } + + /********************************************************************* read_DDObject Reads a DD object from the database *************** *** 139,144 **** /********************************************************************* write_ISCSIObject ! Reads a ISCSI object from the database *********************************************************************/ int --- 215,328 ---- /********************************************************************* + read_EntityidxObject + Reads a idx object from the database + *********************************************************************/ + int + read_EntityidxObject (int id, void **p_idx, SOIP_DB_Entry *p_entry) + { + ISNS_DBKey key; + int rval; + + if (id == 0) + return (ERROR); + + key.tag = ENTITY_IDX_KEY; + key.val.idx.index = id; + key.val.idx.index_type = ENTITY_IDX_KEY; + + rval = ISNSdbRead(&key,p_entry); + *p_idx = (char *)&p_entry->data.entity_idx.id; + + return rval; + } + + /********************************************************************* + read_ISCSIidxObject + Reads a idx object from the database + *********************************************************************/ + int + read_ISCSIidxObject (int id, void **p_idx, SOIP_DB_Entry *p_entry) + { + ISNS_DBKey key; + int rval; + + if (id == 0) + return (ERROR); + + key.tag = ISCSI_IDX_KEY; + key.val.idx.index = id; + key.val.idx.index_type = ISCSI_IDX_KEY; + + rval = ISNSdbRead(&key,p_entry); + *p_idx = (char *)&p_entry->data.iscsi_idx; + + return rval; + } + + /********************************************************************* + read_PortalidxObject + Reads a idx object from the database + *********************************************************************/ + int + read_PortalidxObject (int id, void **p_idx, SOIP_DB_Entry *p_entry) + { + ISNS_DBKey key; + int rval; + + if (id == 0) + return (ERROR); + + key.tag = PORTAL_IDX_KEY; + key.val.idx.index = id; + key.val.idx.index_type = PORTAL_IDX_KEY; + + rval = ISNSdbRead(&key,p_entry); + *p_idx = (char *)&p_entry->data.portal_idx; + + return rval; + } + + + /********************************************************************* + write_FCNodeObject + Writes a FCNode object from the database + *********************************************************************/ + int + write_FCNodeObject (char *p_id, SOIP_DB_Entry p_entry) + { + ISNS_DBKey key; + int rval; + + if ( (p_id == NULL ) || (strlen(p_id) <= 0) ) + return (ERROR); + + key.tag = NODE_NAME_KEY; + strcpy(key.val.node_key.v,p_id); + rval = ISNSdbWrite(&key, p_entry); + return rval; + } + + /********************************************************************* + write_FCPortObject + Writes a FCPort object from the database + *********************************************************************/ + int + write_FCPortObject (char *p_id, SOIP_DB_Entry p_entry) + { + ISNS_DBKey key; + int rval; + + if ( (p_id == NULL ) || (strlen(p_id) <= 0) ) + return (ERROR); + + key.tag = PORT_NAME_KEY; + strcpy(key.val.port_key.v,p_id); + rval = ISNSdbWrite(&key, p_entry); + return rval; + } + + /********************************************************************* write_ISCSIObject ! Writes a ISCSI object from the database *********************************************************************/ int *************** *** 152,156 **** key.tag = ISCSI_ID_KEY; ! strcpy(key.val.node_key.v,p_id); rval = ISNSdbWrite(&key, p_entry); return rval; --- 336,340 ---- key.tag = ISCSI_ID_KEY; ! strcpy(key.val.iscsi_key.v,p_id); rval = ISNSdbWrite(&key, p_entry); return rval; *************** *** 159,163 **** /********************************************************************* write_EntityObject ! Reads a Entity object from the database *********************************************************************/ int --- 343,347 ---- /********************************************************************* write_EntityObject ! Writes a Entity object from the database *********************************************************************/ int *************** *** 177,182 **** /********************************************************************* write_DDObject ! Reads a DD object from the database *********************************************************************/ int --- 361,404 ---- /********************************************************************* + write_PortalObject + Writes a Portal object from the database + *********************************************************************/ + int + write_PortalObject (SOIP_Portal_Key *p_id, SOIP_DB_Entry p_entry) + { + ISNS_DBKey key; + int rval; + + if ( (p_id == NULL ) ) + return (ERROR); + + key.tag = PORTAL_ID_KEY; + __ISNS_COPY(&key.val.portal_key, sizeof(SOIP_Portal_Key), p_id, sizeof(SOIP_Portal_Key)); + rval = ISNSdbWrite(&key, p_entry); + return rval; + } + + /********************************************************************* + write_PortalGroupObject + Writes a PortalGroup object from the database + *********************************************************************/ + int + write_PortalGroupObject (SOIP_Portal_Group_Key *p_id, SOIP_DB_Entry p_entry) + { + ISNS_DBKey key; + int rval; + + if ( (p_id == NULL ) ) + return (ERROR); + + key.tag = PORTAL_GROUP_ID_KEY; + __ISNS_COPY(&key.val.portal_group_key, sizeof(SOIP_Portal_Group_Key), p_id, sizeof(SOIP_Portal_Group_Key)); + rval = ISNSdbWrite(&key, p_entry); + return rval; + } + + /********************************************************************* write_DDObject ! Writes a DD object from the database *********************************************************************/ int *************** *** 197,201 **** /********************************************************************* write_DDSObject ! Reads a DDS object from the database *********************************************************************/ int --- 419,423 ---- /********************************************************************* write_DDSObject ! Writes a DDS object from the database *********************************************************************/ int *************** *** 215,218 **** --- 437,503 ---- /********************************************************************* + write_ISCSIidxObject + Writes a index object from the database + *********************************************************************/ + int + write_ISCSIidxObject (int id, SOIP_DB_Entry p_entry) + { + ISNS_DBKey idx_key; + int rval; + + if (id == 0) + return (ERROR); + + idx_key.tag = ISCSI_IDX_KEY; + idx_key.val.idx.index_type = ISCSI_IDX_KEY; + idx_key.val.idx.index = id; + rval = ISNSdbWrite(&idx_key,p_entry); + + return rval; + } + + /********************************************************************* + write_EntityidxObject + Writes a index object from the database + *********************************************************************/ + int + write_EntityidxObject (int id, SOIP_DB_Entry p_entry) + { + ISNS_DBKey idx_key; + int rval; + + if (id == 0) + return (ERROR); + + idx_key.tag = ENTITY_IDX_KEY; + idx_key.val.idx.index_type = ENTITY_IDX_KEY; + idx_key.val.idx.index = id; + rval = ISNSdbWrite(&idx_key,p_entry); + + return rval; + } + + /********************************************************************* + write_PortalidxObject + Writes a index object from the database + *********************************************************************/ + int + write_PortalidxObject (int id, SOIP_DB_Entry p_entry) + { + ISNS_DBKey idx_key; + int rval; + + if (id == 0) + return (ERROR); + + idx_key.tag = PORTAL_IDX_KEY; + idx_key.val.idx.index_type = PORTAL_IDX_KEY; + idx_key.val.idx.index = id; + rval = ISNSdbWrite(&idx_key,p_entry); + + return rval; + } + + /********************************************************************* delete_DDObject delete a DD object from the database *************** *** 253,256 **** --- 538,581 ---- /********************************************************************* + delete_FCNodeObject + delete a FCNode object from the database + *********************************************************************/ + int + delete_FCNodeObject (char *p_id) + { + ISNS_DBKey key; + int rval; + + if ( (p_id == NULL ) || (strlen(p_id) <= 0) ) + return (ERROR); + + key.tag = NODE_NAME_KEY; + strcpy(key.val.node_key.v,p_id); + + rval = ISNSdbDelete(&key); + return rval; + } + + /********************************************************************* + delete_FCPortObject + delete a FCPort object from the database + *********************************************************************/ + int + delete_FCPortObject (char *p_id) + { + ISNS_DBKey key; + int rval; + + if ( (p_id == NULL ) || (strlen(p_id) <= 0) ) + return (ERROR); + + key.tag = PORT_NAME_KEY; + strcpy(key.val.port_key.v,p_id); + + rval = ISNSdbDelete(&key); + return rval; + } + + /********************************************************************* delete_ISCSIObject delete a ISCSI object from the database *************** *** 291,292 **** --- 616,716 ---- return rval; } + + /********************************************************************* + delete_PortalObject + delete a Portal object from the database + *********************************************************************/ + int + delete_PortalObject (SOIP_Portal_Key *p_id) + { + ISNS_DBKey key; + int rval; + + if ( (p_id == NULL ) ) + return (ERROR); + + key.tag = PORTAL_ID_KEY; + __ISNS_COPY(&key.val.portal_key, sizeof(SOIP_Portal_Key), p_id, sizeof(SOIP_Portal_Key)); + + rval = ISNSdbDelete(&key); + return rval; + } + + /********************************************************************* + delete_PortalGroupObject + delete a PortalGroup object from the database + *********************************************************************/ + int + delete_PortalGroupObject (SOIP_Portal_Group_Key *p_id) + { + ISNS_DBKey key; + int rval; + + if ( (p_id == NULL ) ) + return (ERROR); + + key.tag = PORTAL_GROUP_ID_KEY; + __ISNS_COPY(&key.val.portal_group_key, sizeof(SOIP_Portal_Group_Key), p_id, sizeof(SOIP_Portal_Group_Key)); + + rval = ISNSdbDelete(&key); + return rval; + } + + /********************************************************************* + delete_EntityidxObject + delete a idx object from the database + *********************************************************************/ + int + delete_EntityidxObject (int id) + { + ISNS_DBKey key; + int rval; + + if (id == 0) + return (ERROR); + + key.tag = ENTITY_IDX_KEY; + key.val.idx.index = id; + key.val.idx.index_type = ENTITY_IDX_KEY; + rval = ISNSdbDelete(&key); + return rval; + } + + /********************************************************************* + delete_ISCSIidxObject + delete a idx object from the database + *********************************************************************/ + int + delete_ISCSIidxObject (int id) + { + ISNS_DBKey key; + int rval; + + if (id == 0) + return (ERROR); + + key.tag = ISCSI_IDX_KEY; + key.val.idx.index = id; + key.val.idx.index_type = ISCSI_IDX_KEY; + rval = ISNSdbDelete(&key); + return rval; + } + /********************************************************************* + delete_PortalidxObject + delete a idx object from the database + *********************************************************************/ + int + delete_PortalidxObject (int id) + { + ISNS_DBKey key; + int rval; + + if (id == 0) + return (ERROR); + + key.tag = PORTAL_IDX_KEY; + key.val.idx.index = id; + key.val.idx.index_type = PORTAL_IDX_KEY; + rval = ISNSdbDelete(&key); + return rval; + } Index: iSNSquery.c =================================================================== RCS file: /cvsroot/linuxisns/isnsNT/isnsserver/src/iSNSquery.c,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** iSNSquery.c 24 Aug 2007 22:51:34 -0000 1.28 --- iSNSquery.c 27 Aug 2007 21:25:17 -0000 1.29 *************** *** 234,238 **** SOIP_Ifcp *p_port; SOIP_Portal_Key db_portal; - ISNS_DBKey read_key; int rval; --- 234,237 ---- *************** *** 319,345 **** while (entityKeyFlag != -1) { [...1140 lines suppressed...] p_portal = ptr; --- 3310,3313 ---- *************** *** 3536,3541 **** case DDS_ID_KEY: { - ISNS_LIST_NODE * pnode; - SOIP_Dds * p_dds; p_dds = ptr; int jj; --- 3342,3345 ---- *************** *** 3558,3562 **** case DD_ID_KEY: { - SOIP_Dd *p_dd; p_dd = ptr; int ii; --- 3362,3365 ---- Index: iSNSList.c =================================================================== RCS file: /cvsroot/linuxisns/isnsNT/isnsserver/src/iSNSList.c,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** iSNSList.c 13 Aug 2007 22:56:44 -0000 1.14 --- iSNSList.c 27 Aug 2007 21:25:17 -0000 1.15 *************** *** 342,346 **** Retrieves the data pointer from a node. ********************************************************************/ ! char * GetNodeData(ISNS_LIST_NODE *pnode ) { --- 342,346 ---- Retrieves the data pointer from a node. ********************************************************************/ ! void * GetNodeData(ISNS_LIST_NODE *pnode ) { Index: iSNSesi.c =================================================================== RCS file: /cvsroot/linuxisns/isnsNT/isnsserver/src/iSNSesi.c,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** iSNSesi.c 7 Aug 2007 14:41:47 -0000 1.11 --- iSNSesi.c 27 Aug 2007 21:25:17 -0000 1.12 *************** *** 49,52 **** --- 49,53 ---- #include "iSNSparse.h" #include "iSNSdebug.h" + #include "iSNSobjects.h" *************** *** 97,107 **** { __DEBUG (isns_esi_debug &1, Next Portal Record found); ! ! rval = ISNSdbRead(&read_key,&entry2); if (rval != SUCCESS) return rval; - p_portal = (SOIP_Portal *)&entry2.data; - /* check to see if an interval is set > 0 */ if ( p_portal->esi_interval == 0 ) --- 98,106 ---- { __DEBUG (isns_esi_debug &1, Next Portal Record found); ! __ISNS_COPY(&db_portal, sizeof(SOIP_Portal_Key), &read_key.val.portal_key, sizeof(SOIP_Portal_Key)); ! rval = read_PortalObject(&db_portal, &p_portal, &entry2); if (rval != SUCCESS) return rval; /* check to see if an interval is set > 0 */ if ( p_portal->esi_interval == 0 ) *************** *** 124,128 **** p_portal->esi_timer = mytime; p_portal->esiSent++; ! rval = ISNSdbWrite(&read_key,entry2); __DEBUG (isns_esi_debug &1, esi_timer Timer Expired esiSend:%i,p_portal->esiSent); --- 123,127 ---- p_portal->esi_timer = mytime; p_portal->esiSent++; ! rval = write_PortalObject(&db_portal, entry2); __DEBUG (isns_esi_debug &1, esi_timer Timer Expired esiSend:%i,p_portal->esiSent); *************** *** 177,181 **** db_portal.ip_port=p_portal->ip_port; ! SNSRemovePortalEntry ((char *)&db_portal, NULL, NULL); } } --- 176,180 ---- db_portal.ip_port=p_portal->ip_port; ! SNSRemovePortalEntry (&db_portal, NULL, NULL); } } *************** *** 201,205 **** int rval; SOIP_Entity_Id db_entity_id; - ISNS_DBKey update_key; __DEBUG (isns_esi_debug &1, ISNS_ProcessESI); --- 200,203 ---- *************** *** 217,229 **** strncpy(db_entity_id.id,p_attr->val.entity_id.id,sizeof(SOIP_Entity_Id)); ! ISNS_DBKey key; ! key.tag = ENTITY_ID_KEY; ! strcpy(key.val.entity_key.id,db_entity_id.id); ! rval = ISNSdbRead(&key,&entry); if (rval != SUCCESS) return (ERROR); - p_entity = &entry.data.entity; - /* Update the time stamp */ len = sizeof (mytime); --- 215,222 ---- strncpy(db_entity_id.id,p_attr->val.entity_id.id,sizeof(SOIP_Entity_Id)); ! rval = read_EntityObject(db_entity_id.id, &p_entity, &entry); if (rval != SUCCESS) return (ERROR); /* Update the time stamp */ len = sizeof (mytime); *************** *** 235,239 **** /* Store Entry */ ! ISNSdbWrite(&key,entry); memset(&db_portal,0,sizeof(SOIP_Portal_Key)); --- 228,232 ---- /* Store Entry */ ! write_EntityObject(db_entity_id.id, entry); memset(&db_portal,0,sizeof(SOIP_Portal_Key)); *************** *** 258,273 **** db_portal.ip_port=p_attr->val.ip_port; ! update_key.tag = PORTAL_ID_KEY; ! memcpy(&update_key.val,&db_portal,sizeof(SOIP_Portal_Key)); ! rval = ISNSdbRead(&update_key,&entry); if (rval != SUCCESS) return rval; - p_portal = &entry.data.portal; - p_portal->esiSent = 0; /* Store Portal */ ! rval = ISNSdbWrite(&update_key,entry); return ( ISNS_NO_ERR ); --- 251,262 ---- db_portal.ip_port=p_attr->val.ip_port; ! rval = read_PortalObject(&db_portal, &p_portal, &entry); if (rval != SUCCESS) return rval; p_portal->esiSent = 0; /* Store Portal */ ! rval = write_PortalObject(&db_portal, entry); return ( ISNS_NO_ERR ); Index: iSNSdereg.c =================================================================== RCS file: /cvsroot/linuxisns/isnsNT/isnsserver/src/iSNSdereg.c,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** iSNSdereg.c 24 Aug 2007 22:51:34 -0000 1.27 --- iSNSdereg.c 27 Aug 2007 21:25:17 -0000 1.28 *************** *** 487,491 **** int rval; ISNS_LIST_NODE *pnode; - ISNS_DBKey key; __DEBUG ( isns_dereg_debug & 1, (Deregistering Entity %s),p_entity_id); --- 487,490 ---- *************** *** 539,550 **** /* Remove Entity In Entity Index Database */ ! ISNS_DBKey remove_key; ! remove_key.tag = ENTITY_IDX_KEY; ! remove_key.val.idx.index = p_entity->entity_index; ! remove_key.val.idx.index_type = ENTITY_IDX_KEY; ! ISNSdbDelete(&remove_key); /* Remove Entity */ ! rval = delete_EntityObject(key.val.entity_key.id); iSNS_stats.num_entity--; --- 538,545 ---- /* Remove Entity In Entity Index Database */ ! delete_EntityidxObject(p_entity->entity_index); /* Remove Entity */ ! rval = delete_EntityObject(p_entity_id); iSNS_stats.num_entity--; *************** *** 576,580 **** SOIP_DD_Key dd_key; ISNS_LIST_NODE *pnode; - ISNS_DBKey delete_key; __DEBUG (isns_dereg_debug & 1, (Deregistering IFCP WWPN)); --- 571,574 ---- *************** *** 590,602 **** __ISNS_COPY (buffer, sizeof(buffer), ifcp_node_key, PORT_NAME_SIZE); ! ISNS_DBKey read_key; ! read_key.tag = PORT_NAME_KEY; ! strcpy(read_key.val.port_name.v,(char *)buffer); ! rval = ISNSdbRead(&read_key,&entry2); if (rval != SUCCESS) return rval; - p_ifcp_node = (SOIP_Ifcp *)&entry2.data; - /* Remove from all DD */ pnode=NULL; --- 584,591 ---- __ISNS_COPY (buffer, sizeof(buffer), ifcp_node_key, PORT_NAME_SIZE); ! rval = read_FCPortObject((char *)buffer, &p_ifcp_node, &entry2); if (rval != SUCCESS) return rval; /* Remove from all DD */ pnode=NULL; *************** *** 604,616 **** { dd_key.id = *(uint32_t *) GetNodeData(pnode); ! ISNS_DBKey read_key; ! read_key.tag = PORT_NAME_KEY; ! strcpy(read_key.val.port_name.v,GetNodeData(pnode)); ! rval = ISNSdbRead(&read_key,&entry5); if (rval != SUCCESS) return rval; - p_dd = (SOIP_Dd *)&entry5.data; - if (ISNS_NO_ERR != Disable_DD_Member (p_dd, p_ifcp_node->port_name.v, ISNS_DD_IFCP_MEMBER)) --- 593,600 ---- { dd_key.id = *(uint32_t *) GetNodeData(pnode); ! rval = read_DDObject(dd_key.id, &p_dd, &entry5); if (rval != SUCCESS) return rval; if (ISNS_NO_ERR != Disable_DD_Member (p_dd, p_ifcp_node->port_name.v, ISNS_DD_IFCP_MEMBER)) *************** *** 618,625 **** /* Store Entry */ ! ISNS_DBKey key; ! key.tag = PORT_NAME_KEY; ! key.val.dd_key.id = dd_key.id; ! rval = ISNSdbWrite(&key,entry5); } --- 602,606 ---- /* Store Entry */ ! rval = write_DDObject(dd_key.id,entry5); } *************** *** 639,652 **** __ISNS_COPY (db_node_name.v, sizeof(db_node_name.v), p_ifcp_node->node_name.v, ISNS_NODE_NAME_SIZE); db_node_name.v[8] = (char)SOIP_DB_Node_Id; ! ISNS_DBKey read_key; ! read_key.tag = NODE_NAME_KEY; ! strcpy(read_key.val.node_key.v,db_node_name.v); ! rval = ISNSdbRead(&read_key,&entry3); if (rval != SUCCESS) return rval; - p_fc_node = &entry3.data.node; - - /* Remove IFCP Node from FC Node's List */ if ((pnode=FindNode(&p_fc_node->port_list, ifcp_node_key, PORT_NAME_SIZE))) --- 620,627 ---- __ISNS_COPY (db_node_name.v, sizeof(db_node_name.v), p_ifcp_node->node_name.v, ISNS_NODE_NAME_SIZE); db_node_name.v[8] = (char)SOIP_DB_Node_Id; ! read_FCNodeObject(db_node_name.v, &p_fc_node, &entry3); if (rval != SUCCESS) return rval; /* Remove IFCP Node from FC Node's List */ if ((pnode=FindNode(&p_fc_node->port_list, ifcp_node_key, PORT_NAME_SIZE))) *************** *** 655,662 **** } ! ISNS_DBKey key; ! key.tag = NODE_NAME_KEY; ! strcpy(key.val.node_key.v,db_node_name.v); ! rval = ISNSdbWrite(&key,entry3); if (IsEmptyList(&p_fc_node->port_list)) --- 630,634 ---- } ! rval = write_FCNodeObject(db_node_name.v, entry3); if (IsEmptyList(&p_fc_node->port_list)) *************** *** 693,705 **** { /* Fetch Portal */ ! ISNS_DBKey read_key; ! read_key.tag = PORTAL_ID_KEY; ! __ISNS_COPY (&read_key.val, sizeof(read_key.val), GetNodeData(pnode), sizeof(SOIP_Portal_Key)); ! rval = ISNSdbRead(&read_key,&entry3); if (rval != SUCCESS) return rval; - p_portal = (SOIP_Portal *)&entry3.data; - if (p_portal->esi_interval != 0) { --- 665,672 ---- { /* Fetch Portal */ ! rval = read_PortalObject(GetNodeData(pnode), &p_portal, &entry3); if (rval != SUCCESS) return rval; if (p_portal->esi_interval != 0) { *************** *** 721,727 **** iSNS_stats.num_ifcp--; ! delete_key.tag = PORT_NAME_KEY; ! strcpy(delete_key.val.port_name.v,buffer); ! if ( ISNSdbDelete (&delete_key) != SUCCESS) { __LOG_ERROR ("ERROR: IFCP NODE Removal failed."); --- 688,693 ---- iSNS_stats.num_ifcp--; ! rval = delete_FCPortObject(buffer); ! if (rval != SUCCESS) { __LOG_ERROR ("ERROR: IFCP NODE Removal failed."); *************** *** 806,810 **** if (SUCCESS != ! (rval = SNSRemovePortalEntry ((char *)&db_portal, src_attr, rspmsg))) return (rval); --- 772,776 ---- if (SUCCESS != ! (rval = SNSRemovePortalEntry (&db_portal, src_attr, rspmsg))) return (rval); *************** *** 968,972 **** SOIP_DD_Key dd_key; ISNS_LIST_NODE *pnode; - ISNS_DBKey remove_key; __DEBUG (isns_dereg_debug & 1, (Deregistering iSCSI Node:%s),iscsi_node_key); --- 934,937 ---- *************** *** 1020,1027 **** /* Delete the iSCSI Node */ ! remove_key.tag = ISCSI_IDX_KEY; ! remove_key.val.idx.index = p_node->iscsi_index; ! remove_key.val.idx.index_type = ISCSI_IDX_KEY; ! ISNSdbDelete(&remove_key); RemoveCert (&p_node->ptr_cert); DeleteList(&p_node->dd_id_list); --- 985,990 ---- /* Delete the iSCSI Node */ ! delete_ISCSIidxObject(p_node->iscsi_index); ! RemoveCert (&p_node->ptr_cert); DeleteList(&p_node->dd_id_list); *************** *** 1051,1058 **** int rval; SOIP_Fc_Node *p_fc_node; - SOIP_Ifcp *p_ifcp_node; SOIP_DB_Node_Name db_node_name; ISNS_LIST_NODE *pnode; - ISNS_DBKey delete_key; ISNS_DBKey read_key; --- 1014,1019 ---- *************** *** 1064,1088 **** db_node_name.v[8] = (char)SOIP_DB_Node_Id; ! read_key.tag = NODE_NAME_KEY; ! strcpy(read_key.val.node_key.v,db_node_name.v); ! rval = ISNSdbRead(&read_key,&entry4); if (rval != SUCCESS) return rval; - p_fc_node = &entry4.data.node; - pnode=NULL; while ((pnode=GetNextNode(&p_fc_node->port_list, pnode))) { strcpy(read_key.val.node_key.v,GetNodeData(pnode)); ! rval = ISNSdbRead(&read_key,&entry5); if (rval != SUCCESS) return rval; ! p_ifcp_node = &entry5.data.port; ! ! memset (p_ifcp_node->node_name.v, 0, ISNS_NODE_NAME_SIZE); ! ! rval = ISNSdbWrite(&read_key,entry5); } --- 1025,1042 ---- db_node_name.v[8] = (char)SOIP_DB_Node_Id; ! rval = read_FCNodeObject(db_node_name.v, &p_fc_node, &entry4); if (rval != SUCCESS) return rval; pnode=NULL; while ((pnode=GetNextNode(&p_fc_node->port_list, pnode))) { strcpy(read_key.val.node_key.v,GetNodeData(pnode)); ! rval = read_FCNodeObject(GetNodeData(pnode), &p_fc_node, &entry5); if (rval != SUCCESS) return rval; ! memset (p_fc_node->node_name.v, 0, ISNS_NODE_NAME_SIZE); ! rval = write_FCNodeObject(db_node_name.v, entry5); } *************** *** 1090,1096 **** db_node_name.v[8] = (char)SOIP_DB_Node_Id; ! delete_key.tag = NODE_NAME_KEY; ! strcpy(delete_key.val.node_key.v,db_node_name.v); ! ISNSdbDelete (&delete_key); __DEBUG (isns_dereg_debug &1,(Prepare response for: %s),p_key); --- 1044,1048 ---- db_node_name.v[8] = (char)SOIP_DB_Node_Id; ! delete_FCNodeObject(db_node_name.v); __DEBUG (isns_dereg_debug &1,(Prepare response for: %s),p_key); *************** *** 1104,1108 **** *********************************************************************/ int ! SNSRemovePortalEntry (char *portal_key, ISNS_Attr * src_attr, ISNS_Msg * p_rspmsg) { --- 1056,1060 ---- *********************************************************************/ int ! SNSRemovePortalEntry (SOIP_Portal_Key *portal_key, ISNS_Attr * src_attr, ISNS_Msg * p_rspmsg) { *************** *** 1114,1118 **** PORTAL_LIST_ENTRY portalListEntry; char *p_iscsi_name; - ISNS_DBKey read_key; __DEBUG (isns_dereg_debug & 1, (Deregistering Portal)); --- 1066,1069 ---- *************** *** 1121,1132 **** p_scn_all_msg_buffer->hdr.type = ISNS_SCN; ! read_key.tag = PORTAL_ID_KEY; ! __ISNS_COPY (&read_key.val, sizeof(read_key.val), portal_key, sizeof(SOIP_Portal_Key)); ! rval = ISNSdbRead(&read_key,&entry2); if (rval != SUCCESS) return rval; ! ! p_portal = &entry2.data.portal; ! /* Validate the src attr has permission to delete the node --- 1072,1081 ---- p_scn_all_msg_buffer->hdr.type = ISNS_SCN; ! rval = read_PortalObject(portal_key, &p_portal, &entry2); if (rval != SUCCESS) + { + __DEBUG(isns_dereg_debug &1, Portal not found:%i,rval); return rval; ! } /* Validate the src attr has permission to delete the node *************** *** 1140,1154 **** RemoveCert (&p_portal->ptr_cert); ! if (ISNSdbDelete(&read_key) != SUCCESS) ! { ! __LOG_ERROR ("ERROR: Portal DEREG Failed."); ! return (ERROR); ! } ! ! ISNS_DBKey remove_key; ! remove_key.tag = PORTAL_IDX_KEY; ! remove_key.val.idx.index = p_portal->portal_index; ! remove_key.val.idx.index_type = PORTAL_IDX_KEY; ! ISNSdbDelete(&remove_key); iSNS_stats.num_portals--; --- 1089,1093 ---- RemoveCert (&p_portal->ptr_cert); ! delete_PortalidxObject(p_portal->portal_index); iSNS_stats.num_portals--; *************** *** 1169,1173 **** } ! rval = ISNSdbWrite(&read_key,entry4); /* Send detailed SCN */ --- 1108,1112 ---- } ! rval = write_EntityObject(p_portal->entity_id.id, entry4); /* Send detailed SCN */ *************** *** 1179,1182 **** --- 1118,1125 ---- } + rval = delete_PortalObject(portal_key); + if ( rval != SUCCESS) + __LOG_ERROR ("ERROR: Portal DEREG Failed."); + return (rval); } *************** *** 1222,1225 **** --- 1165,1171 ---- ISNS_LIST_NODE *pnode; int memberRemovedFlag; + SOIP_Dds *p_dds; + SOIP_DD_Key dds_key; + ISNS_LIST_NODE *pnode2; dd_key.id = id; *************** *** 1274,1281 **** while ( (pnode = GetNextNode( &p_dd->dds_list, pnode )) ) { - SOIP_Dds *p_dds; - SOIP_DD_Key dds_key; - ISNS_LIST_NODE *pnode2; - dds_key.id = *(uint32_t *) GetNodeData(pnode); rval = read_DDSObject(dds_key.id, &p_dds, &entry2); --- 1220,1223 ---- *************** *** 1479,1493 **** SOIP_DB_Entry lentry; ISNS_LIST_NODE *p_lnode; - ISNS_DBKey key; int rval; ! key.tag = PORT_NAME_KEY; ! strcpy(key.val.port_name.v,p_node_name); ! rval = ISNSdbRead(&key,&lentry); if (rval != SUCCESS) return rval; - p_node = (SOIP_Ifcp *)&lentry.data; - if ((p_lnode=FindNode(&p_node->dd_id_list, (char *)&id, sizeof(id)))) { --- 1421,1430 ---- SOIP_DB_Entry lentry; ISNS_LIST_NODE *p_lnode; int rval; ! rval = read_FCPortObject(p_node_name, &p_node, &lentry); if (rval != SUCCESS) return rval; if ((p_lnode=FindNode(&p_node->dd_id_list, (char *)&id, sizeof(id)))) { *************** *** 1495,1499 **** } ! ISNSdbWrite(&key,lentry); return (ISNS_NO_ERR); } --- 1432,1436 ---- } ! write_FCPortObject(p_node_name, lentry); return (ISNS_NO_ERR); } *************** *** 1615,1635 **** key = (ISNS_Key *)(key_indx[ifcpKeyIndex]); ! ISNS_DBKey read_key; ! read_key.tag = PORT_NAME_KEY; ! __ISNS_COPY (&read_key.val, sizeof(read_key.val), &key->val, PORT_NAME_SIZE); ! rval = ISNSdbRead(&read_key,&entry); if (rval != SUCCESS) return rval; - p_ifcp_node = &entry.data.port; - p_ifcp_node->scn_bitmap=0; p_ifcp_node->scn_sockfd = 0; /* Store the node */ ! ISNS_DBKey update_key; ! update_key.tag = PORT_NAME_KEY; ! strcpy(update_key.val.port_name.v,(char *)&key->val); ! ISNSdbWrite(&update_key,entry); return (ISNS_NO_ERR); --- 1552,1564 ---- key = (ISNS_Key *)(key_indx[ifcpKeyIndex]); ! rval = read_FCPortObject((char *)&key->val, &p_ifcp_node, &entry); if (rval != SUCCESS) return rval; p_ifcp_node->scn_bitmap=0; p_ifcp_node->scn_sockfd = 0; /* Store the node */ ! rval = write_FCPortObject((char *)&key->val, entry); return (ISNS_NO_ERR); Index: iSNSreg.c =================================================================== RCS file: /cvsroot/linuxisns/isnsNT/isnsserver/src/iSNSreg.c,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** iSNSreg.c 24 Aug 2007 22:51:34 -0000 1.30 --- iSNSreg.c 27 Aug 2007 21:25:17 -0000 1.31 *************** *** 258,262 **** PORTAL_LIST_ENTRY newPortalEntry; char *p_iscsi_name; - ISNS_DBKey read_key; __DEBUG (isns_reg_debug & 1, (Registering Portal)); --- 258,261 ---- *************** *** 378,391 **** __DEBUG (isns_reg_debug &1,(read portal:%s),db_portal.ip_addr.v); ! read_key.tag = PORTAL_ID_KEY; ! __ISNS_COPY (&read_key.val, sizeof(read_key.val), &db_portal,sizeof(SOIP_Portal_Key)); ! rval = ISNSdbRead(&read_key,&entry2); ! ! p_portal = &entry2.data.portal; ! if ( (rval == SUCCESS) && (p_md->msg.hdr.flags & ISNS_FLAG_REPLACE_REG) ) { __DEBUG (isns_reg_debug & 1,Deregistering Portal); ! SNSRemovePortalEntry ((char *)&db_portal, NULL, NULL); rval = ERROR; } --- 377,385 ---- __DEBUG (isns_reg_debug &1,(read portal:%s),db_portal.ip_addr.v); ! rval = read_PortalObject(&db_portal, &p_portal, &entry2); if ( (rval == SUCCESS) && (p_md->msg.hdr.flags & ISNS_FLAG_REPLACE_REG) ) { __DEBUG (isns_reg_debug & 1,Deregistering Portal); ! SNSRemovePortalEntry (&db_portal, NULL, NULL); rval = ERROR; } *************** *** 403,407 **** /* create a new node element */ memset (&entry2, 0, sizeof (SOIP_DB_Entry)); - entry2.data_type = PORTAL_ID_KEY; attr = (ISNS_Attr *) attr_indx[portalIpIndex]; --- 397,400 ---- *************** *** 413,426 **** p_portal->portal_index = ISNSGetNewPortalIdx(); - ISNS_DBKey idx_key; - idx_key.tag = PORTAL_IDX_KEY; - idx_key.val.idx.index_type = PORTAL_IDX_KEY; - idx_key.val.idx.index = p_portal->portal_index; SOIP_DB_Portal *p_idx; memset (&entry3, 0, sizeof(SOIP_DB_Entry)); - entry3.data_type = PORTAL_IDX_KEY; p_idx = &entry3.data.portal_idx; __ISNS_COPY (p_idx, sizeof(entry3.data.portal_idx), &db_portal,sizeof(SOIP_DB_Portal)); ! rval = ISNSdbWrite(&idx_key,entry3); /* Update Entity's portal Bitmap */ --- 406,414 ---- p_portal->portal_index = ISNSGetNewPortalIdx(); SOIP_DB_Portal *p_idx; memset (&entry3, 0, sizeof(SOIP_DB_Entry)); p_idx = &entry3.data.portal_idx; __ISNS_COPY (p_idx, sizeof(entry3.data.portal_idx), &db_portal,sizeof(SOIP_DB_Portal)); ! rval = write_PortalidxObject(p_portal->portal_index, entry3); /* Update Entity's portal Bitmap */ *************** *** 483,488 **** /* Store Entity Entry */ __DEBUG (isns_reg_debug &1,Store Entity); ! rval = ISNSdbWrite(&read_key,entry); ! //ISNSDisplay_Entity (&entry.data.entity,HI_DETAIL); } while ( eidKeyIndex!=-1 ); --- 471,475 ---- /* Store Entity Entry */ __DEBUG (isns_reg_debug &1,Store Entity); ! rval = write_EntityObject(db_entity_id.id, entry); } while ( eidKeyIndex!=-1 ); *************** *** 498,502 **** { attr = (ISNS_Attr *)(key_indx[ eidKeyIndex ]); ! if ( read_EntityObject ((char *)&attr->val, &p_entity, &entry) ) { return (ISNS_INVALID_REG_ERR); --- 485,490 ---- { attr = (ISNS_Attr *)(key_indx[ eidKeyIndex ]); ! strncpy(db_entity_id.id, (char *)&attr->val, sizeof(db_entity_id.id)); ! if ( read_EntityObject (db_entity_id.id, &p_entity, &entry) ) { return (ISNS_INVALID_REG_ERR); *************** *** 525,530 **** /* Store Entity Entry */ ! //strncpy(db_entity_id.id, (char *)&attr->val, sizeof(db_entity_id.id)); ! rval = ISNSdbWrite(&read_key,entry); } --- 513,517 ---- /* Store Entity Entry */ ! rval = write_EntityObject(db_entity_id.id,entry); } *************** *** 630,637 **** /* Store the portal */ __DEBUG (isns_reg_debug &1,Store Portal:%s,db_portal.ip_addr.v); ! ISNS_DBKey update_key; ! update_key.tag = PORTAL_ID_KEY; ! __ISNS_COPY (&update_key.val, sizeof(update_key.val), &db_portal, sizeof(SOIP_Portal_Key)); ! rval = ISNSdbWrite(&update_key,entry2); /* insert the key(s) */ --- 617,621 ---- /* Store the portal */ __DEBUG (isns_reg_debug &1,Store Portal:%s,db_portal.ip_addr.v); ! rval = write_PortalObject(&db_portal, entry2); /* insert the key(s) */ *************** *** 690,694 **** int portal_tag = 1; int newPortalGroupRegFlag; - ISNS_DBKey read_key; __DEBUG (isns_reg_debug & 1, (Registering Portal Group)); --- 674,677 ---- *************** *** 860,874 **** __DEBUG (isns_reg_debug &1,(read portal:%s),db_portal_group.id.v); ! read_key.tag = PORTAL_GROUP_ID_KEY; ! __ISNS_COPY (&read_key.val, sizeof(read_key.val), &db_portal_group, sizeof(SOIP_Portal_Group_Key)); ! rval = ISNSdbRead(&read_key,&entry2); ! __DEBUG (isns_reg_debug & 1, Read PortalGroup for DB status:%i,rval); ! ! p_portal_group = &entry2.data.portal_group; ! if ( (rval == SUCCESS) && (p_md->msg.hdr.flags & ISNS_FLAG_REPLACE_REG) ) { __DEBUG (isns_reg_debug & 1,Deregistering PortalGroup); ! rval = ISNSdbDelete(&read_key); rval = ERROR; } --- 843,851 ---- __DEBUG (isns_reg_debug &1,(read portal:%s),db_portal_group.id.v); ! rval = read_PortalGroupObject(&db_portal_group, &p_portal_group, &entry2); if ( (rval == SUCCESS) && (p_md->msg.hdr.flags & ISNS_FLAG_REPLACE_REG) ) { __DEBUG (isns_reg_debug & 1,Deregistering PortalGroup); ! rval = delete_PortalGroupObject(&db_portal_group); rval = ERROR; } *************** *** 880,885 **** memset (&entry2, 0, sizeof (SOIP_DB_Entry)); - entry2.data_type = PORTAL_GROUP_ID_KEY; - attr = (ISNS_Attr *) attr_indx[portalIpIndex]; __ISNS_COPY (p_portal_group->ip_addr.v, sizeof(p_portal_group->ip_addr.v), attr->val.ip_addr.v, attr->len); --- 857,860 ---- *************** *** 897,908 **** __DEBUG (isns_reg_debug &1,Store Portal Group:%s,db_portal_group.id.v); ! ISNS_DBKey update_key; ! update_key.tag = PORTAL_GROUP_ID_KEY; ! __ISNS_COPY (&update_key.val, sizeof(update_key.val), &db_portal_group, sizeof(SOIP_Portal_Group_Key)); ! rval = ISNSdbWrite(&update_key,entry2); ! __DEBUG (isns_reg_debug & 1, Write PortalGroup for DB status:%i,rval); ! ! rval = ISNSdbRead(&read_key,&entry2); ! __DEBUG (isns_reg_debug & 1, Read PortalGroup for DB status:%i,rval); if ( newPortalGroupRegFlag ) --- 872,876 ---- __DEBUG (isns_reg_debug &1,Store Portal Group:%s,db_portal_group.id.v); ! rval = write_PortalGroupObject(&db_portal_group, entry2); if ( newPortalGroupRegFlag ) *************** *** 915,920 **** ISNSAppendKey (p_rspmsg, ISNS_PORTAL_GROUP_PORT, ISNS_PORTAL_PORT_SIZE, 0, p_portal_group->ip_port); - ISNSAppendKey (p_rspmsg, ISNS_PORTAL_GROUP_ISCSI_NAME, ISNS_PORTAL_PORT_SIZE, 0, - p_portal_group->ip_port); ISNSAppendKey (p_rspmsg, ISNS_PORTAL_GROUP_TAG, ISNS_PORTAL_GROUP_TAG_SIZE, 0, p_portal_group->portal_tag); --- 883,886 ---- *************** *** 1074,1078 **** /* Create a new DDS element */ memset (&entry, 0, sizeof (SOIP_DB_Entry)); - entry.data_type = DDS_ID_KEY; p_dds->id = *(uint32_t *) & key->val; --- 1040,1043 ---- *************** *** 1500,1504 **** SOIP_Dd_Member new_member; SOIP_Iscsi *p_node; - ISNS_DBKey key; int rval; SOIP_DB_Entry lentry; --- 1465,1468 ---- *************** *** 1525,1543 **** (0 == memcmp (p_member->node_id, p_node_name, strlen(p_node_name) ))) { - /* found a match */ - /* update record */ - key.tag = LIST_KEY; - key.val.list.list_id = DD_MEMBER_LIST; - key.val.list.list_index = pnode->index; - key.val.list.key.dd.id = p_dd->id; - rval = ISNSdbRead(&key,&lentry); - if (rval != SUCCESS) - return rval; - - p_member = &lentry.data.list.key.ddmember; - p_member->node_idx = index_number; - - rval = ISNSdbWrite(&key,lentry); - return (ISNS_NO_ERR); } --- 1489,1492 ---- *************** *** 1657,1674 **** /* create a new entity element */ memset ( &entry, 0, sizeof (SOIP_DB_Entry) ); - entry.data_type = ENTITY_ID_KEY; p_entity->entity_index = ISNSGetNewEntityIdx(); - - ISNS_DBKey idx_key; - idx_key.tag = ENTITY_IDX_KEY; - idx_key.val.idx.index_type = ENTITY_IDX_KEY; - idx_key.val.idx.index = p_entity->entity_index; SOIP_Entity_Id *p_idx; memset (&entry3, 0, sizeof(SOIP_Entity_Id)); - entry3.data_type = ENTITY_IDX_KEY; p_idx = &entry3.data.entity_idx; __ISNS_COPY (p_idx, sizeof(entry3.data.entity_idx), &db_entity_id.id, sizeof(SOIP_Entity_Id)); ! rval = ISNSdbWrite(&idx_key,entry3); strncpy (p_entity->eid.id, db_entity_id.id, sizeof(p_entity->eid.id) ); --- 1606,1616 ---- /* create a new entity element */ memset ( &entry, 0, sizeof (SOIP_DB_Entry) ); p_entity->entity_index = ISNSGetNewEntityIdx(); SOIP_Entity_Id *p_idx; memset (&entry3, 0, sizeof(SOIP_Entity_Id)); p_idx = &entry3.data.entity_idx; __ISNS_COPY (p_idx, sizeof(entry3.data.entity_idx), &db_entity_id.id, sizeof(SOIP_Entity_Id)); ! rval = write_EntityidxObject(p_entity->entity_index, entry3); strncpy (p_entity->eid.id, db_entity_id.id, sizeof(p_entity->eid.id) ); *************** *** 1788,1792 **** int newRegFlag; int newKeyFlag; - ISNS_DBKey read_key; __DEBUG (isns_reg_debug & 1, (Registering FC Node)); --- 1730,1733 ---- *************** *** 1841,1850 **** db_node_name.v[8] = (char)SOIP_DB_Node_Id; ! read_key.tag = NODE_NAME_KEY; ! strcpy(read_key.val.node_key.v,db_node_name.v); ! rval = ISNSdbRead(&read_key,&entry); ! ! p_node = (SOIP_Fc_Node *)&entry.data.node; ! if ( (rval == SUCCESS) && (p_md->msg.hdr.flags & ISNS_FLAG_REPLACE_REG) ) { --- 1782,1786 ---- db_node_name.v[8] = (char)SOIP_DB_Node_Id; ! rval = read_FCNodeObject(db_node_name.v, &p_node, &entry); if ( (rval == SUCCESS) && (p_md->msg.hdr.flags & ISNS_FLAG_REPLACE_REG) ) { *************** *** 1858,1862 **** /* create a new node element */ memset (&entry, 0, sizeof (SOIP_DB_Entry)); - entry.data_type = NODE_NAME_KEY; memset (&entry.data.node.node_ipa, SNS_UNREGISTERED, NODE_IPA_SIZE); __ISNS_COPY (entry.data.node.node_name.v, sizeof(entry.data.node.node_name.v), --- 1794,1797 ---- *************** *** 1867,1878 **** } - /* verify data_type matches key tag */ - if (entry.data_type != NODE_NAME_KEY) - { - __DEBUG (isns_reg_debug & 1, (database key does not match %u %u), - entry.data_type, NODE_NAME_KEY); - return ERROR; - } - /* Store the Node Name */ __ISNS_COPY (p_node->node_name.v, sizeof(p_node->node_name.v), entry.data.node.node_name.v, ISNS_NODE_NAME_SIZE); --- 1802,1805 ---- *************** *** 1910,1917 **** } ! ISNS_DBKey key; ! key.tag = NODE_NAME_KEY; ! strcpy(key.val.node_key.v,db_node_name.v); ! rval = ISNSdbWrite(&key,entry); /* Compose a response */ --- 1837,1841 ---- } ! rval = write_FCNodeObject(db_node_name.v, entry); /* Compose a response */ *************** *** 1962,1966 **** int ii, rval; //char *p_wwpn; - ISNS_DBKey read_key; __DEBUG (isns_reg_debug & 1, (Registering iFCP WWPN)); --- 1886,1889 ---- *************** *** 2008,2016 **** } ! read_key.tag = PORT_NAME_KEY; ! strcpy(read_key.val.port_name.v,(char *)&key->val); ! rval = ISNSdbRead(&read_key,&entry); ! p_ifcp_node = (SOIP_Ifcp *)&entry.data; ! if ( (rval == SUCCESS) && (p_md->msg.hdr.flags & ISNS_FLAG_REPLACE_REG) ) { --- 1931,1935 ---- } ! rval = read_FCPortObject((char *)&key->val, &p_ifcp_node, &entry); if ( (rval == SUCCESS) && (p_md->msg.hdr.flags & ISNS_FLAG_REPLACE_REG) ) { *************** *** 2072,2076 **** /* create a new port element */ memset (&entry, 0, sizeof (SOIP_DB_Entry)); - entry.data_type = PORT_NAME_KEY; __ISNS_COPY (p_ifcp_node->entity_id.id, sizeof(p_ifcp_node->entity_id.id), entity_id, entity_len); InitList(FCP_DD_LIST, &p_ifcp_node->dd_id_list); --- 1991,1994 ---- *************** *** 2085,2096 **** } - /* verify data_type matches key tag */ - if (entry.data_type != PORT_NAME_KEY) - { - __DEBUG (isns_reg_debug & 1, (database key does not match %u %u), - entry.data_type, PORT_NAME_KEY); - return ERROR; - } - stopFlag = FALSE; for (ii = saveIndex; --- 2003,2006 ---- *************** *** 2180,2187 **** /* Store Port Name */ ! ISNS_DBKey key; ! key.tag = PORT_NAME_KEY; ! __ISNS_COPY (&key.val, sizeof(key.val), buffer, PORT_NAME_SIZE); ! rval = ISNSdbWrite(&key,entry); /* response */ --- 2090,2094 ---- /* Store Port Name */ ! rval = write_FCPortObject(p_ifcp_node->port_name.v,entry); /* response */ *************** *** 2198,2211 **** db_node_name.v[8] = (char)SOIP_DB_Node_Id; ! read_key.tag = NODE_NAME_KEY; ! strcpy(read_key.val.node_key.v,db_node_name.v); ! rval = ISNSdbRead(&read_key,&entry2); ! if ( rval != SUCCESS) { /* We will create the node */ memset (&entry2, 0, sizeof (entry2)); - - entry2.data_type = NODE_NAME_KEY; memset (&entry2.data.node.node_ipa, SNS_UNREGISTERED, NODE_IPA_SIZE); --- 2105,2113 ---- db_node_name.v[8] = (char)SOIP_DB_Node_Id; ! rval = read_FCNodeObject(db_node_name.v, &p_fc_node, &entry2); if ( rval != SUCCESS) { /* We will create the node */ memset (&entry2, 0, sizeof (entry2)); memset (&entry2.data.node.node_ipa, SNS_UNREGISTERED, NODE_IPA_SIZE); *************** *** 2215,2220 **** } - p_fc_node = (SOIP_Fc_Node *)&entry2.data; - /* insert port name into free slot in node's port list */ free_slot = -1; --- 2117,2120 ---- *************** *** 2226,2233 **** } ! ISNS_DBKey key; ! key.tag = NODE_NAME_KEY; ! strcpy(key.val.node_key.v,db_node_name.v); ! rval = ISNSdbWrite(&key,entry2); } --- 2126,2130 ---- } ! rval = write_FCNodeObject(db_node_name.v, entry2); } *************** *** 2375,2379 **** /* Create a new node entry */ memset ( &entry, 0, sizeof (SOIP_DB_Entry) ); - entry.data_type = ISCSI_ID_KEY; strncpy ( p_node->id.v, db_node_name.v, sizeof(p_node->id.v) ); p_node->iscsi_id_len = PAD4(strlen(p_node->id.v)); --- 2272,2275 ---- *************** *** 2381,2394 **** p_node->iscsi_index = ISNSGetNewISCSIIdx(); - ISNS_DBKey idx_key; - idx_key.tag = ISCSI_IDX_KEY; - idx_key.val.idx.index_type = ISCSI_IDX_KEY; - idx_key.val.idx.index = p_node->iscsi_index; SOIP_ISCSI_Node_Id *p_idx; memset (&entry3, 0, sizeof(SOIP_ISCSI_Node_Id)); ! entry3.data_type = ISCSI_IDX_KEY; p_idx = &entry3.data.iscsi_idx; __ISNS_COPY (p_idx, sizeof(entry3.data.iscsi_idx), &p_node->id.v, sizeof(SOIP_ISCSI_Node_Id)); ! rval = ISNSdbWrite(&idx_key,entry3); strncpy ( p_node->entity_id.id, db_entity.id, sizeof(p_node->entity_id.id) ); --- 2277,2287 ---- p_node->iscsi_index = ISNSGetNewISCSIIdx(); SOIP_ISCSI_Node_Id *p_idx; memset (&entry3, 0, sizeof(SOIP_ISCSI_Node_Id)); ! p_idx = &entry3.data.iscsi_idx; __ISNS_COPY (p_idx, sizeof(entry3.data.iscsi_idx), &p_node->id.v, sizeof(SOIP_ISCSI_Node_Id)); ! ! rval = write_ISCSIidxObject(p_node->iscsi_index, entry3); strncpy ( p_node->entity_id.id, db_entity.id, sizeof(p_node->entity_id.id) ); *************** *** 2552,2555 **** --- 2445,2449 ---- ISNS_Attr *attr_indx[SNS_MAX_ATTRS]; ISNS_Attr *key_indx[SNS_MAX_ATTRS]; + SOIP_Portal_Key *db_portal; __DEBUG (isns_reg_debug &1,(RegisterSCN)); *************** *** 2625,2637 **** while ( (pnode = GetNextNode(&p_entity->iportal_list, pnode)) != NULL) { ! ISNS_DBKey read_key; ! read_key.tag = PORTAL_ID_KEY; ! __ISNS_COPY (&read_key.val, sizeof(read_key.val), GetNodeData(pnode), sizeof(SOIP_Portal_Key)); ! rval = ISNSdbRead(&read_key,&entry3); if (rval != SUCCESS) return rval; - p_portal = (SOIP_Portal *)&entry3.data; - /* Get first ESI/SCN Portal */ if (p_portal->esi_port != 0) --- 2519,2527 ---- while ( (pnode = GetNextNode(&p_entity->iportal_list, pnode)) != NULL) { ! db_portal = GetNodeData(pnode); ! rval = read_PortalObject(db_portal, &p_portal, &entry3); if (rval != SUCCESS) return rval; /* Get first ESI/SCN Portal */ if (p_portal->esi_port != 0) *************** *** 2659,2679 **** key = (ISNS_Key *)(key_indx[ ifcpKeyIndex ]); ! ISNS_DBKey read_key; ! read_key.tag = PORT_NAME_KEY; ! strcpy(read_key.val.port_name.v,(char *)&key->val); ! rval = ISNSdbRead(&read_key,&entry); if (rval != SUCCESS) return rval; - p_ifcp_node = &entry.data.port; - - /* verify data_type matches key tag */ - if (entry.data_type != PORT_NAME_KEY) - { - __DEBUG (isns_reg_debug & 1, (database key does not match %u %u), - entry.data_type, PORT_NAME_KEY); - return ( ISNS_SCN_REG_REJECTED_ERR ); - } - scn_bitmap_index = ISNSFindTag (0, ISNS_IFCP_SCN_BITMAP, attr_indx); if (scn_bitmap_index == -1) --- 2549,2556 ---- key = (ISNS_Key *)(key_indx[ ifcpKeyIndex ]); ! rval = read_FCPortObject((char *)&key->val, &p_ifcp_node, &entry); if (rval != SUCCESS) return rval; scn_bitmap_index = ISNSFindTag (0, ISNS_IFCP_SCN_BITMAP, attr_indx); if (scn_bitmap_index == -1) *************** *** 2695,2702 **** /* Store the node */ ! ISNS_DBKey update_key; ! update_key.tag = PORT_NAME_KEY; ! strcpy(update_key.val.port_name.v,(char *)&key->val); ! ISNSdbWrite(&update_key,entry); return ( ISNS_NO_ERR ); --- 2572,2576 ---- /* Store the node */ ! write_FCPortObject((char *)&key->val, entry); return ( ISNS_NO_ERR ); *************** *** 2757,2771 **** SOIP_Ifcp *p_node; SOIP_DB_Entry lentry; - ISNS_DBKey key; int rval; ! key.tag = PORT_NAME_KEY; ! strcpy(key.val.port_name.v,p_node_name); ! rval = ISNSdbRead(&key,&lentry); if (rval != SUCCESS) return rval; - p_node = (SOIP_Ifcp *)&lentry.data; - if (!FindNode(&p_node->dd_id_list, (char *) &id, sizeof(id))) { --- 2631,2640 ---- SOIP_Ifcp *p_node; SOIP_DB_Entry lentry; int rval; ! rval = read_FCPortObject(p_node_name, &p_node, &lentry); if (rval != SUCCESS) return rval; if (!FindNode(&p_node->dd_id_list, (char *) &id, sizeof(id))) { *************** *** 2773,2777 **** } ! ISNSdbWrite(&key,lentry); return (ISNS_NO_ERR); --- 2642,2646 ---- } ! rval = write_FCPortObject(p_node_name, lentry); return (ISNS_NO_ERR); *************** *** 2789,2793 **** SOIP_DB_Entry lentry; SOIP_Dd *p_dd; - ISNS_DBKey key; int rval; --- 2658,2661 ---- *************** *** 2813,2818 **** } ! /* Store Entry */ ! ISNSdbWrite (&key,lentry); return ( ISNS_NO_ERR ); --- 2681,2685 ---- } ! write_DDObject(dd_id, lentry); return ( ISNS_NO_ERR ); *************** *** 2893,2897 **** /* retrieve all DD */ - key.tag = DD_ID_KEY; --- 2760,2763 ---- *************** *** 2901,2909 **** continue; ! rval = ISNSdbRead(&key,&lentry); if (rval != SUCCESS) return rval; - p_dd2 = (SOIP_Dd *)&lentry.data; if (0 == strcmp (p_dd2->sym_name, p_sym_name)) { --- 2767,2774 ---- continue; ! rval = read_DDObject(key.val.dd_key.id, &p_dd2, &lentry); if (rval != SUCCESS) return rval; if (0 == strcmp (p_dd2->sym_name, p_sym_name)) { *************** *** 3069,3078 **** while ( SNSdbGetNextOfKey ( &key ) == SUCCESS ) { ! rval = ISNSdbRead(&key,&lentry); if (rval != SUCCESS) return rval; - p_dd = (SOIP_Dd *)&lentry.data; - /* Find iSCSI Node */ pnode = NULL; --- 2934,2941 ---- while ( SNSdbGetNextOfKey ( &key ) == SUCCESS ) { ! rval = read_DDObject(key.val.dd_key.id, &p_dd, &lentry); if (rval != SUCCESS) return rval; /* Find iSCSI Node */ pnode = NULL; *************** *** 3317,3326 **** search for any entries that has that dd, return that DD */ ! rval = ISNSdbRead(&qkey,&lentry); if (rval != SUCCESS) return 0; - p_dd = (SOIP_Dd *)&lentry.data; - if (0 == strcmp(p_dd->sym_name, p_sym)) return ( p_dd->id ); --- 3180,3187 ---- search for any entries that has that dd, return that DD */ ! rval = read_DDObject(qkey.val.dd_key.id, &p_dd, &lentry); if (rval != SUCCESS) return 0; if (0 == strcmp(p_dd->sym_name, p_sym)) return ( p_dd->id ); *************** *** 3373,3381 **** while (SNSdbGetNextOfKey (&qkey) == SUCCESS) { ! rval = ISNSdbRead(&qkey,&lentry); if ( rval != SUCCESS) return (0); - p_dds = (SOIP_Dds *) &lentry.data; if (0 == strcmp (p_dds->sym_name, p_sym)) return (p_dds->id); --- 3234,3241 ---- while (SNSdbGetNextOfKey (&qkey) == SUCCESS) { ! rval = read_DDSObject(qkey.val.dds_key.id, &p_dds, &lentry); if ( rval != SUCCESS) return (0); if (0 == strcmp (p_dds->sym_name, p_sym)) return (p_dds->id); *************** *** 3544,3551 **** while ( SNSdbGetNextOfKey ( &dds_key ) == SUCCESS ) { ! rval = ISNSdbRead(&dds_key,&lentry1); if (rval != SUCCESS) return rval; - p_dds = (SOIP_Dds *)&lentry1.data; if ( !strcmp("default DDS",p_dds->sym_name) ) { --- 3404,3410 ---- while ( SNSdbGetNextOfKey ( &dds_key ) == SUCCESS ) { ! rval = read_DDSObject(dds_key.val.dds_key.id, &p_dds, &lentry1); if (rval != SUCCESS) return rval; if ( !strcmp("default DDS",p_dds->sym_name) ) { *************** *** 3558,3562 **** __DEBUG (isns_reg_debug &1, Create Default DDS); dds_key.val.dds_key.id = ISNS_GetNewDDS_ID (); - lentry1.data_type = DDS_ID_KEY; p_dds = (SOIP_Dds *)&lentry1.data; p_dds->id = dds_key.val.dds_key.id; --- 3417,3420 ---- *************** *** 3564,3568 **** InitList(DDS_DD_LIST, p_dds); p_dds->status = 1; ! rval = ISNSdbWrite(&dds_key,lentry1); __DEBUG (isns_reg_debug &1,Create Default DDS rval:%i,rval); } --- 3422,3426 ---- InitList(DDS_DD_LIST, p_dds); p_dds->status = 1; ! rval = write_DDSObject(dds_key.val.dds_key.id, lentry1); __DEBUG (isns_reg_debug &1,Create Default DDS rval:%i,rval); } *************** *** 3573,3580 **** while ( SNSdbGetNextOfKey ( &dd_key ) == SUCCESS ) { ! rval = ISNSdbRead(&dd_key,&lentry2); if (rval != SUCCESS) retu... [truncated message content] |