*
* At the present time the return value is ignored by the caller.
*/
-typedef struct cm_cell_rock {
- cm_cell_t * cellp;
- afs_uint32 flags;
-} cm_cell_rock_t;
-
long cm_AddCellProc(void *rockp, struct sockaddr_in *addrp, char *hostnamep)
{
cm_server_t *tsp;
#define CM_CELLFLAG_IN_NAMEHASH 0x10
#define CM_CELLFLAG_IN_IDHASH 0x20
+typedef struct cm_cell_rock {
+ cm_cell_t * cellp;
+ afs_uint32 flags;
+} cm_cell_rock_t;
+
+
#define CM_CELL_NAME_HASH(name) (SDBMHash(name) % cm_data.cellHashTableSize)
#define CM_CELL_ID_HASH(id) ((unsigned long) id % cm_data.cellHashTableSize)
extern void cm_AddCellToIDHashTable(cm_cell_t * cellp);
+extern long cm_AddCellProc(void *rockp, struct sockaddr_in *addrp, char *namep);
+
#endif /* __CELL_H_ENV_ */
return CM_ERROR_NOMORETOKENS; /* mapped to EDOM */
}
-extern long cm_AddCellProc(void *rockp, struct sockaddr_in *addrp, char *namep);
-
long cm_IoctlNewCell(struct smb_ioctl *ioctlp, struct cm_user *userp)
{
/* NT cache manager will read cell information from CellServDB each time
*/
cm_cell_t *cp;
+ cm_cell_rock_t rock;
+
cm_SkipIoctlPath(ioctlp);
lock_ObtainWrite(&cm_cellLock);
/* delete all previous server lists - cm_FreeServerList will ask for write on cm_ServerLock*/
cm_FreeServerList(&cp->vlServersp, CM_FREESERVERLIST_DELETE);
cp->vlServersp = NULL;
- code = cm_SearchCellFile(cp->name, cp->name, cm_AddCellProc, cp);
+ rock.cellp = cp;
+ rock.flags = 0;
+ code = cm_SearchCellFile(cp->name, cp->name, cm_AddCellProc, &rock);
#ifdef AFS_AFSDB_ENV
if (code) {
if (cm_dnsEnabled) {
int ttl;
- code = cm_SearchCellByDNS(cp->name, cp->name, &ttl, cm_AddCellProc, cp);
+ code = cm_SearchCellByDNS(cp->name, cp->name, &ttl, cm_AddCellProc, &rock);
if ( code == 0 ) { /* got cell from DNS */
cp->flags |= CM_CELLFLAG_DNS;
cp->flags &= ~CM_CELLFLAG_VLSERVER_INVALID;