Windows: roken.h ordering
[openafs.git] / src / WINNT / afsadmsvr / TaAfsAdmSvrClientGroup.cpp
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  *
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
8  */
9
10 #include <winsock2.h>
11 #include <ws2tcpip.h>
12
13 extern "C" {
14 #include <afsconfig.h>
15 #include <afs/param.h>
16 #include <afs/stds.h>
17 #include <roken.h>
18 }
19
20 #include "TaAfsAdmSvrClientInternal.h"
21
22
23 /*
24  * ROUTINES ___________________________________________________________________
25  *
26  */
27
28 BOOL ADMINAPI asc_GroupChange (UINT_PTR idClient, ASID idCell, ASID idGroup, LPAFSADMSVR_CHANGEGROUP_PARAMS pChange, ULONG *pStatus)
29 {
30    BOOL rc = TRUE;
31    ULONG status = 0;
32
33    RpcTryExcept
34       {
35       if ((rc = AfsAdmSvr_ChangeGroup (idClient, idCell, idGroup, pChange, &status)) != FALSE)
36          {
37          // If we succeeded in changing this group's properties, get the
38          // newest values for our cache.
39          //
40          ASOBJPROP Properties;
41          rc = asc_ObjectPropertiesGet (idClient, GET_ALL_DATA, idCell, idGroup, &Properties, &status);
42          }
43       }
44    RpcExcept(1)
45       {
46       rc = FALSE;
47       status = RPC_S_CALL_FAILED_DNE;
48       }
49    RpcEndExcept
50
51    if (!rc && pStatus)
52       *pStatus = status;
53    return rc;
54 }
55
56
57 BOOL ADMINAPI asc_GroupMembersGet (UINT_PTR idClient, ASID idCell, ASID idGroup, LPASIDLIST *ppAsidList, ULONG *pStatus)
58 {
59    BOOL rc = TRUE;
60    ULONG status = 0;
61
62    RpcTryExcept
63       {
64       rc = AfsAdmSvr_GetGroupMembers (idClient, idCell, idGroup, ppAsidList, &status);
65       }
66    RpcExcept(1)
67       {
68       rc = FALSE;
69       status = RPC_S_CALL_FAILED_DNE;
70       }
71    RpcEndExcept
72
73    if (!rc && pStatus)
74       *pStatus = status;
75    return rc;
76 }
77
78
79 BOOL ADMINAPI asc_GroupMemberAdd (UINT_PTR idClient, ASID idCell, ASID idGroup, ASID idMember, ULONG *pStatus)
80 {
81    BOOL rc = TRUE;
82    ULONG status = 0;
83
84    RpcTryExcept
85       {
86       rc = AfsAdmSvr_AddGroupMember (idClient, idCell, idGroup, idMember, &status);
87       }
88    RpcExcept(1)
89       {
90       rc = FALSE;
91       status = RPC_S_CALL_FAILED_DNE;
92       }
93    RpcEndExcept
94
95    if (!rc && pStatus)
96       *pStatus = status;
97    return rc;
98 }
99
100
101 BOOL ADMINAPI asc_GroupMemberRemove (UINT_PTR idClient, ASID idCell, ASID idGroup, ASID idMember, ULONG *pStatus)
102 {
103    BOOL rc = TRUE;
104    ULONG status = 0;
105
106    RpcTryExcept
107       {
108       rc = AfsAdmSvr_RemoveGroupMember (idClient, idCell, idGroup, idMember, &status);
109       }
110    RpcExcept(1)
111       {
112       rc = FALSE;
113       status = RPC_S_CALL_FAILED_DNE;
114       }
115    RpcEndExcept
116
117    if (!rc && pStatus)
118       *pStatus = status;
119    return rc;
120 }
121
122
123 BOOL ADMINAPI asc_GroupRename (UINT_PTR idClient, ASID idCell, ASID idGroup, LPCTSTR pszNewName, ULONG *pStatus)
124 {
125    BOOL rc = TRUE;
126    ULONG status = 0;
127
128    RpcTryExcept
129       {
130       STRING szNewName = TEXT("");
131       if (pszNewName)
132          lstrcpy (szNewName, pszNewName);
133       if ((rc = AfsAdmSvr_RenameGroup (idClient, idCell, idGroup, szNewName, &status)) == TRUE)
134          {
135          // If we succeeded in changing this group's name, get the
136          // newest group properties for our cache.
137          //
138          ASOBJPROP Properties;
139          rc = asc_ObjectPropertiesGet (idClient, GET_ALL_DATA, idCell, idGroup, &Properties, &status);
140          }
141       }
142    RpcExcept(1)
143       {
144       rc = FALSE;
145       status = RPC_S_CALL_FAILED_DNE;
146       }
147    RpcEndExcept
148
149    if (!rc && pStatus)
150       *pStatus = status;
151    return rc;
152 }
153
154
155 BOOL ADMINAPI asc_GroupMembershipGet (UINT_PTR idClient, ASID idCell, ASID idMember, LPASIDLIST *ppAsidList, ULONG *pStatus)
156 {
157    BOOL rc = TRUE;
158    ULONG status = 0;
159
160    RpcTryExcept
161       {
162       rc = AfsAdmSvr_GetGroupMembership (idClient, idCell, idMember, ppAsidList, &status);
163       }
164    RpcExcept(1)
165       {
166       rc = FALSE;
167       status = RPC_S_CALL_FAILED_DNE;
168       }
169    RpcEndExcept
170
171    if (!rc && pStatus)
172       *pStatus = status;
173    return rc;
174 }
175
176
177 BOOL ADMINAPI asc_GroupOwnershipGet (UINT_PTR idClient, ASID idCell, ASID idOwner, LPASIDLIST *ppAsidList, ULONG *pStatus)
178 {
179    BOOL rc = TRUE;
180    ULONG status = 0;
181
182    RpcTryExcept
183       {
184       rc = AfsAdmSvr_GetGroupOwnership (idClient, idCell, idOwner, ppAsidList, &status);
185       }
186    RpcExcept(1)
187       {
188       rc = FALSE;
189       status = RPC_S_CALL_FAILED_DNE;
190       }
191    RpcEndExcept
192
193    if (!rc && pStatus)
194       *pStatus = status;
195    return rc;
196 }
197
198
199 BOOL ADMINAPI asc_GroupCreate (UINT_PTR idClient, ASID idCell, LPAFSADMSVR_CREATEGROUP_PARAMS pCreate, ASID *pidGroup, ULONG *pStatus)
200 {
201    BOOL rc = TRUE;
202    ULONG status = 0;
203
204    RpcTryExcept
205       {
206       if ((rc = AfsAdmSvr_CreateGroup (idClient, idCell, pCreate, pidGroup, &status)) == TRUE)
207          {
208          // If we succeeded in creating this group, get the
209          // initial group properties for our cache.
210          //
211          ASOBJPROP Properties;
212          rc = asc_ObjectPropertiesGet (idClient, GET_ALL_DATA, idCell, *pidGroup, &Properties, &status);
213          }
214       }
215    RpcExcept(1)
216       {
217       rc = FALSE;
218       status = RPC_S_CALL_FAILED_DNE;
219       }
220    RpcEndExcept
221
222    if (!rc && pStatus)
223       *pStatus = status;
224    return rc;
225 }
226
227
228 BOOL ADMINAPI asc_GroupDelete (UINT_PTR idClient, ASID idCell, ASID idGroup, ULONG *pStatus)
229 {
230    BOOL rc = TRUE;
231    ULONG status = 0;
232
233    RpcTryExcept
234       {
235       if ((rc = AfsAdmSvr_DeleteGroup (idClient, idCell, idGroup, &status)) == TRUE)
236          {
237          // If we succeeded in deleting this group, clean up our cache.
238          // Expect this call to fail (the group's deleted, right?)
239          //
240          ASOBJPROP Properties;
241          ULONG dummy;
242          (void)asc_ObjectPropertiesGet (idClient, GET_ALL_DATA, idCell, idGroup, &Properties, &dummy);
243          }
244       }
245    RpcExcept(1)
246       {
247       rc = FALSE;
248       status = RPC_S_CALL_FAILED_DNE;
249       }
250    RpcEndExcept
251
252    if (!rc && pStatus)
253       *pStatus = status;
254    return rc;
255 }
256