2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
10 #ifndef AFSCLASS_IDENT_H
11 #define AFSCLASS_IDENT_H
13 #include <WINNT/afsclass.h>
17 * IDENTIFIER CLASS ___________________________________________________________
38 friend class AGGREGATE;
41 friend class PTSGROUP;
44 IDENTTYPE GetType (void);
46 BOOL fIsServer (void);
47 BOOL fIsService (void);
48 BOOL fIsAggregate (void);
49 BOOL fIsFileset (void);
52 size_t GetRefCount (void);
54 LPCELL OpenCell (ULONG *pStatus = NULL);
55 LPSERVER OpenServer (ULONG *pStatus = NULL);
56 LPSERVICE OpenService (ULONG *pStatus = NULL);
57 LPAGGREGATE OpenAggregate (ULONG *pStatus = NULL);
58 LPFILESET OpenFileset (ULONG *pStatus = NULL);
59 LPUSER OpenUser (ULONG *pStatus = NULL);
60 LPPTSGROUP OpenGroup (ULONG *pStatus = NULL);
62 LPIDENT GetCell (void);
63 LPIDENT GetServer (void);
64 LPIDENT GetService (void);
65 LPIDENT GetAggregate (void);
66 LPIDENT GetFileset (void);
67 LPIDENT GetUser (void);
68 LPIDENT GetGroup (void);
70 void GetCellName (LPTSTR pszName);
71 void GetLongServerName (LPTSTR pszName);
72 void GetShortServerName (LPTSTR pszName);
73 void GetServerName (LPTSTR pszName);
74 void GetServiceName (LPTSTR pszName);
75 void GetAggregateName (LPTSTR pszName);
76 void GetFilesetName (LPTSTR pszName);
77 void GetFilesetID (VOLUMEID *pvid);
78 void GetUserName (LPTSTR pszName, LPTSTR pszInstance = NULL);
79 void GetGroupName (LPTSTR pszPrincipal);
80 void GetFullUserName (LPTSTR pszFullName);
82 PVOID GetUserParam (void);
83 void SetUserParam (PVOID pUserParam);
85 static LPIDENT FindFirst (HENUM *phEnum);
86 static LPIDENT FindFirst (HENUM *phEnum, VOLUMEID *pvidFileset);
87 static LPIDENT FindNext (HENUM *phEnum);
88 static void FindClose (HENUM *phEnum);
90 static LPIDENT FindServer (LPIDENT lpiCell, LPTSTR pszServer);
91 static LPIDENT FindAggregate (LPIDENT lpiServer, LPTSTR pszAggregate);
92 static LPIDENT FindFileset (LPIDENT lpiParent, LPTSTR pszFileset);
93 static LPIDENT FindFileset (LPIDENT lpiParent, VOLUMEID *pvidFileset);
94 static LPIDENT FindUser (LPIDENT lpiCell, LPTSTR pszPrincipal, LPTSTR pszInstance = NULL);
95 static LPIDENT FindGroup (LPIDENT lpiCell, LPTSTR pszGroup);
100 void InitIdent (void);
101 IDENT (LPCELL lpCell);
102 IDENT (LPSERVER lpServer);
103 IDENT (LPSERVICE lpSvc);
104 IDENT (LPAGGREGATE lpAgg);
105 IDENT (LPFILESET lpSet);
106 IDENT (LPUSER lpUser);
107 IDENT (LPPTSGROUP lpGroup);
111 static void InitClass (void);
112 static void RemoveIdentsInCell (LPIDENT lpiCell);
113 static LPIDENT FindIdent (LPCELL lpCell);
114 static LPIDENT FindIdent (LPSERVER lpServer);
115 static LPIDENT FindIdent (LPSERVICE lpService);
116 static LPIDENT FindIdent (LPAGGREGATE lpAggregate);
117 static LPIDENT FindIdent (LPFILESET lpFileset);
118 static LPIDENT FindIdent (LPFILESET lpFileset, VOLUMEID *pvid);
119 static LPIDENT FindIdent (LPUSER lpUser);
120 static LPIDENT FindIdent (LPPTSGROUP lpGroup);
121 static LPIDENT FindIdent (IDENTTYPE iType, LPTSTR pszCell, LPTSTR pszServer, LPTSTR pszService, LPTSTR pszAggregate, LPTSTR pszFileset, VOLUMEID *pvidFileset);
122 static LPIDENT FindIdent (IDENTTYPE iType, LPTSTR pszCell, LPTSTR pszAccount, LPTSTR pszInstance);
129 TCHAR m_szCell[ cchNAME ];
130 TCHAR m_szServer[ cchNAME ];
131 TCHAR m_szService[ cchNAME ];
132 TCHAR m_szAggregate[ cchNAME ];
133 TCHAR m_szFileset[ cchNAME ];
134 TCHAR m_szAccount[ cchNAME ];
135 TCHAR m_szInstance[ cchNAME ];
136 VOLUMEID m_vidFileset;
140 static LPHASHLIST x_lIdents;
141 static LPHASHLISTKEY x_lkTypeServer;
142 static LPHASHLISTKEY x_lkFilesetID;
143 static LPHASHLISTKEY x_lkFilesetName;
144 static LPHASHLISTKEY x_lkAccountName;
146 static BOOL CALLBACK IDENT::KeyTypeServer_Compare (LPHASHLISTKEY pKey, PVOID pObject, PVOID pData);
147 static HASHVALUE CALLBACK IDENT::KeyTypeServer_HashObject (LPHASHLISTKEY pKey, PVOID pObject);
148 static HASHVALUE CALLBACK IDENT::KeyTypeServer_HashData (LPHASHLISTKEY pKey, PVOID pData);
150 static BOOL CALLBACK IDENT::KeyFilesetID_Compare (LPHASHLISTKEY pKey, PVOID pObject, PVOID pData);
151 static HASHVALUE CALLBACK IDENT::KeyFilesetID_HashObject (LPHASHLISTKEY pKey, PVOID pObject);
152 static HASHVALUE CALLBACK IDENT::KeyFilesetID_HashData (LPHASHLISTKEY pKey, PVOID pData);
154 static BOOL CALLBACK IDENT::KeyFilesetName_Compare (LPHASHLISTKEY pKey, PVOID pObject, PVOID pData);
155 static HASHVALUE CALLBACK IDENT::KeyFilesetName_HashObject (LPHASHLISTKEY pKey, PVOID pObject);
156 static HASHVALUE CALLBACK IDENT::KeyFilesetName_HashData (LPHASHLISTKEY pKey, PVOID pData);
158 static BOOL CALLBACK IDENT::KeyAccountName_Compare (LPHASHLISTKEY pKey, PVOID pObject, PVOID pData);
159 static HASHVALUE CALLBACK IDENT::KeyAccountName_HashObject (LPHASHLISTKEY pKey, PVOID pObject);
160 static HASHVALUE CALLBACK IDENT::KeyAccountName_HashData (LPHASHLISTKEY pKey, PVOID pData);
164 #endif // AFSCLASS_IDENT_H