static struct rx_securityClass *nullServerSecurityClassp;
struct hostent *thp;
char *msgBuf;
- char buf[1024];
+ char buf[1024], *p, *q;
HKEY parmKey;
DWORD dummyLen;
DWORD regType;
dummyLen = sizeof(buf);
code = RegQueryValueEx(parmKey, "SysName", NULL, NULL, buf, &dummyLen);
- if (code == ERROR_SUCCESS && buf[0]) {
- char * p, *q;
- afsi_log("Sys name %s", buf);
+ if (code != ERROR_SUCCESS || !buf[0]) {
+#if defined(_IA64_)
+ StringCbCopyA(buf, sizeof(buf), "ia64_win64");
+#elif defined(_AMD64)
+ StringCbCopyA(buf, sizeof(buf), "amd64_win64");
+#else /* assume x86 32-bit */
+ StringCbCopyA(buf, sizeof(buf), "x86_win32 i386_w2k i386_nt40");
+#endif
+ }
+ afsi_log("Sys name %s", buf);
- for (p = q = buf; p < buf + dummyLen; p++)
- {
- if (*p == '\0' || isspace(*p)) {
- memcpy(cm_sysNameList[cm_sysNameCount],q,p-q);
- cm_sysNameList[cm_sysNameCount][p-q] = '\0';
- cm_sysNameCount++;
-
- do {
- if (*p == '\0')
- goto done_sysname;
-
- p++;
- } while (*p == '\0' || isspace(*p));
- q = p;
- p--;
- }
+ /* breakup buf into individual search string entries */
+ for (p = q = buf; p < buf + dummyLen; p++)
+ {
+ if (*p == '\0' || isspace(*p)) {
+ memcpy(cm_sysNameList[cm_sysNameCount],q,p-q);
+ cm_sysNameList[cm_sysNameCount][p-q] = '\0';
+ cm_sysNameCount++;
+
+ do {
+ if (*p == '\0')
+ goto done_sysname;
+ p++;
+ } while (*p == '\0' || isspace(*p));
+ q = p;
+ p--;
}
- done_sysname:
- StringCbCopyA(cm_sysName, MAXSYSNAME, cm_sysNameList[0]);
- } else {
- cm_sysNameCount = 1;
- StringCbCopyA(cm_sysName, MAXSYSNAME, "i386_nt40");
- StringCbCopyA(cm_sysNameList[0], MAXSYSNAME, "i386_nt40");
- afsi_log("Default sys name %s", cm_sysName);
}
+ done_sysname:
+ StringCbCopyA(cm_sysName, MAXSYSNAME, cm_sysNameList[0]);
dummyLen = sizeof(cryptall);
code = RegQueryValueEx(parmKey, "SecurityLevel", NULL, NULL,
* An aclent structure is free if it has no back vnode pointer.
*/
osi_rwlock_t cm_aclLock; /* lock for system's aclents */
-
+cm_aclent_t *cm_aclLRUp; /* LRUQ for dudes in vnode's lists */
+cm_aclent_t *cm_aclLRUEndp; /* ditto */
/*
* Get an acl cache entry for a particular user and file, or return that it doesn't exist.
* Called with the scp locked.
*/
} else {
*rightsp = aclp->randomAccess;
- if (cm_data.aclLRUEndp == aclp)
- cm_data.aclLRUEndp = (cm_aclent_t *) osi_QPrev(&aclp->q);
+ if (cm_aclLRUEndp == aclp)
+ cm_aclLRUEndp = (cm_aclent_t *) osi_QPrev(&aclp->q);
/* move to the head of the LRU queue */
- osi_QRemove((osi_queue_t **) &cm_data.aclLRUp, &aclp->q);
- osi_QAddH((osi_queue_t **) &cm_data.aclLRUp,
- (osi_queue_t **) &cm_data.aclLRUEndp,
+ osi_QRemove((osi_queue_t **) &cm_aclLRUp, &aclp->q);
+ osi_QAddH((osi_queue_t **) &cm_aclLRUp,
+ (osi_queue_t **) &cm_aclLRUEndp,
&aclp->q);
retval = 0; /* success */
}
cm_aclent_t *taclp;
cm_aclent_t **laclpp;
- if (cm_data.aclLRUp == NULL)
+ if (cm_aclLRUp == NULL)
osi_panic("empty aclent LRU", __FILE__, __LINE__);
lock_ObtainWrite(&cm_aclLock);
- aclp = cm_data.aclLRUEndp;
- if (aclp == cm_data.aclLRUEndp)
- cm_data.aclLRUEndp = (cm_aclent_t *) osi_QPrev(&aclp->q);
- osi_QRemove((osi_queue_t **) &cm_data.aclLRUp, &aclp->q);
+ aclp = cm_aclLRUEndp;
+ if (aclp == cm_aclLRUEndp)
+ cm_aclLRUEndp = (cm_aclent_t *) osi_QPrev(&aclp->q);
+ osi_QRemove((osi_queue_t **) &cm_aclLRUp, &aclp->q);
if (aclp->backp) {
/*
* Remove the entry from the vnode's list
* someone there.
*/
aclp = GetFreeACLEnt(); /* can't fail, panics instead */
- osi_QAddH((osi_queue_t **) &cm_data.aclLRUp, (osi_queue_t **) &cm_data.aclLRUEndp, &aclp->q);
+ osi_QAddH((osi_queue_t **) &cm_aclLRUp, (osi_queue_t **) &cm_aclLRUEndp, &aclp->q);
aclp->backp = scp;
aclp->nextp = scp->randomACLp;
scp->randomACLp = aclp;
return 0;
}
-long cm_ShutdownACLCache(void)
-{
- return 0;
-}
-
-long cm_ValidateACLCache(void)
-{
- long size = cm_data.stats * 2;
- long count;
- cm_aclent_t * aclp;
-
- for ( aclp = cm_data.aclLRUp, count = 0; aclp;
- aclp = (cm_aclent_t *) osi_QNext(&aclp->q), count++ ) {
- if (aclp->magic != CM_ACLENT_MAGIC) {
- afsi_log("cm_ValidateACLCache failure: acpl->magic != CM_ACLENT_MAGIC");
- fprintf(stderr, "cm_ValidateACLCache failure: acpl->magic != CM_ACLENT_MAGIC\n");
- return -1;
- }
- if (aclp->nextp && aclp->nextp->magic != CM_ACLENT_MAGIC) {
- afsi_log("cm_ValidateACLCache failure: acpl->nextp->magic != CM_ACLENT_MAGIC");
- fprintf(stderr,"cm_ValidateACLCache failure: acpl->nextp->magic != CM_ACLENT_MAGIC\n");
- return -2;
- }
- if (aclp->backp && aclp->backp->magic != CM_SCACHE_MAGIC) {
- afsi_log("cm_ValidateACLCache failure: acpl->backp->magic != CM_SCACHE_MAGIC");
- fprintf(stderr,"cm_ValidateACLCache failure: acpl->backp->magic != CM_SCACHE_MAGIC\n");
- return -3;
- }
- if (count != 0 && aclp == cm_data.aclLRUp || count > size) {
- afsi_log("cm_ValidateACLCache failure: loop in cm_data.aclLRUp list");
- fprintf(stderr, "cm_ValidateACLCache failure: loop in cm_data.aclLRUp list\n");
- return -4;
- }
- }
-
- for ( aclp = cm_data.aclLRUEndp, count = 0; aclp;
- aclp = (cm_aclent_t *) osi_QPrev(&aclp->q), count++ ) {
- if (aclp->magic != CM_ACLENT_MAGIC) {
- afsi_log("cm_ValidateACLCache failure: aclp->magic != CM_ACLENT_MAGIC");
- fprintf(stderr, "cm_ValidateACLCache failure: aclp->magic != CM_ACLENT_MAGIC\n");
- return -5;
- }
- if (aclp->nextp && aclp->nextp->magic != CM_ACLENT_MAGIC) {
- afsi_log("cm_ValidateACLCache failure: aclp->nextp->magic != CM_ACLENT_MAGIC");
- fprintf(stderr, "cm_ValidateACLCache failure: aclp->nextp->magic != CM_ACLENT_MAGIC\n");
- return -6;
- }
- if (aclp->backp && aclp->backp->magic != CM_SCACHE_MAGIC) {
- afsi_log("cm_ValidateACLCache failure: aclp->backp->magic != CM_SCACHE_MAGIC");
- fprintf(stderr, "cm_ValidateACLCache failure: aclp->backp->magic != CM_SCACHE_MAGIC\n");
- return -7;
- }
-
- if (count != 0 && aclp == cm_data.aclLRUEndp || count > size) {
- afsi_log("cm_ValidateACLCache failure: loop in cm_data.aclLRUEndp list");
- fprintf(stderr, "cm_ValidateACLCache failure: loop in cm_data.aclLRUEndp list\n");
- return -8;
- }
- }
-
- return 0;
-}
-
/*
* Initialize the cache to have an entries. Called during system startup.
*/
-long cm_InitACLCache(int newFile, long size)
+long cm_InitACLCache(long size)
{
cm_aclent_t *aclp;
long i;
}
lock_ObtainWrite(&cm_aclLock);
- if ( newFile ) {
- cm_data.aclLRUp = cm_data.aclLRUEndp = NULL;
- aclp = (cm_aclent_t *) cm_data.aclBaseAddress;
- memset(aclp, 0, size * sizeof(cm_aclent_t));
+ cm_aclLRUp = cm_aclLRUEndp = NULL;
+ aclp = (cm_aclent_t *) malloc(size * sizeof(cm_aclent_t));
+ memset(aclp, 0, size * sizeof(cm_aclent_t));
- /*
- * Put all of these guys on the LRU queue
- */
- for (i = 0; i < size; i++) {
- aclp->magic = CM_ACLENT_MAGIC;
- osi_QAddH((osi_queue_t **) &cm_data.aclLRUp, (osi_queue_t **) &cm_data.aclLRUEndp, &aclp->q);
- aclp++;
- }
- } else {
- aclp = (cm_aclent_t *) cm_data.aclBaseAddress;
- for (i = 0; i < size; i++) {
- aclp->userp = NULL;
- aclp->tgtLifetime = 0;
- aclp++;
- }
+ /*
+ * Put all of these guys on the LRU queue
+ */
+ for (i = 0; i < size; i++) {
+ osi_QAddH((osi_queue_t **) &cm_aclLRUp, (osi_queue_t **) &cm_aclLRUEndp, &aclp->q);
+ aclp++;
}
lock_ReleaseWrite(&cm_aclLock);
return 0;