nfsace4
xdr_nfsace4(register XDR *xdrs, nfsace4 *objp)
sizeof (nfsace4), (xdrproc_t)xdr_nfsace4))
ace4_to_aent_legal(nfsace4 *ace4p, int isserver)
ln_ace4_to_aent(nfsace4 *ace4, int n,
nfsace4 *ace4p;
ace4_cmp(nfsace4 *a, nfsace4 *b)
ln_ace4_cmp(nfsace4 *a, nfsace4* b, int n)
acet_to_ace4(ace_t *ace, nfsace4 *nfsace4, int isserver)
if (nfsace4 == NULL) {
nfsace4->type = ACE4_ACCESS_ALLOWED_ACE_TYPE;
nfsace4->type = ACE4_ACCESS_DENIED_ACE_TYPE;
acet_mask_to_ace4_mask(ace->a_access_mask, &nfsace4->access_mask);
acet_flags_to_ace4_flags(ace->a_flags, &nfsace4->flag);
nfsace4->flag |= ACE4_IDENTIFIER_GROUP;
(void) str_to_utf8(ACE4_WHO_GROUP, &nfsace4->who);
nfsace4->flag |= ACE4_IDENTIFIER_GROUP;
error = nfs_idmap_gid_str(ace->a_who, &nfsace4->who, isserver);
(void) str_to_utf8(ACE4_WHO_OWNER, &nfsace4->who);
(void) str_to_utf8(ACE4_WHO_EVERYONE, &nfsace4->who);
error = nfs_idmap_uid_str(ace->a_who, &nfsace4->who, isserver);
ace4_to_acet(nfsace4 *nfsace4, ace_t *ace, uid_t owner, gid_t group,
if (nfsace4 == NULL) {
switch (nfsace4->type) {
"ace4_to_acet: unsupported type: %x", nfsace4->type));
if (nfsace4->flag & ~(ACE4_VALID_FLAG_BITS)) {
"ace4_to_acet: invalid flags: %x", nfsace4->flag));
if (nfsace4->access_mask & ~(ACE4_VALID_MASK_BITS)) {
"ace4_to_acet: invalid mask: %x", nfsace4->access_mask));
ace4_mask_to_acet_mask(nfsace4->access_mask, &ace->a_access_mask);
if (nfsace4->flag & ~ACE_NFSV4_SUP_FLAGS) {
"ace4_to_acet: unsupported flags: %x", nfsace4->flag));
ace4_flags_to_acet_flags(nfsace4->flag, &ace->a_flags);
if ((nfsace4->who.utf8string_len == 6) &&
nfsace4->who.utf8string_val, 6)) == 0) {
} else if ((nfsace4->who.utf8string_len == 6) &&
nfsace4->who.utf8string_val, 6) == 0)) {
} else if ((nfsace4->who.utf8string_len == 9) &&
nfsace4->who.utf8string_val, 9) == 0)) {
} else if (nfsace4->flag & ACE4_IDENTIFIER_GROUP) {
error = nfs_idmap_str_gid(&nfsace4->who,
error = validate_idmapping(&nfsace4->who,
error = nfs_idmap_str_uid(&nfsace4->who,
error = validate_idmapping(&nfsace4->who,
error = ace4_to_acet((nfsace4 *)(vs_ace4->vsa_aclentp) + i,
sizeof (nfsace4), KM_SLEEP);
(nfsace4 *)(vs_ace4->vsa_aclentp) + i, isserver);
nfsace4 *tmp_ace4, *ace4;
ace4 = (nfsace4 *) rvsap->vsa_aclentp;
aclsize = vsap->vsa_aclcnt * sizeof (nfsace4);
tmp_ace4 = (nfsace4 *) vsap->vsa_aclentp;
ace4 = (nfsace4 *) rvsap->vsa_aclentp;
nfsace4 *ace4;
ace4 = (nfsace4 *)vsp->vsa_aclentp + i;
vsp->vsa_aclcnt * sizeof (nfsace4));
ace4_make_deny(nfsace4 *allow, nfsace4 *deny, int isdir, int isowner,
bcopy(allow, deny, sizeof (nfsace4));
ln_aent_to_ace4(aclent_t *aclent, int n, nfsace4 **acepp, int *rescount,
nfsace4 *acep, *result = NULL;
result = acep = kmem_zalloc(resultsize * sizeof (nfsace4), KM_SLEEP);
static void ace4_make_deny(nfsace4 *, nfsace4 *, int, int, int);
static int ln_aent_to_ace4(aclent_t *, int, nfsace4 **, int *, int, int);
static ace4vals_t *ace4vals_find(nfsace4 *, avl_tree_t *, int *);
static int ace4_to_aent_legal(nfsace4 *, int);
static int ln_ace4_to_aent(nfsace4 *ace4, int n, uid_t, gid_t,
static int ace4_cmp(nfsace4 *, nfsace4 *);
kmem_free(result, resultsize * sizeof (nfsace4));
static int acet_to_ace4(ace_t *, nfsace4 *, int);
nfsace4 *acebuf = NULL;
static int ace4_to_acet(nfsace4 *, ace_t *, uid_t, gid_t, int);
nfsace4 *dfacebuf = NULL;
sizeof (nfsace4), KM_SLEEP);
bcopy(acebuf, vs_ace4->vsa_aclentp, acecnt * sizeof (nfsace4));
bcopy(dfacebuf, (nfsace4 *) vs_ace4->vsa_aclentp + acecnt,
dfacecnt * sizeof (nfsace4));
kmem_free(acebuf, acecnt * sizeof (nfsace4));
kmem_free(dfacebuf, dfacecnt * sizeof (nfsace4));
static int access_mask_check(nfsace4 *, int, int, int);
ace4vals_find(nfsace4 *ace4, avl_tree_t *avl, int *num)
access_mask_check(nfsace4 *ace4p, int mask_bit, int isserver, int isowner)
nfsace4 *tmpacl = (nfsace4 *)vsap->vsa_aclentp;
nfsace4 *ace;
nfsace4 *ace, int recall)
nfsace4 nace;
nfsace4 *sacep, *dacep;
nfsace4 *acep;
xdr_nfsace4(XDR *xdrs, nfsace4 *objp)
sizeof (nfsace4), (xdrproc_t)xdr_nfsace4));
(uint_t *)&objp->na41_aces.na41_aces_len, ~0, sizeof (nfsace4),
open_delegation4 *, nfsace4 *, int);
extern int ln_ace4_cmp(nfsace4 *, nfsace4 *, int);
nfsace4 permissions;
nfsace4 permissions;
extern bool_t xdr_nfsace4(XDR *, nfsace4*);
typedef struct nfsace4 nfsace4;
nfsace4 *na41_aces_val;
nfsace4 *fattr4_acl_val;
nfsace4 r_deleg_perms; /* file permissions returned from */