]> arthur.barton.de Git - netatalk.git/blob - etc/afpd/acl_mappings.h
Symlink patch from Anton Starikov
[netatalk.git] / etc / afpd / acl_mappings.h
1 /*
2    $Id: acl_mappings.h,v 1.1 2009-02-02 11:55:00 franklahm Exp $
3    Copyright (c) 2008,2009 Frank Lahm <franklahm@gmail.com>
4
5    This program is free software; you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation; either version 2 of the License, or
8    (at your option) any later version.
9  
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU General Public License for more details.
14  */
15
16 #ifndef ACL_MAPPINGS
17 #define ACL_MAPPINGS
18
19 #include <sys/acl.h>
20 #include "acls.h"
21
22 /* 
23  * Stuff for mapping between ACL implementations
24  */
25
26 struct ace_rights_map {
27     u_int32_t from;
28     u_int32_t to;
29 };
30
31 struct ace_rights_map nfsv4_to_darwin_rights[] = {
32     {ACE_READ_DATA,         DARWIN_ACE_READ_DATA},
33     {ACE_WRITE_DATA,        DARWIN_ACE_WRITE_DATA},
34     {ACE_APPEND_DATA,       DARWIN_ACE_APPEND_DATA},
35     {ACE_READ_NAMED_ATTRS,  DARWIN_ACE_READ_EXTATTRIBUTES},
36     {ACE_WRITE_NAMED_ATTRS, DARWIN_ACE_WRITE_EXTATTRIBUTES},
37     {ACE_EXECUTE,           DARWIN_ACE_EXECUTE},
38     {ACE_DELETE_CHILD,      DARWIN_ACE_DELETE_CHILD},
39     {ACE_READ_ATTRIBUTES,   DARWIN_ACE_READ_ATTRIBUTES},
40     {ACE_WRITE_ATTRIBUTES,  DARWIN_ACE_WRITE_ATTRIBUTES},
41     {ACE_DELETE,            DARWIN_ACE_DELETE},
42     {ACE_READ_ACL,          DARWIN_ACE_READ_SECURITY},
43     {ACE_WRITE_ACL,         DARWIN_ACE_WRITE_SECURITY},
44     {ACE_WRITE_OWNER,       DARWIN_ACE_TAKE_OWNERSHIP},
45     {0,0}
46 };
47
48 struct ace_rights_map darwin_to_nfsv4_rights[] = {
49     {DARWIN_ACE_READ_DATA,           ACE_READ_DATA},
50     {DARWIN_ACE_WRITE_DATA,          ACE_WRITE_DATA},
51     {DARWIN_ACE_APPEND_DATA,         ACE_APPEND_DATA},
52     {DARWIN_ACE_READ_EXTATTRIBUTES,  ACE_READ_NAMED_ATTRS},
53     {DARWIN_ACE_WRITE_EXTATTRIBUTES, ACE_WRITE_NAMED_ATTRS},
54     {DARWIN_ACE_EXECUTE,             ACE_EXECUTE},
55     {DARWIN_ACE_DELETE_CHILD,        ACE_DELETE_CHILD},
56     {DARWIN_ACE_READ_ATTRIBUTES,     ACE_READ_ATTRIBUTES},
57     {DARWIN_ACE_WRITE_ATTRIBUTES,    ACE_WRITE_ATTRIBUTES},
58     {DARWIN_ACE_DELETE,              ACE_DELETE},
59     {DARWIN_ACE_READ_SECURITY,       ACE_READ_ACL},
60     {DARWIN_ACE_WRITE_SECURITY,      ACE_WRITE_ACL},
61     {DARWIN_ACE_TAKE_OWNERSHIP,      ACE_WRITE_OWNER},
62     {0,0}
63 };
64
65 struct nfsv4_to_darwin_flags_map {
66     u_int16_t from;
67     u_int32_t to;
68 };
69
70 struct nfsv4_to_darwin_flags_map nfsv4_to_darwin_flags[] = {
71     {ACE_FILE_INHERIT_ACE,         DARWIN_ACE_FLAGS_FILE_INHERIT},
72     {ACE_DIRECTORY_INHERIT_ACE,    DARWIN_ACE_FLAGS_DIRECTORY_INHERIT},
73     {ACE_NO_PROPAGATE_INHERIT_ACE, DARWIN_ACE_FLAGS_LIMIT_INHERIT},
74     {ACE_INHERIT_ONLY_ACE,         DARWIN_ACE_FLAGS_ONLY_INHERIT},
75     {ACE_INHERITED_ACE,            DARWIN_ACE_FLAGS_INHERITED},
76     {0,0}
77 };
78
79 struct darwin_to_nfsv4_flags_map {
80     u_int32_t from;
81     u_int16_t to;
82 };
83
84 struct darwin_to_nfsv4_flags_map darwin_to_nfsv4_flags[] = {
85     {DARWIN_ACE_FLAGS_FILE_INHERIT,      ACE_FILE_INHERIT_ACE},
86     {DARWIN_ACE_FLAGS_DIRECTORY_INHERIT, ACE_DIRECTORY_INHERIT_ACE},
87     {DARWIN_ACE_FLAGS_LIMIT_INHERIT,     ACE_NO_PROPAGATE_INHERIT_ACE},
88     {DARWIN_ACE_FLAGS_ONLY_INHERIT,      ACE_INHERIT_ONLY_ACE},
89     {DARWIN_ACE_FLAGS_INHERITED,         ACE_INHERITED_ACE},
90     {0,0}
91 };
92
93 #endif  /* ACL_MAPPINGS */