From: Robert W. <wrw...@us...> - 2007-08-24 22:51:38
|
Update of /cvsroot/linuxisns/isnsNT/isnsserver/src In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv31084/src Modified Files: iSNSdb.c iSNSdereg.c iSNSquery.c iSNSreg.c iSNSscn.c Added Files: iSNSobjects.c Log Message: abstracting read/write objects to database --- NEW FILE: iSNSobjects.c --- /*********************************************************************** Copyright (c) 2007, Novell, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of the Novell, Inc nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NOVELL, INC. OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ***********************************************************************/ /* * This file contains source code for managing read and writing of iSNS objects * to the database * */ #include "iSNS.h" #include "iSNSdb.h" #include "iSNSobjects.h" #include "iSNStypes.h" #include "iSNSmsg.h" #include "iSNSdebug.h" /* Global */ extern int isns_db_debug; /********************************************************************* read_ISCSIObject *********************************************************************/ int read_ISCSIObject (char *p_id, SOIP_Iscsi **p_node, SOIP_DB_Entry *p_entry) { ISNS_DBKey key; int rval; if ( (p_id == NULL ) || (strlen(p_id) <= 0) ) return (ERROR); 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; return rval; } /********************************************************************* read_EntityObject Fetches an entity from the database PARAMETERS: 1. p_entity_id - Entity ID. 2. p_entity - Address where to place results 2. p_entry - ENTRY Record RETURNS: 1. p_entity - will point to entry. Returns "no_error" if successful. *********************************************************************/ int read_EntityObject (char *p_entity_id, SOIP_Entity **p_entity, SOIP_DB_Entry *p_entry) { ISNS_DBKey key; int rval; if ( (p_entity_id == NULL ) || (strlen(p_entity_id) <= 0) ) return (ERROR); key.tag = ENTITY_ID_KEY; strcpy(key.val.entity_key.id,p_entity_id); rval = ISNSdbRead(&key,p_entry); *p_entity = (SOIP_Entity *)&p_entry->data; return rval; } /********************************************************************* read_DDObject Reads a DD object from the database *********************************************************************/ int read_DDObject (int id, SOIP_Dd **p_dd, SOIP_DB_Entry *p_entry) { ISNS_DBKey key; int rval; if (id == 0) return (ERROR); key.tag = DD_ID_KEY; key.val.dd_key.id = id; rval = ISNSdbRead(&key,p_entry); *p_dd = (SOIP_Dd *)&p_entry->data; return rval; } /********************************************************************* read_DDSObject Reads a DDS object from the database *********************************************************************/ int read_DDSObject (int id, SOIP_Dds **p_dds, SOIP_DB_Entry *p_entry) { ISNS_DBKey key; int rval; if (id == 0) return (ERROR); key.tag = DDS_ID_KEY; key.val.dds_key.id = id; rval = ISNSdbRead(&key,p_entry); *p_dds = (SOIP_Dds *)&p_entry->data; return rval; } /********************************************************************* write_ISCSIObject Reads a ISCSI object from the database *********************************************************************/ int write_ISCSIObject (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 = ISCSI_ID_KEY; strcpy(key.val.node_key.v,p_id); rval = ISNSdbWrite(&key, p_entry); return rval; } /********************************************************************* write_EntityObject Reads a Entity object from the database *********************************************************************/ int write_EntityObject (char *p_entity_id, SOIP_DB_Entry p_entry) { ISNS_DBKey key; int rval; if ( (p_entity_id == NULL ) || (strlen(p_entity_id) <= 0) ) return (ERROR); key.tag = ENTITY_ID_KEY; strcpy(key.val.entity_key.id,p_entity_id); rval = ISNSdbWrite(&key, p_entry); return rval; } /********************************************************************* write_DDObject Reads a DD object from the database *********************************************************************/ int write_DDObject (int id, SOIP_DB_Entry p_entry) { ISNS_DBKey key; int rval; if (id == 0) return (ERROR); key.tag = DD_ID_KEY; key.val.dd_key.id = id; rval = ISNSdbWrite(&key, p_entry); return rval; } /********************************************************************* write_DDSObject Reads a DDS object from the database *********************************************************************/ int write_DDSObject (int id, SOIP_DB_Entry p_entry) { ISNS_DBKey key; int rval; if (id == 0) return (ERROR); key.tag = DDS_ID_KEY; key.val.dds_key.id = id; rval = ISNSdbWrite(&key, p_entry); return rval; } /********************************************************************* delete_DDObject delete a DD object from the database *********************************************************************/ int delete_DDObject (int id) { ISNS_DBKey key; int rval; if (id == 0) return (ERROR); key.tag = DD_ID_KEY; key.val.dd_key.id = id; rval = ISNSdbDelete(&key); return rval; } /********************************************************************* delete_DDSObject delete a DDS object from the database *********************************************************************/ int delete_DDSObject (int id) { ISNS_DBKey key; int rval; if (id == 0) return (ERROR); key.tag = DDS_ID_KEY; key.val.dds_key.id = id; rval = ISNSdbDelete(&key); return rval; } /********************************************************************* delete_ISCSIObject delete a ISCSI object from the database *********************************************************************/ int delete_ISCSIObject (char *p_id) { ISNS_DBKey key; int rval; if ( (p_id == NULL ) || (strlen(p_id) <= 0) ) return (ERROR); key.tag = ISCSI_ID_KEY; strcpy(key.val.node_key.v,p_id); rval = ISNSdbDelete(&key); return rval; } /********************************************************************* delete_EntityObject delete a Enity object from the database *********************************************************************/ int delete_EntityObject (char *p_entity_id) { ISNS_DBKey key; int rval; if ( (p_entity_id == NULL ) || (strlen(p_entity_id) <= 0) ) return (ERROR); key.tag = ENTITY_ID_KEY; strcpy(key.val.entity_key.id,p_entity_id); rval = ISNSdbDelete(&key); return rval; } Index: iSNSquery.c =================================================================== RCS file: /cvsroot/linuxisns/isnsNT/isnsserver/src/iSNSquery.c,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** iSNSquery.c 23 Aug 2007 22:31:07 -0000 1.27 --- iSNSquery.c 24 Aug 2007 22:51:34 -0000 1.28 *************** *** 41,44 **** --- 41,45 ---- #include "iSNSList.h" #include "iSNSdb.h" + #include "iSNSobjects.h" #include "iSNSquery.h" #include "iSNSresponse.h" *************** *** 298,302 **** __ISNS_COPY (db_entity_id.id, sizeof(db_entity_id.id), &key->val, key->len); ! if (ISNS_NO_ERR != SNSdbFetchEntity (db_entity_id.id, &p_entity, &entry)) { return (ISNS_INVALID_QUERY_ERR); --- 299,303 ---- __ISNS_COPY (db_entity_id.id, sizeof(db_entity_id.id), &key->val, key->len); ! if (ISNS_NO_ERR != read_EntityObject (db_entity_id.id, &p_entity, &entry)) { return (ISNS_INVALID_QUERY_ERR); *************** *** 340,344 **** /* Fetch entity from hash */ ! if (ISNS_NO_ERR != SNSdbFetchEntity ( ptr, &p_entity, &entry )) { return (ISNS_INVALID_QUERY_ERR); --- 341,345 ---- /* Fetch entity from hash */ ! if (ISNS_NO_ERR != read_EntityObject ( ptr, &p_entity, &entry )) { return (ISNS_INVALID_QUERY_ERR); *************** *** 378,382 **** /* Fetch entity from hash */ if (ISNS_NO_ERR != ! SNSdbFetchEntity (p_portal->entity_id.id, &p_entity, &entry)) { return (ISNS_INVALID_QUERY_ERR); --- 379,383 ---- /* Fetch entity from hash */ if (ISNS_NO_ERR != ! read_EntityObject (p_portal->entity_id.id, &p_entity, &entry)) { return (ISNS_INVALID_QUERY_ERR); *************** *** 406,410 **** /* Fetch entity from hash */ if (ISNS_NO_ERR != ! SNSdbFetchEntity (p_port->entity_id.id, &p_entity, &entry)) { return (ISNS_NO_SUCH_ENTRY_ERR); --- 407,411 ---- /* Fetch entity from hash */ if (ISNS_NO_ERR != ! read_EntityObject (p_port->entity_id.id, &p_entity, &entry)) { return (ISNS_NO_SUCH_ENTRY_ERR); *************** *** 457,475 **** } ! ISNS_DBKey read_key; ! read_key.tag = ISCSI_ID_KEY; ! strcpy(read_key.val.node_key.v,db_node_name.v); ! rval = ISNSdbRead(&read_key,&entry); if (rval != SUCCESS) return rval; ! p_node = (SOIP_Iscsi *)&entry.data.node; ! ! /* Fetch entity from hash */ ! if (ISNS_NO_ERR != ! SNSdbFetchEntity (p_node->entity_id.id, &p_entity, &entry)) ! { ! return (ISNS_UNKNOWN_ERR); ! } rval = Check_Permission (src_attr, ENTITY_ID_KEY, p_entity); --- 458,468 ---- } ! rval = read_ISCSIObject(db_node_name.v, &p_node, &entry); if (rval != SUCCESS) return rval; ! rval = read_EntityObject (p_node->entity_id.id, &p_entity, &entry); ! if (rval != SUCCESS) ! return rval; rval = Check_Permission (src_attr, ENTITY_ID_KEY, p_entity); *************** *** 483,498 **** else { - ISNS_DBKey key = { 0 }; /* Return all entity */ ! ! /* Get first entity id */ key.tag = ENTITY_ID_KEY; - key.len = 0; while (SNSdbGetNextOfKey (&key) == SUCCESS) { ! /* Fetch entity from hash */ ! ! if (ISNS_NO_ERR != SNSdbFetchEntity (key.val.entity_key.id, &p_entity, &entry)) { return (ISNS_NO_SUCH_ENTRY_ERR); --- 476,486 ---- else { /* Return all entity */ ! ISNS_DBKey key = { 0 }; key.tag = ENTITY_ID_KEY; while (SNSdbGetNextOfKey (&key) == SUCCESS) { ! if (ISNS_NO_ERR != read_EntityObject (key.val.entity_key.id, &p_entity, &entry)) { return (ISNS_NO_SUCH_ENTRY_ERR); *************** *** 523,541 **** { SOIP_Dds *p_dds; - SOIP_DD_Key dds_key; - ISNS_DBKey key; int rval; ! dds_key.id = id; ! key.tag = DDS_ID_KEY; ! key.val.dds_key.id = id; ! rval = ISNSdbRead(&key,&entry); if (rval != SUCCESS) return rval; - p_dds = (SOIP_Dds *)&entry.data; - - /* ISNSDisplay_DDS ( p_dds, HI_DETAIL ); */ - ISNSdbProcessDDSOpAttr(p_msg, (ISNS_Attr **) attr_indx, p_dds); return (ISNS_NO_ERR); --- 511,520 ---- { SOIP_Dds *p_dds; int rval; ! rval = read_DDSObject(id, &p_dds, &entry); if (rval != SUCCESS) return rval; ISNSdbProcessDDSOpAttr(p_msg, (ISNS_Attr **) attr_indx, p_dds); return (ISNS_NO_ERR); *************** *** 627,634 **** else { - ISNS_DBKey key = { 0 }; /* retrieve all DDS */ key.tag = DDS_ID_KEY; - key.len = DDS_KEY_SIZE; while (SNSdbGetNextOfKey (&key) == SUCCESS) --- 606,613 ---- else { /* retrieve all DDS */ + + ISNS_DBKey key = { 0 }; key.tag = DDS_ID_KEY; while (SNSdbGetNextOfKey (&key) == SUCCESS) *************** *** 672,694 **** { SOIP_Dd *p_dd; - SOIP_DD_Key dd_key; - ISNS_DBKey key; int rval; __DEBUG (isns_query_debug &1, SNSdbGetAttrDDEntry); ! dd_key.id = id; ! key.tag = DD_ID_KEY; ! key.val.dd_key.id = id; ! rval = ISNSdbRead(&key,&entry); ! if (rval != SUCCESS) ! return rval; ! ! p_dd = (SOIP_Dd *)&entry.data; ! ! /* ISNSDisplay_DD ( p_dd, HI_DETAIL ); */ ! ISNSdbProcessDDOpAttr( p_msg, (ISNS_Attr **) attr_indx, p_dd ); ! return ( ISNS_NO_ERR ); } --- 651,664 ---- { SOIP_Dd *p_dd; int rval; __DEBUG (isns_query_debug &1, SNSdbGetAttrDDEntry); ! rval = read_DDObject(id, &p_dd, &entry); ! if (rval == SUCCESS) ! ISNSdbProcessDDOpAttr( p_msg, (ISNS_Attr **) attr_indx, p_dd ); ! ! return ( rval ); } *************** *** 772,786 **** { key = (ISNS_Key *)(key_indx[ddsKeyIndex]); - /* Fetch the DDS */ dds_key.id = key->val.dd_id; ! ISNS_DBKey read_key; ! read_key.tag = DDS_ID_KEY; ! read_key.val.dds_key.id = dds_key.id; ! rval = ISNSdbRead(&read_key,&entry3); if (rval != SUCCESS) return rval; - p_dds = (SOIP_Dds *)&entry3.data; - pnode=NULL; while ((pnode=GetNextNode(&p_dds->dd_list, pnode))) --- 742,750 ---- { key = (ISNS_Key *)(key_indx[ddsKeyIndex]); dds_key.id = key->val.dd_id; ! rval = read_DDSObject(dds_key.id, &p_dds, &entry3); if (rval != SUCCESS) return rval; pnode=NULL; while ((pnode=GetNextNode(&p_dds->dd_list, pnode))) *************** *** 799,812 **** key = (ISNS_Key *)(key_indx[nodeKeyIndex]); ! /* Fetch the node */ ! ISNS_DBKey read_key; ! read_key.tag = ISCSI_ID_KEY; ! strcpy(read_key.val.node_key.v,(char *)&key->val); ! rval = ISNSdbRead(&read_key,&entry3); if (rval != SUCCESS) return rval; - p_node = (SOIP_Iscsi *)&entry3.data.node; - pnode=NULL; while ((pnode=GetNextNode(&p_node->dd_id_list, pnode))) --- 763,770 ---- key = (ISNS_Key *)(key_indx[nodeKeyIndex]); ! rval = read_ISCSIObject((char *)&key->val, &p_node, &entry3); if (rval != SUCCESS) return rval; pnode=NULL; while ((pnode=GetNextNode(&p_node->dd_id_list, pnode))) *************** *** 822,832 **** else { - ISNS_DBKey key = { 0 }; - /* retrieve all DD */ ! ! /* Get first entity id */ key.tag = DD_ID_KEY; - key.len = DD_KEY_SIZE; while (SNSdbGetNextOfKey (&key) == SUCCESS) --- 780,786 ---- else { /* retrieve all DD */ ! ISNS_DBKey key = { 0 }; key.tag = DD_ID_KEY; while (SNSdbGetNextOfKey (&key) == SUCCESS) *************** *** 947,955 **** else { - ISNS_DBKey key = { 0 }; - /* Search the node table */ key.tag = NODE_NAME_KEY; - key.len = DB_NODE_NAME_SIZE; while (SNSdbGetNextOfKey (&key) == SUCCESS) --- 901,907 ---- else { /* Search the node table */ + ISNS_DBKey key = { 0 }; key.tag = NODE_NAME_KEY; while (SNSdbGetNextOfKey (&key) == SUCCESS) *************** *** 1116,1120 **** { /* Fetch entity from hash */ ! if (ISNS_NO_ERR != SNSdbFetchEntity ((char *)&key->val, &p_entity, &entry)) { return (ISNS_NO_SUCH_ENTRY_ERR); --- 1068,1072 ---- { /* Fetch entity from hash */ ! if (ISNS_NO_ERR != read_EntityObject ((char *)&key->val, &p_entity, &entry)) { return (ISNS_NO_SUCH_ENTRY_ERR); *************** *** 1157,1161 **** /* Fetch Entity */ if (ISNS_NO_ERR != ! SNSdbFetchEntity (p_port->entity_id.id, &p_entity, &entry)) { return (ERROR); --- 1109,1113 ---- /* Fetch Entity */ if (ISNS_NO_ERR != ! read_EntityObject (p_port->entity_id.id, &p_entity, &entry)) { return (ERROR); *************** *** 1194,1205 **** __ISNS_COPY (db_node_name.v, sizeof(db_node_name.v), &key->val, key->len); ! ISNS_DBKey read_key; ! read_key.tag = ISCSI_ID_KEY; ! strcpy(read_key.val.node_key.v,db_node_name.v); ! rval = ISNSdbRead(&read_key,&entry); if (rval != SUCCESS) return rval; - - p_node = (SOIP_Iscsi *)&entry.data; rval = Check_Permission (src_attr, ISCSI_ID_KEY, p_node); --- 1146,1152 ---- __ISNS_COPY (db_node_name.v, sizeof(db_node_name.v), &key->val, key->len); ! rval = read_ISCSIObject(db_node_name.v, &p_node, &entry); if (rval != SUCCESS) return rval; rval = Check_Permission (src_attr, ISCSI_ID_KEY, p_node); *************** *** 1210,1219 **** } ! /* Fetch Entity */ ! if (ISNS_NO_ERR != ! SNSdbFetchEntity (p_node->entity_id.id, &p_entity, &entry)) ! { ! return (ERROR); ! } /* Cycle through all portal */ --- 1157,1163 ---- } ! rval = read_EntityObject (p_node->entity_id.id, &p_entity, &entry); ! if (rval != SUCCESS) ! return rval; /* Cycle through all portal */ *************** *** 1238,1244 **** /* No Key */ p_portal_name = NULL; - key2.tag = PORTAL_ID_KEY; ! key2.len = sizeof (SOIP_Portal_Key); while (SNSdbGetNextOfKey (&key2) == SUCCESS) --- 1182,1187 ---- /* No Key */ p_portal_name = NULL; key2.tag = PORTAL_ID_KEY; ! key2.len = 0; while (SNSdbGetNextOfKey (&key2) == SUCCESS) *************** *** 1410,1422 **** strncpy ( db_entity_id.id, (char *)&key->val, sizeof(db_entity_id.id) ); ! ISNS_DBKey read_key; ! read_key.tag = ENTITY_ID_KEY; ! strcpy(read_key.val.node_key.v,db_entity_id.id); ! rval = ISNSdbRead(&read_key,&entry); if (rval != SUCCESS) return rval; - p_entity = &entry.data.entity; - /* Scan the entity's port list */ pnode=NULL; --- 1353,1360 ---- strncpy ( db_entity_id.id, (char *)&key->val, sizeof(db_entity_id.id) ); ! rval = read_EntityObject (db_entity_id.id, &p_entity, &entry); if (rval != SUCCESS) return rval; /* Scan the entity's port list */ pnode=NULL; *************** *** 1467,1480 **** { ! /* Fetch entity from hash */ ! ISNS_DBKey read_key; ! read_key.tag = ENTITY_ID_KEY; ! strcpy(read_key.val.entity_key.id,p_portal->entity_id.id); ! rval = ISNSdbRead(&read_key,&entry); if (rval != SUCCESS) return rval; - p_entity = &entry.data.entity; - /* Scan the entity's port list */ pnode=NULL; --- 1405,1412 ---- { ! rval = read_EntityObject(p_portal->entity_id.id, &p_entity, &entry); if (rval != SUCCESS) return rval; /* Scan the entity's port list */ pnode=NULL; *************** *** 1506,1515 **** else { ISNS_DBKey key = { 0 }; - key.tag = PORT_NAME_KEY; - key.len = PORT_NAME_SIZE; - /* Return all Ports */ while (SNSdbGetNextOfKey (&key) == SUCCESS) { --- 1438,1445 ---- else { + /* Return all Ports */ ISNS_DBKey key = { 0 }; key.tag = PORT_NAME_KEY; while (SNSdbGetNextOfKey (&key) == SUCCESS) { *************** *** 1614,1624 **** __ISNS_COPY (db_node_name.v, sizeof(db_node_name.v), &key->val, key->len); ! ISNS_DBKey read_key; ! read_key.tag = ISCSI_ID_KEY; ! strcpy(read_key.val.node_key.v,db_node_name.v); ! rval = ISNSdbRead(&read_key,&entry); if (rval != SUCCESS) return rval; - p_node = (SOIP_Iscsi *)&entry.data.node; rval = Check_Permission (src_attr, ISCSI_ID_KEY, p_node); --- 1544,1550 ---- __ISNS_COPY (db_node_name.v, sizeof(db_node_name.v), &key->val, key->len); ! rval = read_ISCSIObject(db_node_name.v, &p_node, &entry); if (rval != SUCCESS) return rval; rval = Check_Permission (src_attr, ISCSI_ID_KEY, p_node); *************** *** 1661,1673 **** strncpy ((char *) db_node_name.v, ptr, sizeof(db_node_name.v) ); ! ISNS_DBKey read_key; ! read_key.tag = ISCSI_ID_KEY; ! strcpy(read_key.val.node_key.v,db_node_name.v); ! rval = ISNSdbRead(&read_key,&entry); if (rval != SUCCESS) return rval; - p_node = (SOIP_Iscsi *)&entry.data.node; - rval = Check_Permission (src_attr, ISCSI_ID_KEY, p_node); if (rval == SUCCESS) --- 1587,1594 ---- strncpy ((char *) db_node_name.v, ptr, sizeof(db_node_name.v) ); ! rval = read_ISCSIObject(db_node_name.v, &p_node, &entry); if (rval != SUCCESS) return rval; rval = Check_Permission (src_attr, ISCSI_ID_KEY, p_node); if (rval == SUCCESS) *************** *** 1686,1690 **** key = (ISNS_Key *) (key_indx[entityKeyIndex]); ! rval = SNSdbFetchEntity((char *)&key->val, &p_entity, &entry); if (rval) --- 1607,1611 ---- key = (ISNS_Key *) (key_indx[entityKeyIndex]); ! rval = read_EntityObject((char *)&key->val, &p_entity, &entry); if (rval) *************** *** 1703,1716 **** { /* Fetch the iSCSI Node */ ! ISNS_DBKey read_key; ! read_key.tag = ISCSI_ID_KEY; ! strcpy(read_key.val.node_key.v,GetNodeData(pnode)); ! rval = ISNSdbRead(&read_key,&entry2); if (rval != SUCCESS) return rval; - /* We found a candidate */ - p_node = (SOIP_Iscsi *)&entry2.data; - rval = Check_Permission (src_attr, ISCSI_ID_KEY, p_node); if (rval == SUCCESS) --- 1624,1631 ---- { /* Fetch the iSCSI Node */ ! rval = read_ISCSIObject(GetNodeData(pnode), &p_node, &entry2); if (rval != SUCCESS) return rval; rval = Check_Permission (src_attr, ISCSI_ID_KEY, p_node); if (rval == SUCCESS) *************** *** 1754,1767 **** { ! /* Fetch ENTITY */ ! ISNS_DBKey read_key; ! read_key.tag = ENTITY_ID_KEY; ! strcpy(read_key.val.entity_key.id,p_portal->entity_id.id); ! rval = ISNSdbRead(&read_key,&entry); if (rval != SUCCESS) return rval; - p_entity = &entry.data.entity; - /* Scan the entity's iSCSI List */ pnode=NULL; --- 1669,1676 ---- { ! rval = read_EntityObject(p_portal->entity_id.id, &p_entity, &entry); if (rval != SUCCESS) return rval; /* Scan the entity's iSCSI List */ pnode=NULL; *************** *** 1769,1782 **** { /* Fetch the iSCSI Node */ ! ISNS_DBKey read_key; ! read_key.tag = ISCSI_ID_KEY; ! strcpy(read_key.val.node_key.v,GetNodeData(pnode)); ! rval = ISNSdbRead(&read_key,&entry2); if (rval != SUCCESS) return rval; - /* We found a candidate */ - p_node = (SOIP_Iscsi *)&entry2.data; - rval = Check_Permission (src_attr, ISCSI_ID_KEY, p_node); if (rval == SUCCESS) --- 1678,1685 ---- { /* Fetch the iSCSI Node */ ! rval = read_ISCSIObject(GetNodeData(pnode), &p_node, &entry2); if (rval != SUCCESS) return rval; rval = Check_Permission (src_attr, ISCSI_ID_KEY, p_node); if (rval == SUCCESS) *************** *** 1791,1800 **** else { ISNS_DBKey qkey = { 0 }; __DEBUG (isns_query_debug &1,search node table); - - /* Search the node table */ - qkey.len = 0; qkey.tag = ISCSI_ID_KEY; --- 1694,1701 ---- else { + /* Search the node table */ ISNS_DBKey qkey = { 0 }; __DEBUG (isns_query_debug &1,search node table); qkey.tag = ISCSI_ID_KEY; *************** *** 2138,2142 **** return (ISNS_NO_SUCH_ENTRY_ERR); } ! rval = SNSdbFetchEntity(qkey.val.entity_key.id, &p_entity, &entry); if (rval) --- 2039,2043 ---- return (ISNS_NO_SUCH_ENTRY_ERR); } ! rval = read_EntityObject(qkey.val.entity_key.id, &p_entity, &entry); if (rval) *************** *** 2315,2319 **** ISNS_Attr *attr_indx[SNS_MAX_ATTRS]; ISNS_Attr *key_indx[SNS_MAX_ATTRS]; - ISNS_DBKey key; int rval; --- 2216,2219 ---- *************** *** 2329,2342 **** p_attr=(ISNS_Attr *)key_indx[ddsKeyIndex]; - /* Fetch DDS */ dds_key.id = p_attr->val.dds_id; ! key.tag = DDS_ID_KEY; ! key.val.dds_key.id = dds_key.id; ! rval = ISNSdbRead(&key,&entry); if (rval != SUCCESS) return rval; - p_dds = (SOIP_Dds *)&entry.data; - /* Append Keys */ --- 2229,2237 ---- p_attr=(ISNS_Attr *)key_indx[ddsKeyIndex]; dds_key.id = p_attr->val.dds_id; ! rval = read_DDSObject(dds_key.id, &p_dds, &entry); if (rval != SUCCESS) return rval; /* Append Keys */ *************** *** 2409,2413 **** /* Fetch entity from hash */ ! if (ISNS_NO_ERR != SNSdbFetchEntity ( ptr, &p_entity, &entry )) { return (ISNS_INVALID_QUERY_ERR); --- 2304,2308 ---- /* Fetch entity from hash */ ! if (ISNS_NO_ERR != read_EntityObject ( ptr, &p_entity, &entry )) { return (ISNS_INVALID_QUERY_ERR); *************** *** 2462,2466 **** ISNS_Attr *p_attr; SOIP_Dd *p_dd; - SOIP_DD_Key dd_key; ISNS_LIST_NODE *plnode; ISNS_Attr *src_attr; --- 2357,2360 ---- *************** *** 2481,2495 **** p_attr=(ISNS_Attr *)key_indx[ddKeyIndex]; ! /* Fetch DDS */ ! dd_key.id = p_attr->val.dd_id; ! ISNS_DBKey read_key; ! read_key.tag = DD_ID_KEY; ! read_key.val.dd_key.id = dd_key.id; ! rval = ISNSdbRead(&read_key,&entry); if (rval != SUCCESS) return rval; - p_dd = (SOIP_Dd *)&entry.data; - /* Append Keys */ --- 2375,2382 ---- p_attr=(ISNS_Attr *)key_indx[ddKeyIndex]; ! rval = read_DDObject(p_attr->val.dd_id, &p_dd, &entry); if (rval != SUCCESS) return rval; /* Append Keys */ *************** *** 2571,2575 **** { SOIP_Dd *p_dd; - ISNS_DBKey read_key; SOIP_DB_Entry lentry; int rval; --- 2458,2461 ---- *************** *** 2577,2587 **** if (dd_id_Flag != -1 ) ISNSAppendAttr (p_msg, ISNS_DD_ID, ISNS_DD_ID_SIZE, NULL, *(uint32_t *)GetNodeData(pnode)); ! ! read_key.tag = DD_ID_KEY; ! read_key.val.dd_key.id = *(uint32_t *)GetNodeData(pnode); ! rval = ISNSdbRead(&read_key,&lentry); if (rval == SUCCESS) { - p_dd = (SOIP_Dd *)&lentry.data; ISNSAppendAttr (p_msg, ISNS_DD_SYM_NAME, PAD4 (strlen (p_dd->sym_name)), p_dd->sym_name, 0); --- 2463,2469 ---- if (dd_id_Flag != -1 ) ISNSAppendAttr (p_msg, ISNS_DD_ID, ISNS_DD_ID_SIZE, NULL, *(uint32_t *)GetNodeData(pnode)); ! rval = read_DDObject(*(uint32_t *)GetNodeData(pnode), &p_dd, &lentry); if (rval == SUCCESS) { ISNSAppendAttr (p_msg, ISNS_DD_SYM_NAME, PAD4 (strlen (p_dd->sym_name)), p_dd->sym_name, 0); *************** *** 2648,2658 **** int rval; SOIP_Dds *p_dds; ! ISNS_DBKey key; ! key.tag = DDS_ID_KEY; ! key.val.dds_key.id = *(uint32_t *)GetNodeData(pnode); ! rval = ISNSdbRead(&key,&lentry); if (rval == SUCCESS) { - p_dds = (SOIP_Dds *)&lentry.data; ISNSAppendAttr (p_msg, ISNS_DDS_SYM_NAME, PAD4(strlen(p_dds->sym_name)),p_dds->sym_name,0); } --- 2530,2536 ---- int rval; SOIP_Dds *p_dds; ! rval = read_DDSObject(*(uint32_t *)GetNodeData(pnode), &p_dds, &lentry); if (rval == SUCCESS) { ISNSAppendAttr (p_msg, ISNS_DDS_SYM_NAME, PAD4(strlen(p_dds->sym_name)),p_dds->sym_name,0); } *************** *** 2761,2765 **** if ( fetchEntityFlag || fetchPortalFlag ) { ! if ( SUCCESS != SNSdbFetchEntity ( p_node->entity_id.id, &p_entity, &entry4 ) ) return ( ISNS_UNKNOWN_ERR ); } --- 2639,2643 ---- if ( fetchEntityFlag || fetchPortalFlag ) { ! if ( SUCCESS != read_EntityObject ( p_node->entity_id.id, &p_entity, &entry4 ) ) return ( ISNS_UNKNOWN_ERR ); } *************** *** 3275,3292 **** { SOIP_Dds *p_dds; - SOIP_DD_Key dds_key; SOIP_DB_Entry lentry; - ISNS_DBKey key; int rval; ! dds_key.id = dds_id; ! key.tag = DDS_ID_KEY; ! key.val.dds_key.id = dds_id; ! rval = ISNSdbRead(&key,&lentry); if (rval != SUCCESS) return rval; - p_dds = (SOIP_Dds *)&lentry.data; - return (p_dds->status); } --- 3153,3163 ---- { SOIP_Dds *p_dds; SOIP_DB_Entry lentry; int rval; ! rval = read_DDSObject(dds_id, &p_dds, &lentry); if (rval != SUCCESS) return rval; return (p_dds->status); } *************** *** 3302,3306 **** ISNS_LIST_NODE *pnode; ! if (SUCCESS != SNSdbFetchDD (dd_id, &p_dd, &lentry)) return (FALSE); --- 3173,3177 ---- ISNS_LIST_NODE *pnode; ! if (SUCCESS != read_DDObject (dd_id, &p_dd, &lentry)) return (FALSE); *************** *** 3352,3366 **** } - /* Fetch DD */ dd_key.id = *(uint32_t *)GetNodeData(pnode); ! ISNS_DBKey read_key; ! read_key.tag = DD_ID_KEY; ! read_key.val.dd_key.id = dd_key.id; ! rval = ISNSdbRead(&read_key,&lentry2); if (rval != SUCCESS) return rval; - p_dd = (SOIP_Dd *)&lentry2.data; - if (p_dd->activeFlag || flag) Append_DD_to_List (p_dlist, dd_key.id); --- 3223,3231 ---- } dd_key.id = *(uint32_t *)GetNodeData(pnode); ! rval = read_DDObject(dd_key.id, &p_dd, &lentry2); if (rval != SUCCESS) return rval; if (p_dd->activeFlag || flag) Append_DD_to_List (p_dlist, dd_key.id); *************** *** 3408,3412 **** { /* Fetch entity from hash */ ! if (ISNS_NO_ERR != SNSdbFetchEntity (p_entity_name, &p_entity, &lentry)) { return (ERROR); --- 3273,3277 ---- { /* Fetch entity from hash */ ! if (ISNS_NO_ERR != read_EntityObject (p_entity_name, &p_entity, &lentry)) { return (ERROR); *************** *** 3453,3469 **** SOIP_Iscsi *p_node; SOIP_DB_Entry lentry; - ISNS_DBKey key; int rval; __DEBUG(isns_query_debug & 1, (Get_Active_DD_List_From_ISCSI_Node nodename=%s),nodename); ! /* Fetch the node */ ! key.tag = ISCSI_ID_KEY; ! strcpy(key.val.node_key.v,nodename); ! rval = ISNSdbRead(&key,&lentry); if (rval != SUCCESS) return rval; - p_node = (SOIP_Iscsi *)&lentry.data.node; Get_Active_DD_List (&p_node->dd_id_list, p_dlist, flag); --- 3318,3329 ---- SOIP_Iscsi *p_node; SOIP_DB_Entry lentry; int rval; __DEBUG(isns_query_debug & 1, (Get_Active_DD_List_From_ISCSI_Node nodename=%s),nodename); ! rval = read_ISCSIObject(nodename, &p_node, &lentry); if (rval != SUCCESS) return rval; Get_Active_DD_List (&p_node->dd_id_list, p_dlist, flag); *************** *** 3520,3529 **** { SOIP_DB_Entry lentry; SOIP_Entity *p_entity; - SOIP_Entity_Key db_entity; SOIP_ISCSI_Node_Id db_node_name; SOIP_Iscsi *p_node; time_t t; - ISNS_DBKey key; int rval; --- 3380,3388 ---- { SOIP_DB_Entry lentry; + SOIP_DB_Entry lentry2; SOIP_Entity *p_entity; SOIP_ISCSI_Node_Id db_node_name; SOIP_Iscsi *p_node; time_t t; int rval; *************** *** 3531,3537 **** return (SUCCESS); - /* Fetch Node */ - memset(&db_entity, 0, sizeof(db_entity)); - if ( src_attr->tag == ISNS_ISCSI_NODE_ID ) { --- 3390,3393 ---- *************** *** 3539,3569 **** strncpy ( (char *) db_node_name.v, (char *)&src_attr->val, sizeof(db_node_name.v) ); ! key.tag = ISCSI_ID_KEY; ! strcpy(key.val.node_key.v,db_node_name.v); ! rval = ISNSdbRead(&key,&lentry); ! p_node = (SOIP_Iscsi *)&lentry.data.node; ! strncpy(db_entity.id, p_node->entity_id.id, sizeof(db_entity.id)); } else { ! __DEBUG(isns_query_debug & 1, (ISNSTouchEntity(): Not implemented)); return (ERROR); } - /* Fetch entity from hash */ - if (ISNS_NO_ERR != SNSdbFetchEntity (db_entity.id, &p_entity, &lentry)) - { - return ( ERROR ); - } - - /* Fetch Entity */ - /* Update Time Stamp */ - p_entity->timestamp.t_time = time (&t); - - key.tag = ENTITY_ID_KEY; - strcpy(key.val.entity_key.id,db_entity.id); - ISNSdbWrite(&key,lentry); - return ( SUCCESS ); } --- 3395,3416 ---- strncpy ( (char *) db_node_name.v, (char *)&src_attr->val, sizeof(db_node_name.v) ); ! rval = read_ISCSIObject(db_node_name.v, &p_node, &lentry); ! if (rval != SUCCESS) ! return (ERROR); ! rval = read_EntityObject (p_node->entity_id.id, &p_entity, &lentry2); ! if (rval != SUCCESS) ! return ( ERROR ); ! ! /* Update Time Stamp */ ! p_entity->timestamp.t_time = time (&t); ! write_EntityObject(p_node->entity_id.id, lentry2); } else { ! __LOG_INFO ("src_attr->tag is not a iSCSI node and should be"); return (ERROR); } return ( SUCCESS ); } Index: iSNSdereg.c =================================================================== RCS file: /cvsroot/linuxisns/isnsNT/isnsserver/src/iSNSdereg.c,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** iSNSdereg.c 13 Aug 2007 22:56:45 -0000 1.26 --- iSNSdereg.c 24 Aug 2007 22:51:34 -0000 1.27 *************** *** 41,44 **** --- 41,46 ---- #include "iSNSList.h" #include "iSNSdb.h" + #include "iSNSobjects.h" + #include "iSNSdb.h" #include "iSNSreg.h" #include "iSNSquery.h" *************** *** 197,213 **** int updated_dd_list_size; int memberRemovedFlag; - ISNS_DBKey delete_key; - ISNS_DBKey read_key; - __DEBUG (isns_dereg_debug &1, RemoveAttrDSS_Entry); dds_key.id = id; ! read_key.tag = DDS_ID_KEY; ! read_key.val.dds_key.id = id; ! rval = ISNSdbRead(&read_key,&entry); if (rval != SUCCESS) return (rval); - p_dds = (SOIP_Dds *)&entry.data; /* Remove DDS from DD's DDS List */ --- 199,209 ---- int updated_dd_list_size; int memberRemovedFlag; __DEBUG (isns_dereg_debug &1, RemoveAttrDSS_Entry); dds_key.id = id; ! rval = read_DDSObject(id, &p_dds, &entry); if (rval != SUCCESS) return (rval); /* Remove DDS from DD's DDS List */ *************** *** 220,231 **** { dd_key.id = *(uint32_t *)GetNodeData(pnode); ! read_key.tag = DD_ID_KEY; ! read_key.val.dd_key.id = dd_key.id; ! rval = ISNSdbRead(&read_key,&entry2); if (rval != SUCCESS) return (rval); - p_dd = (SOIP_Dd *)&entry2.data; - isActiveFlag = IsDDActive( dd_key.id, p_dds->id ); --- 216,223 ---- { dd_key.id = *(uint32_t *)GetNodeData(pnode); ! rval = read_DDObject(dd_key.id, &p_dd, &entry2); if (rval != SUCCESS) return (rval); isActiveFlag = IsDDActive( dd_key.id, p_dds->id ); *************** *** 247,254 **** /* Store Entry */ ! ISNS_DBKey update_key; ! update_key.tag = DD_ID_KEY; ! update_key.val.dd_key.id = dd_key.id; ! rval = ISNSdbWrite(&update_key,entry2); } --- 239,243 ---- /* Store Entry */ ! write_DDObject(dd_key.id,entry2); } *************** *** 256,272 **** { dd_key.id = dlist_node[ count ]; ! read_key.tag = DD_ID_KEY; ! read_key.val.dd_key.id = dd_key.id; ! ISNSdbRead(&read_key,&entry2); ! p_dd = (SOIP_Dd *)&entry2.data; ! ! change_dd_member_active_flag( p_dd ); } DeleteList(&p_dds->dd_list); ! delete_key.tag = DDS_ID_KEY; ! delete_key.val.dds_key.id = dds_key.id; ! if ( ISNSdbDelete (&delete_key) != SUCCESS) { __DEBUG (isns_dereg_debug & 1, (DDS Removal failed, %u), dds_key.id); --- 245,256 ---- { dd_key.id = dlist_node[ count ]; ! rval = read_DDObject(dd_key.id, &p_dd, &entry2); ! if (rval == SUCCESS) ! change_dd_member_active_flag( p_dd ); } DeleteList(&p_dds->dd_list); ! if ( delete_DDSObject (dds_key.id) != SUCCESS) { __DEBUG (isns_dereg_debug & 1, (DDS Removal failed, %u), dds_key.id); *************** *** 299,303 **** int updated_dd_list_size; int memberRemovedFlag; - ISNS_DBKey read_key; --- 283,286 ---- *************** *** 305,316 **** dds_key.id = id; ! read_key.tag = DDS_ID_KEY; ! read_key.val.dds_key.id = id; ! rval = ISNSdbRead(&read_key,&entry); if (rval != SUCCESS) return (rval); - p_dds = (SOIP_Dds *)&entry.data; - /* Remove DDS from DD's DDS List */ memberRemovedFlag = FALSE; --- 288,295 ---- dds_key.id = id; ! rval = read_DDSObject(dds_key.id, &p_dds, &entry); if (rval != SUCCESS) return (rval); /* Remove DDS from DD's DDS List */ memberRemovedFlag = FALSE; *************** *** 328,338 **** dd_key.id = key->val.dd_id; ! ISNS_DBKey read_key; ! read_key.tag = DD_ID_KEY; ! read_key.val.dd_key.id = dd_key.id; ! rval = ISNSdbRead(&read_key,&entry2); if (rval != SUCCESS) return (rval); - p_dd = (SOIP_Dd *)&entry2.data; pnode=NULL; --- 307,313 ---- dd_key.id = key->val.dd_id; ! rval = read_DDObject(dd_key.id, &p_dd, &entry2); if (rval != SUCCESS) return (rval); pnode=NULL; *************** *** 352,359 **** /* Store Entry */ ! ISNS_DBKey update_key; ! update_key.tag = DD_ID_KEY; ! update_key.val.dd_key.id = dd_key.id; ! ISNSdbWrite(&update_key,entry2); } } --- 327,331 ---- /* Store Entry */ ! write_DDObject(dd_key.id,entry2); } } *************** *** 365,385 **** dd_key.id = dlist_node[ kk ]; ! ISNS_DBKey read_key; ! read_key.tag = DD_ID_KEY; ! read_key.val.dd_key.id = dd_key.id; ! rval = ISNSdbRead(&read_key,&entry2); ! if (rval != SUCCESS) ! return (rval); ! ! p_dd = (SOIP_Dd *)&entry2.data; ! ! change_dd_member_active_flag( p_dd ); } /* Store Entry */ ! ISNS_DBKey add_key; ! add_key.tag = DDS_ID_KEY; ! add_key.val.dds_key.id = id; ! rval = ISNSdbWrite(&add_key,entry); return (ISNS_NO_ERR); } --- 337,347 ---- dd_key.id = dlist_node[ kk ]; ! rval = read_DDObject(dd_key.id, &p_dd, &entry2); ! if (rval == SUCCESS) ! change_dd_member_active_flag( p_dd ); } /* Store Entry */ ! rval = write_DDSObject(id, entry); return (ISNS_NO_ERR); } *************** *** 529,545 **** __DEBUG ( isns_dereg_debug & 1, (Deregistering Entity %s),p_entity_id); - /* - Validate the src attr has permission to delete the node - The src is an entity verify that it is the same as the entity to delete. - */ - /* read entity from database */ ! key.tag = ENTITY_ID_KEY; ! strcpy(key.val.entity_key.id,p_entity_id); ! rval = ISNSdbRead(&key,&entry); if (rval != SUCCESS) return rval; - p_entity = &entry.data.entity; - /* Remove Portals */ --- 491,498 ---- __DEBUG ( isns_dereg_debug & 1, (Deregistering Entity %s),p_entity_id); /* read entity from database */ ! rval = read_EntityObject(p_entity_id, &p_entity, &entry); if (rval != SUCCESS) return rval; /* Remove Portals */ *************** *** 593,597 **** /* Remove Entity */ ! rval = ISNSdbDelete (&key); iSNS_stats.num_entity--; --- 546,550 ---- /* Remove Entity */ ! rval = delete_EntityObject(key.val.entity_key.id); iSNS_stats.num_entity--; *************** *** 717,728 **** /* Remove Port from entity's List */ ! read_key.tag = ENTITY_ID_KEY; ! strcpy(read_key.val.port_name.v,p_ifcp_node->entity_id.id); ! rval = ISNSdbRead(&read_key,&entry4); if (rval != SUCCESS) return rval; - p_entity = &entry4.data.entity; - pnode=NULL; if ((pnode=FindNode(&p_entity->ifcp_node_list, ifcp_node_key, PORT_NAME_SIZE))) --- 670,677 ---- /* Remove Port from entity's List */ ! rval = read_EntityObject(p_ifcp_node->entity_id.id, &p_entity, &entry4); if (rval != SUCCESS) return rval; pnode=NULL; if ((pnode=FindNode(&p_entity->ifcp_node_list, ifcp_node_key, PORT_NAME_SIZE))) *************** *** 731,738 **** } ! ISNS_DBKey key; ! key.tag = ENTITY_ID_KEY; ! strcpy(key.val.entity_key.id,p_ifcp_node->entity_id.id); ! rval = ISNSdbWrite(&key,entry4); if (IsEmptyList(&p_entity->ifcp_node_list) && src_attr != NULL) --- 680,684 ---- } ! rval = write_EntityObject(p_ifcp_node->entity_id.id, entry4); if (IsEmptyList(&p_entity->ifcp_node_list) && src_attr != NULL) *************** *** 1022,1027 **** SOIP_DD_Key dd_key; ISNS_LIST_NODE *pnode; - ISNS_DBKey key; - ISNS_DBKey entity_key; ISNS_DBKey remove_key; --- 968,971 ---- *************** *** 1032,1043 **** scn_bitmap = 0; ! key.tag = ISCSI_ID_KEY; ! strcpy(key.val.node_key.v,iscsi_node_key); ! rval = ISNSdbRead(&key,&entry2); if (rval != SUCCESS) return rval; - p_node = (SOIP_Iscsi *)&entry2.data; - /* Validate the src attr has permission to delete the node --- 976,983 ---- scn_bitmap = 0; ! rval = read_ISCSIObject(iscsi_node_key, &p_node, &entry2); if (rval != SUCCESS) return rval; /* Validate the src attr has permission to delete the node *************** *** 1055,1086 **** { dd_key.id = *(uint32_t *)GetNodeData(pnode); ! ISNS_DBKey read_key; ! read_key.tag = DD_ID_KEY; ! read_key.val.dd_key.id = dd_key.id; ! rval = ISNSdbRead(&read_key,&entry5); ! if (rval != SUCCESS) ! return rval; ! ! p_dd = (SOIP_Dd *)&entry5.data; ! ! Disable_DD_Member (p_dd, p_node->id.v, ISNS_DD_ISCSI_MEMBER); ! ! /* Store Entry */ ! ISNS_DBKey key; ! key.tag = DD_ID_KEY; ! key.val.dd_key.id = dd_key.id; ! rval = ISNSdbWrite(&key,entry5); } /* read entity from database */ ! entity_key.tag = ENTITY_ID_KEY; ! strcpy(entity_key.val.entity_key.id,p_node->entity_id.id); ! rval = ISNSdbRead(&entity_key,&entry4); if (rval != SUCCESS) return ERROR; - p_entity = &entry4.data.entity; - /* Remove ISCSI Node from ENTITY */ if ((pnode = FindNode(&p_entity->iscsi_node_list, iscsi_node_key, PAD4(strlen(iscsi_node_key))))) --- 995,1013 ---- { dd_key.id = *(uint32_t *)GetNodeData(pnode); + rval = read_DDObject(dd_key.id, &p_dd, &entry5); + if (rval == SUCCESS) + { + Disable_DD_Member (p_dd, p_node->id.v, ISNS_DD_ISCSI_MEMBER); ! /* Store Entry */ ! write_DDObject(dd_key.id, entry5); ! } } /* read entity from database */ ! rval = read_EntityObject(p_node->entity_id.id, &p_entity, &entry4); if (rval != SUCCESS) return ERROR; /* Remove ISCSI Node from ENTITY */ if ((pnode = FindNode(&p_entity->iscsi_node_list, iscsi_node_key, PAD4(strlen(iscsi_node_key))))) *************** *** 1090,1094 **** /* update entity in database by doing a write */ ! rval = ISNSdbWrite(&entity_key,entry4); /* Delete the iSCSI Node */ --- 1017,1021 ---- /* update entity in database by doing a write */ ! rval = write_EntityObject(p_node->entity_id.id, entry4); /* Delete the iSCSI Node */ *************** *** 1104,1108 **** send_iscsi_scn_to_members ( NULL, iscsi_node_key, p_scn_all_msg_buffer, ISNS_SCN_OBJ_REMOVED ); ! rval = ISNSdbDelete(&key); if (rval != SUCCESS) { --- 1031,1035 ---- send_iscsi_scn_to_members ( NULL, iscsi_node_key, p_scn_all_msg_buffer, ISNS_SCN_OBJ_REMOVED ); ! rval = delete_ISCSIObject(iscsi_node_key); if (rval != SUCCESS) { *************** *** 1227,1238 **** iSNS_stats.num_portals--; ! read_key.tag = ENTITY_ID_KEY; ! strcpy(read_key.val.entity_key.id,p_portal->entity_id.id); ! rval = ISNSdbRead(&read_key,&entry4); if (rval != SUCCESS) return rval; - p_entity = &entry4.data.entity; - /* Remove Portals */ __ISNS_COPY (&portalListEntry.portal_ip_port, sizeof(portalListEntry.portal_ip_port), portal_key, --- 1154,1161 ---- iSNS_stats.num_portals--; ! rval = read_EntityObject(p_portal->entity_id.id, &p_entity, &entry4); if (rval != SUCCESS) return rval; /* Remove Portals */ __ISNS_COPY (&portalListEntry.portal_ip_port, sizeof(portalListEntry.portal_ip_port), portal_key, *************** *** 1299,1316 **** ISNS_LIST_NODE *pnode; int memberRemovedFlag; - ISNS_DBKey delete_key; - ISNS_DBKey key; - dd_key.id = id; ! ! key.tag = DD_ID_KEY; ! key.val.dd_key.id = id; ! rval = ISNSdbRead(&key,&entry); if (rval != SUCCESS) return rval; - p_dd = (SOIP_Dd *)&entry.data; - /* Remove DD Members */ pnode = NULL; --- 1222,1231 ---- ISNS_LIST_NODE *pnode; int memberRemovedFlag; dd_key.id = id; ! rval = read_DDObject(dd_key.id, &p_dd, &entry); if (rval != SUCCESS) return rval; /* Remove DD Members */ pnode = NULL; *************** *** 1362,1377 **** SOIP_DD_Key dds_key; ISNS_LIST_NODE *pnode2; - ISNS_DBKey key; dds_key.id = *(uint32_t *) GetNodeData(pnode); ! ! key.tag = DDS_ID_KEY; ! key.val.dds_key.id = dds_key.id; ! rval = ISNSdbRead(&key,&entry2); if (rval != SUCCESS) return rval; - p_dds = (SOIP_Dds *)&entry2.data; - if ((pnode2 = FindNode(&p_dds->dd_list, (char *)&p_dd->id, sizeof(p_dd->id)))) { --- 1277,1286 ---- 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); if (rval != SUCCESS) return rval; if ((pnode2 = FindNode(&p_dds->dd_list, (char *)&p_dd->id, sizeof(p_dd->id)))) { *************** *** 1380,1386 **** /* Store Entry */ ! key.tag = DDS_ID_KEY; ! key.val.dds_key.id = dds_key.id; ! rval = ISNSdbWrite(&key,entry2); } --- 1289,1293 ---- /* Store Entry */ ! rval = write_DDSObject(dds_key.id, entry2); } *************** *** 1388,1394 **** DeleteList( &p_dd->dds_list ); ! delete_key.tag=DD_ID_KEY; ! delete_key.val.dd_key.id = dd_key.id; ! if ( ISNSdbDelete(&delete_key) == ERROR ) { __DEBUG ( isns_dereg_debug & 1, (DD Removal failed %u), dd_key.id ); --- 1295,1299 ---- DeleteList( &p_dd->dds_list ); ! if ( delete_DDObject(dd_key.id) != SUCCESS ) { __DEBUG ( isns_dereg_debug & 1, (DD Removal failed %u), dd_key.id ); *************** *** 1414,1431 **** SOIP_DD_Key dd_key; int removeMemberFlag; - ISNS_DBKey key; __DEBUG (isns_dereg_debug & 1, "Entering RemoveDD_Member()\n"); dd_key.id = id; ! ! key.tag = DD_ID_KEY; ! key.val.dd_key.id = dd_key.id; ! rval = ISNSdbRead(&key,&entry); if (rval !=SUCCESS) return rval; - p_dd = (SOIP_Dd *)&entry.data; - /* Prepare the SCN */ memset(p_scn_all_msg_buffer, 0, sizeof(ISNS_Msg)); --- 1319,1330 ---- SOIP_DD_Key dd_key; int removeMemberFlag; __DEBUG (isns_dereg_debug & 1, "Entering RemoveDD_Member()\n"); dd_key.id = id; ! rval = read_DDObject(dd_key.id, &p_dd, &entry); if (rval !=SUCCESS) return rval; /* Prepare the SCN */ memset(p_scn_all_msg_buffer, 0, sizeof(ISNS_Msg)); *************** *** 1473,1479 **** /* Store Entry */ ! key.tag = DD_ID_KEY; ! key.val.dd_key.id = dd_key.id; ! rval = ISNSdbWrite(&key,entry); return ( ISNS_NO_ERR ); --- 1372,1376 ---- /* Store Entry */ ! write_DDObject(dd_key.id, entry); return ( ISNS_NO_ERR ); *************** *** 1533,1547 **** int activeFlag; SOIP_DD_Key dd_key; - ISNS_DBKey key; int rval; ! key.tag = ISCSI_ID_KEY; ! strcpy(key.val.node_key.v,p_node_name); ! rval = ISNSdbRead(&key,&lentry); if (rval != SUCCESS) return rval; - p_node = (SOIP_Iscsi *)&lentry.data; - if ((p_lnode=FindNode(&p_node->dd_id_list, (char *)&p_dd->id, sizeof(p_dd->id)))) { --- 1430,1439 ---- int activeFlag; SOIP_DD_Key dd_key; int rval; ! rval = read_ISCSIObject(p_node_name, &p_node, &lentry); if (rval != SUCCESS) return rval; if ((p_lnode=FindNode(&p_node->dd_id_list, (char *)&p_dd->id, sizeof(p_dd->id)))) { *************** *** 1560,1574 **** dd_key.id = id; ! key.tag = DD_ID_KEY; ! key.val.dd_key.id = id; ! rval = ISNSdbRead(&key,&lentry2); ! if (rval != SUCCESS) ! return rval; ! p_dd2 = (SOIP_Dd *)&lentry2.data; ! ! if (p_dd2->activeFlag) ! { activeFlag = TRUE; ! } } --- 1452,1461 ---- dd_key.id = id; ! rval = read_DDObject(dd_key.id, &p_dd2, &lentry2); ! if (rval == SUCCESS) ! if (p_dd2->activeFlag) ! { activeFlag = TRUE; ! } } *************** *** 1576,1582 **** } ! key.tag = ISCSI_ID_KEY; ! strcpy(key.val.node_key.v,p_node_name); ! ISNSdbWrite(&key,lentry); return (ISNS_NO_ERR); --- 1463,1467 ---- } ! write_ISCSIObject(p_node_name, lentry); return (ISNS_NO_ERR); *************** *** 1716,1736 **** __ISNS_COPY (db_node_name.v, sizeof(db_node_name.v), &key->val, key->len); ! ISNS_DBKey read_key; ! read_key.tag = ISCSI_ID_KEY; ! strcpy(read_key.val.node_key.v,db_node_name.v); ! rval = ISNSdbRead(&read_key,&entry); if (rval != SUCCESS) return rval; - p_node = (SOIP_Iscsi *)&entry.data; - p_node->scn_bitmap=0; p_node->scn_sockfd = 0; /* Store the node */ ! ISNS_DBKey key; ! key.tag = ISCSI_ID_KEY; ! strcpy(key.val.node_key.v,db_node_name.v); ! ISNSdbWrite(&key,entry); } else if (ifcpKeyIndex != -1) --- 1601,1613 ---- __ISNS_COPY (db_node_name.v, sizeof(db_node_name.v), &key->val, key->len); ! rval = read_ISCSIObject(db_node_name.v, &p_node, &entry); if (rval != SUCCESS) return rval; p_node->scn_bitmap=0; p_node->scn_sockfd = 0; /* Store the node */ ! write_ISCSIObject(db_node_name.v, entry); } else if (ifcpKeyIndex != -1) *************** *** 1763,1767 **** /* Fetch entity from hash */ ! if (ISNS_NO_ERR != SNSdbFetchEntity ((char *) &key->val, &p_entity, &entry)) { return (ISNS_NO_SUCH_ENTRY_ERR); --- 1640,1644 ---- /* Fetch entity from hash */ ! if (ISNS_NO_ERR != read_EntityObject ((char *) &key->val, &p_entity, &entry)) { return (ISNS_NO_SUCH_ENTRY_ERR); *************** *** 1772,1779 **** /* Store the node */ ! ISNS_DBKey key; ! key.tag = ENTITY_ID_KEY; ! strcpy(key.val.entity_key.id,p_entity->eid.id); ! ISNSdbWrite(&key,entry); return (ISNS_NO_ERR); --- 1649,1653 ---- /* Store the node */ ! write_EntityObject(p_entity->eid.id, entry); return (ISNS_NO_ERR); *************** *** 1828,1832 **** /* Fetch entity from hash */ ! if (ISNS_NO_ERR != SNSdbFetchEntity (key.val.entity_key.id, &p_entity, &entry)) { return; --- 1702,1706 ---- /* Fetch entity from hash */ ! if (ISNS_NO_ERR != read_EntityObject (key.val.entity_key.id, &p_entity, &entry)) { return; Index: iSNSreg.c =================================================================== RCS file: /cvsroot/linuxisns/isnsNT/isnsserver/src/iSNSreg.c,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** iSNSreg.c 23 Aug 2007 02:50:21 -0000 1.29 --- iSNSreg.c 24 Aug 2007 22:51:34 -0000 1.30 *************** *** 42,45 **** --- 42,46 ---- #include "iSNSList.h" #include "iSNSdb.h" + #include "iSNSobjects.h" #include "iSNSreg.h" #include "iSNSscn.h" *************** *** 440,448 **** __DEBUG (isns_reg_debug &1,Fetch entity); strncpy(db_entity_id.id, (char *)&attr->val, sizeof(db_entity_id.id)); ! ISNS_DBKey read_key; ! read_key.tag = ENTITY_ID_KEY; ! strcpy(read_key.val.entity_key.id,db_entity_id.id); ! rval = ISNSdbRead(&read_key,&entry); ! if ( rval != SUCCESS) { --- 441,445 ---- __DEBUG (isns_reg_debug &1,Fetch entity); strncpy(db_entity_id.id, (char *)&attr->val, sizeof(db_entity_id.id)); ! rval = read_EntityObject(db_entity_id.id, &p_entity, &entry); if ( rval != SUCCESS) { *************** *** 451,456 **** } - p_entity = &entry.data.entity; - foundFlag = FALSE; pnode = NULL; --- 448,451 ---- *************** *** 503,507 **** { attr = (ISNS_Attr *)(key_indx[ eidKeyIndex ]); ! if ( SNSdbFetchEntity ((char *)&attr->val, &p_entity, &entry) ) { return (ISNS_INVALID_REG_ERR); --- 498,502 ---- { attr = (ISNS_Attr *)(key_indx[ eidKeyIndex ]); ! if ( read_EntityObject ((char *)&attr->val, &p_entity, &entry) ) { return (ISNS_INVALID_REG_ERR); *************** *** 619,623 **** if (newPortalRegFlag || updateFlag) { ! if ( SNSdbFetchEntity ((char *)p_portal->entity_id.id, &p_entity, &entry) ) return ( ERROR ); --- 614,618 ---- if (newPortalRegFlag || updateFlag) { ! if ( read_EntityObject ((char *)p_portal->entity_id.id, &p_entity, &entry) ) return ( ERROR ); *************** *** 979,983 **** SOIP_Dd *p_dd; SOIP_DD_Key dds_key; - SOIP_DD_Key dd_key; ISNS_LIST_NODE *pnode; ISNS_Attr *src_attr; --- 974,977 ---- *************** *** 986,991 **** int symIndex; char *p_sym; - ISNS_DBKey add_key; - ISNS_DBKey update_key; __DEBUG (isns_reg_debug & 1, (Registering DDS)); --- 980,983 ---- *************** *** 1070,1080 **** } ! ISNS_DBKey read_key; ! read_key.tag = DDS_ID_KEY; ! read_key.val.dds_key.id = dds_key.id; ! rval = ISNSdbRead(&read_key,&entry); ! ! p_dds = (SOIP_Dds *)&entry.data; ! if ( (rval == SUCCESS) && (p_md->msg.hdr.flags & ISNS_FLAG_REPLACE_REG) ) { --- 1062,1066 ---- } ! rval = read_DDSObject(dds_key.id, &p_dds, &entry); if ( (rval == SUCCESS) && (p_md->msg.hdr.flags & ISNS_FLAG_REPLACE_REG) ) { *************** *** 1184,1191 **** } /* Store Entry */ ! /* ISNSDisplay_DDS ( p_dds, HI_DETAIL ); */ ! add_key.tag = DDS_ID_KEY; ! add_key.val.dds_key.id = dds_key.id; ! rval = ISNSdbWrite (&add_key,entry); if ( newRegFlag ) iSNS_stats.num_dds++; --- 1170,1174 ---- } /* Store Entry */ ! rval = write_DDSObject(dds_key.id, entry); if ( newRegFlag ) iSNS_stats.num_dds++; *************** *** 1206,1219 **** /* Change status for all DD */ ! dd_key.id = dd_id; ! ISNS_DBKey key; ! key.tag = DD_ID_KEY; ! key.val.dd_key.id = dd_key.id; ! rval = ISNSdbRead(&key,&entry); if (rval != SUCCESS) return rval; - p_dd = (SOIP_Dd *)&entry.data; - newState = IsDDActive ( dd_id, 0 ); --- 1189,1196 ---- /* Change status for all DD */ ! rval = read_DDObject(dd_id, &p_dd, &entry); if (rval != SUCCESS) return rval; newState = IsDDActive ( dd_id, 0 ); *************** *** 1226,1232 **** /* Store Entry */ ! update_key.tag = DD_ID_KEY; ! update_key.val.dd_key.id = dd_id; ! ISNSdbWrite(&update_key,entry); } } --- 1203,1207 ---- /* Store Entry */ ! write_DDObject(dd_id, entry); } } *************** *** 1238,1251 **** break; ! dd_key.id = dlist_node[ count ]; ! ISNS_DBKey key; ! key.tag = DD_ID_KEY; ! key.val.dd_key.id = dd_key.id; ! rval = ISNSdbRead(&key,&entry); if (rval != SUCCESS) return rval; - p_dd = (SOIP_Dd *)&entry.data; - /* Change all members to new state */ change_dd_member_active_flag( p_dd ); --- 1213,1220 ---- break; ! rval = read_DDObject(dlist_node[count], &p_dd, &entry); i... [truncated message content] |