added samr_LookupNames() and test code
[samba.git] / source4 / librpc / ndr / ndr_misc.c
1 /* parser auto-generated by pidl */
2
3 #include "includes.h"
4
5 NTSTATUS ndr_push_dom_sid(struct ndr_push *ndr, int ndr_flags, struct dom_sid *r)
6 {
7         if (!(ndr_flags & NDR_SCALARS)) goto buffers;
8         NDR_CHECK(ndr_push_struct_start(ndr));
9         NDR_CHECK(ndr_push_align(ndr, 4));
10         NDR_CHECK(ndr_push_uint8(ndr, r->sid_rev_num));
11         NDR_CHECK(ndr_push_uint8(ndr, r->num_auths));
12                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->id_auth, 6));
13                 NDR_CHECK(ndr_push_array_uint32(ndr, NDR_SCALARS, r->sub_auths, r->num_auths));
14         ndr_push_struct_end(ndr);
15 buffers:
16         if (!(ndr_flags & NDR_BUFFERS)) goto done;
17                 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_BUFFERS, r->id_auth, 6));
18                 NDR_CHECK(ndr_push_array_uint32(ndr, NDR_BUFFERS, r->sub_auths, r->num_auths));
19 done:
20         return NT_STATUS_OK;
21 }
22
23 NTSTATUS ndr_push_security_ace(struct ndr_push *ndr, int ndr_flags, struct security_ace *r)
24 {
25         if (!(ndr_flags & NDR_SCALARS)) goto buffers;
26         NDR_CHECK(ndr_push_struct_start(ndr));
27         NDR_CHECK(ndr_push_align(ndr, 4));
28         NDR_CHECK(ndr_push_uint8(ndr, r->type));
29         NDR_CHECK(ndr_push_uint8(ndr, r->flags));
30         NDR_CHECK(ndr_push_uint32(ndr, r->access_mask));
31         NDR_CHECK(ndr_push_dom_sid(ndr, NDR_SCALARS, &r->trustee));
32         ndr_push_struct_end(ndr);
33 buffers:
34         if (!(ndr_flags & NDR_BUFFERS)) goto done;
35                 NDR_CHECK(ndr_push_dom_sid(ndr, NDR_BUFFERS, &r->trustee));
36 done:
37         return NT_STATUS_OK;
38 }
39
40 NTSTATUS ndr_push_security_acl(struct ndr_push *ndr, int ndr_flags, struct security_acl *r)
41 {
42         if (!(ndr_flags & NDR_SCALARS)) goto buffers;
43         NDR_CHECK(ndr_push_struct_start(ndr));
44         NDR_CHECK(ndr_push_align(ndr, 4));
45         NDR_CHECK(ndr_push_uint16(ndr, r->revision));
46         NDR_CHECK(ndr_push_uint32(ndr, r->num_aces));
47                 NDR_CHECK(ndr_push_array(ndr, NDR_SCALARS, r->aces, sizeof(r->aces[0]), r->num_aces, (ndr_push_flags_fn_t)ndr_push_security_ace));
48         ndr_push_struct_end(ndr);
49 buffers:
50         if (!(ndr_flags & NDR_BUFFERS)) goto done;
51                 NDR_CHECK(ndr_push_array(ndr, NDR_BUFFERS, r->aces, sizeof(r->aces[0]), r->num_aces, (ndr_push_flags_fn_t)ndr_push_security_ace));
52 done:
53         return NT_STATUS_OK;
54 }
55
56 NTSTATUS ndr_push_security_descriptor(struct ndr_push *ndr, int ndr_flags, struct security_descriptor *r)
57 {
58         if (!(ndr_flags & NDR_SCALARS)) goto buffers;
59         NDR_CHECK(ndr_push_struct_start(ndr));
60         NDR_CHECK(ndr_push_align(ndr, 4));
61         NDR_CHECK(ndr_push_uint8(ndr, r->revision));
62         NDR_CHECK(ndr_push_uint16(ndr, r->type));
63         NDR_CHECK(ndr_push_relative(ndr, NDR_SCALARS, r->owner_sid, (ndr_push_const_fn_t) ndr_push_dom_sid));
64         NDR_CHECK(ndr_push_relative(ndr, NDR_SCALARS, r->group_sid, (ndr_push_const_fn_t) ndr_push_dom_sid));
65         NDR_CHECK(ndr_push_relative(ndr, NDR_SCALARS, r->sacl, (ndr_push_const_fn_t) ndr_push_security_acl));
66         NDR_CHECK(ndr_push_relative(ndr, NDR_SCALARS, r->dacl, (ndr_push_const_fn_t) ndr_push_security_acl));
67         ndr_push_struct_end(ndr);
68 buffers:
69         if (!(ndr_flags & NDR_BUFFERS)) goto done;
70         if (r->owner_sid) {
71         NDR_CHECK(ndr_push_relative(ndr, NDR_BUFFERS, r->owner_sid, (ndr_push_const_fn_t) ndr_push_dom_sid));
72         }
73         if (r->group_sid) {
74         NDR_CHECK(ndr_push_relative(ndr, NDR_BUFFERS, r->group_sid, (ndr_push_const_fn_t) ndr_push_dom_sid));
75         }
76         if (r->sacl) {
77         NDR_CHECK(ndr_push_relative(ndr, NDR_BUFFERS, r->sacl, (ndr_push_const_fn_t) ndr_push_security_acl));
78         }
79         if (r->dacl) {
80         NDR_CHECK(ndr_push_relative(ndr, NDR_BUFFERS, r->dacl, (ndr_push_const_fn_t) ndr_push_security_acl));
81         }
82 done:
83         return NT_STATUS_OK;
84 }
85
86 NTSTATUS ndr_pull_dom_sid(struct ndr_pull *ndr, int ndr_flags, struct dom_sid *r)
87 {
88         NDR_CHECK(ndr_pull_struct_start(ndr));
89         if (!(ndr_flags & NDR_SCALARS)) goto buffers;
90         NDR_CHECK(ndr_pull_align(ndr, 4));
91         NDR_CHECK(ndr_pull_uint8(ndr, &r->sid_rev_num));
92         NDR_CHECK(ndr_pull_uint8(ndr, &r->num_auths));
93                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->id_auth, 6));
94                 NDR_ALLOC_N_SIZE(ndr, r->sub_auths, r->num_auths, sizeof(r->sub_auths[0]));
95                 NDR_CHECK(ndr_pull_array_uint32(ndr, NDR_SCALARS, r->sub_auths, r->num_auths));
96         ndr_pull_struct_end(ndr);
97 buffers:
98         if (!(ndr_flags & NDR_BUFFERS)) goto done;
99                 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_BUFFERS, r->id_auth, 6));
100                 NDR_CHECK(ndr_pull_array_uint32(ndr, NDR_BUFFERS, r->sub_auths, r->num_auths));
101 done:
102         return NT_STATUS_OK;
103 }
104
105 NTSTATUS ndr_pull_security_ace(struct ndr_pull *ndr, int ndr_flags, struct security_ace *r)
106 {
107         NDR_CHECK(ndr_pull_struct_start(ndr));
108         if (!(ndr_flags & NDR_SCALARS)) goto buffers;
109         NDR_CHECK(ndr_pull_align(ndr, 4));
110         NDR_CHECK(ndr_pull_uint8(ndr, &r->type));
111         NDR_CHECK(ndr_pull_uint8(ndr, &r->flags));
112         NDR_CHECK(ndr_pull_uint32(ndr, &r->access_mask));
113         NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_SCALARS, &r->trustee));
114         ndr_pull_struct_end(ndr);
115 buffers:
116         if (!(ndr_flags & NDR_BUFFERS)) goto done;
117                 NDR_CHECK(ndr_pull_dom_sid(ndr, NDR_BUFFERS, &r->trustee));
118 done:
119         return NT_STATUS_OK;
120 }
121
122 NTSTATUS ndr_pull_security_acl(struct ndr_pull *ndr, int ndr_flags, struct security_acl *r)
123 {
124         NDR_CHECK(ndr_pull_struct_start(ndr));
125         if (!(ndr_flags & NDR_SCALARS)) goto buffers;
126         NDR_CHECK(ndr_pull_align(ndr, 4));
127         NDR_CHECK(ndr_pull_uint16(ndr, &r->revision));
128         NDR_CHECK(ndr_pull_uint32(ndr, &r->num_aces));
129                 NDR_ALLOC_N_SIZE(ndr, r->aces, r->num_aces, sizeof(r->aces[0]));
130                 NDR_CHECK(ndr_pull_array(ndr, NDR_SCALARS, (void **)r->aces, sizeof(r->aces[0]), r->num_aces, (ndr_pull_flags_fn_t)ndr_pull_security_ace));
131         ndr_pull_struct_end(ndr);
132 buffers:
133         if (!(ndr_flags & NDR_BUFFERS)) goto done;
134                 NDR_CHECK(ndr_pull_array(ndr, NDR_BUFFERS, (void **)r->aces, sizeof(r->aces[0]), r->num_aces, (ndr_pull_flags_fn_t)ndr_pull_security_ace));
135 done:
136         return NT_STATUS_OK;
137 }
138
139 NTSTATUS ndr_pull_security_descriptor(struct ndr_pull *ndr, int ndr_flags, struct security_descriptor *r)
140 {
141         NDR_CHECK(ndr_pull_struct_start(ndr));
142         if (!(ndr_flags & NDR_SCALARS)) goto buffers;
143         NDR_CHECK(ndr_pull_align(ndr, 4));
144         NDR_CHECK(ndr_pull_uint8(ndr, &r->revision));
145         NDR_CHECK(ndr_pull_uint16(ndr, &r->type));
146         NDR_CHECK(ndr_pull_relative(ndr, (const void **)&r->owner_sid, sizeof(*r->owner_sid), (ndr_pull_flags_fn_t)ndr_pull_dom_sid));
147         NDR_CHECK(ndr_pull_relative(ndr, (const void **)&r->group_sid, sizeof(*r->group_sid), (ndr_pull_flags_fn_t)ndr_pull_dom_sid));
148         NDR_CHECK(ndr_pull_relative(ndr, (const void **)&r->sacl, sizeof(*r->sacl), (ndr_pull_flags_fn_t)ndr_pull_security_acl));
149         NDR_CHECK(ndr_pull_relative(ndr, (const void **)&r->dacl, sizeof(*r->dacl), (ndr_pull_flags_fn_t)ndr_pull_security_acl));
150         ndr_pull_struct_end(ndr);
151 buffers:
152         if (!(ndr_flags & NDR_BUFFERS)) goto done;
153 done:
154         return NT_STATUS_OK;
155 }
156
157 void ndr_print_security_ace(struct ndr_print *ndr, const char *name, struct security_ace *r)
158 {
159         ndr_print_struct(ndr, name, "security_ace");
160         ndr->depth++;
161         ndr_print_uint8(ndr, "type", r->type);
162         ndr_print_uint8(ndr, "flags", r->flags);
163         ndr_print_uint32(ndr, "access_mask", r->access_mask);
164         ndr_print_dom_sid(ndr, "trustee", &r->trustee);
165         ndr->depth--;
166 }
167
168 void ndr_print_security_acl(struct ndr_print *ndr, const char *name, struct security_acl *r)
169 {
170         ndr_print_struct(ndr, name, "security_acl");
171         ndr->depth++;
172         ndr_print_uint16(ndr, "revision", r->revision);
173         ndr_print_uint32(ndr, "num_aces", r->num_aces);
174         ndr_print_ptr(ndr, "aces", r->aces);
175         ndr->depth++;
176                 ndr_print_array(ndr, "aces", r->aces, sizeof(r->aces[0]), r->num_aces, (ndr_print_fn_t)ndr_print_security_ace);
177         ndr->depth--;
178         ndr->depth--;
179 }
180
181 void ndr_print_security_descriptor(struct ndr_print *ndr, const char *name, struct security_descriptor *r)
182 {
183         ndr_print_struct(ndr, name, "security_descriptor");
184         ndr->depth++;
185         ndr_print_uint8(ndr, "revision", r->revision);
186         ndr_print_uint16(ndr, "type", r->type);
187         ndr_print_ptr(ndr, "owner_sid", r->owner_sid);
188         ndr->depth++;
189         if (r->owner_sid) {
190                 ndr_print_dom_sid(ndr, "owner_sid", r->owner_sid);
191         }
192         ndr->depth--;
193         ndr_print_ptr(ndr, "group_sid", r->group_sid);
194         ndr->depth++;
195         if (r->group_sid) {
196                 ndr_print_dom_sid(ndr, "group_sid", r->group_sid);
197         }
198         ndr->depth--;
199         ndr_print_ptr(ndr, "sacl", r->sacl);
200         ndr->depth++;
201         if (r->sacl) {
202                 ndr_print_security_acl(ndr, "sacl", r->sacl);
203         }
204         ndr->depth--;
205         ndr_print_ptr(ndr, "dacl", r->dacl);
206         ndr->depth++;
207         if (r->dacl) {
208                 ndr_print_security_acl(ndr, "dacl", r->dacl);
209         }
210         ndr->depth--;
211         ndr->depth--;
212 }
213