From 748e07d24367e80e353446bdb97f61ce420d303d Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Wed, 6 Feb 2013 19:32:28 -0500 Subject: [PATCH] Windows: add cm_HaveToken cm_HaveToken answers the question of whether a cm_user_t has a token for a specified cell. Change-Id: I4dff312a7e9000ccee6952c21fca174700364c4c Reviewed-on: http://gerrit.openafs.org/9076 Tested-by: BuildBot Reviewed-by: Rod Widdowson Reviewed-by: Jeffrey Altman --- src/WINNT/afsd/cm_aclent.c | 21 +++++++++++++++++++++ src/WINNT/afsd/cm_user.h | 2 ++ 2 files changed, 23 insertions(+) diff --git a/src/WINNT/afsd/cm_aclent.c b/src/WINNT/afsd/cm_aclent.c index 23dba1013..2a6705397 100644 --- a/src/WINNT/afsd/cm_aclent.c +++ b/src/WINNT/afsd/cm_aclent.c @@ -157,6 +157,27 @@ time_t cm_TGTLifeTime(cm_user_t *userp, afs_uint32 cellID) return expirationTime; } +int +cm_HaveToken(cm_user_t *userp, afs_uint32 cellID) +{ + cm_cell_t *cellp = NULL; + cm_ucell_t * ucp = NULL; + int havetoken = 0; + time_t now; + + lock_ObtainMutex(&userp->mx); + cellp = cm_FindCellByID(cellID, CM_FLAG_NOPROBE); + ucp = cm_GetUCell(userp, cellp); + if (ucp->ticketp) { + now = time(NULL); + if (ucp->expirationTime > now) + havetoken = 1; + } + lock_ReleaseMutex(&userp->mx); + + return havetoken; +} + /* * Add rights to an acl cache entry. Do the right thing if not present, diff --git a/src/WINNT/afsd/cm_user.h b/src/WINNT/afsd/cm_user.h index 4f63b565d..bbe5a71a0 100644 --- a/src/WINNT/afsd/cm_user.h +++ b/src/WINNT/afsd/cm_user.h @@ -72,6 +72,8 @@ extern void cm_ReleaseUserVCRef(cm_user_t *up); extern void cm_CheckTokenCache(time_t now); +extern int cm_HaveToken(cm_user_t *userp, afs_uint32 cellID); + extern cm_user_t *cm_rootUserp; #endif /* OPENAFS_WINNT_AFSD_CM_USER_H */ -- 2.39.5