viced avoid global pruclient during acl ops
authorDerrick Brashear <shadow@dementia.org>
Mon, 15 Feb 2010 21:12:44 +0000 (16:12 -0500)
committerDerrick Brashear <shadow@dementia.org>
Wed, 24 Feb 2010 06:15:48 +0000 (22:15 -0800)
acl_Internalize and acl_Externalize used the global pruclient

use the ones we use elsewhere in viced FetchAcl/StoreAcl also

Change-Id: Ia2b8d29035ed48a6aab8c9df243c9082bfacd201
Reviewed-on: http://gerrit.openafs.org/1314
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

src/libacl/acl.h
src/libacl/aclprocs.c
src/viced/afsfileprocs.c
src/viced/host.h

index d3af5a8..b591c6f 100644 (file)
@@ -16,6 +16,7 @@
 #define _ACL_
 
 
+#include "afs/ptint.h"
 
 #define ACL_VERSION "Version 1"
 
@@ -70,6 +71,8 @@ extern int acl_NewExternalACL(int nEntries, char **r);
 extern int acl_FreeExternalACL(char **r);
 extern int acl_Externalize(struct acl_accessList *acl, char **elist);
 extern int acl_Internalize(char *elist, struct acl_accessList **acl);
+extern int acl_Externalize_pr(int (*func)(idlist *ids, namelist *names), struct acl_accessList *acl, char **elist);
+extern int acl_Internalize_pr(int (*func)(namelist *names, idlist *ids), char *elist, struct acl_accessList **acl);
 extern int acl_Initialize(char *version);
 #ifdef _RXGEN_PTINT_
 extern int acl_CheckRights(struct acl_accessList *acl, prlist *groups, int *rights);
index d4041af..e2dbd3b 100644 (file)
@@ -168,9 +168,8 @@ acl_FreeExternalACL(char **r)
     return (AddToList(&freeList, x));
 }
 
-
 int
-acl_Externalize(struct acl_accessList *acl, char **elist)
+acl_Externalize_pr(int (*func)(idlist *ids, namelist *names), struct acl_accessList *acl, char **elist)
 {
     /* Converts the access list defined by acl into the external access list 
      * in elist.  Non-translatable id's are converted to their ASCII string 
@@ -202,7 +201,7 @@ acl_Externalize(struct acl_accessList *acl, char **elist)
     j = i;
     for (i = acl->total - 1; i >= acl->total - acl->negative; i--, j++)
        lids.idlist_val[j] = acl->entries[i].id;
-    code = pr_IdToName(&lids, &lnames);
+    code = (*func)(&lids, &lnames);
     if (code != 0) {
        if (lids.idlist_val)
            free(lids.idlist_val);
@@ -230,9 +229,14 @@ acl_Externalize(struct acl_accessList *acl, char **elist)
     return (0);
 }
 
+int
+acl_Externalize(struct acl_accessList *acl, char **elist)
+{
+    return acl_Externalize_pr(pr_IdToName, acl, elist);
+}
 
 int
-acl_Internalize(char *elist, struct acl_accessList **acl)
+acl_Internalize_pr(int (*func)(namelist *names, idlist *ids), char *elist, struct acl_accessList **acl)
 {
     /* Converts the external access list elist into the access list acl.  
      * Returns 0 on success, -1 if ANY name is not translatable, or if 
@@ -295,7 +299,7 @@ acl_Internalize(char *elist, struct acl_accessList **acl)
     lids.idlist_len = 0;
     lids.idlist_val = 0;
 
-    code = pr_NameToId(&lnames, &lids);
+    code = (*func)(&lnames, &lids);
     if (code) {
        free(lnames.namelist_val);
        if (lids.idlist_val)
@@ -332,6 +336,11 @@ acl_Internalize(char *elist, struct acl_accessList **acl)
     return (0);
 }
 
+int
+acl_Internalize(char *elist, struct acl_accessList **acl)
+{
+    return acl_Internalize_pr(pr_NameToId, elist, acl);
+}
 
 int
 acl_CheckRights(struct acl_accessList *acl, prlist *groups, int *rights)
index 00cd17b..b15372d 100644 (file)
@@ -1055,8 +1055,8 @@ RXFetch_AccessList(Vnode * targetptr, Vnode * parentwhentargetnotdir,
 {
     char *eACL;                        /* External access list placeholder */
 
-    if (acl_Externalize
-       ((targetptr->disk.type ==
+    if (acl_Externalize_pr
+       (hpr_IdToName, (targetptr->disk.type ==
          vDirectory ? VVnodeACL(targetptr) :
          VVnodeACL(parentwhentargetnotdir)), &eACL) != 0) {
        return EIO;
@@ -1084,7 +1084,8 @@ RXStore_AccessList(Vnode * targetptr, struct AFSOpaque *AccessList)
 {
     struct acl_accessList *newACL;     /* PlaceHolder for new access list */
 
-    if (acl_Internalize(AccessList->AFSOpaque_val, &newACL) != 0)
+    if (acl_Internalize_pr(hpr_NameToId, AccessList->AFSOpaque_val, &newACL)
+       != 0)
        return (EINVAL);
     if ((newACL->size + 4) > VAclSize(targetptr))
        return (E2BIG);
index 44e1e14..73e5dd4 100644 (file)
@@ -252,7 +252,8 @@ extern int addInterfaceAddr_r(struct host *host, afs_uint32 addr, afs_uint16 por
 extern int removeInterfaceAddr_r(struct host *host, afs_uint32 addr, afs_uint16 port);
 extern afs_int32 hpr_Initialize(struct ubik_client **);
 extern int hpr_End(struct ubik_client *);
-
+extern int hpr_IdToName(idlist *ids, namelist *names);
+extern int hpr_NameToId(namelist *names, idlist *ids);
 
 #ifdef AFS_DEMAND_ATTACH_FS
 /*