s4: security.idl: split of dom_sid stuff into dom_sid.idl
[kai/samba.git] / source4 / librpc / idl / dom_sid.idl
1 /*
2    use the same structure for dom_sid2 as dom_sid. A dom_sid2 is really
3    just a dom sid, but with the sub_auths represented as a conformant
4    array. As with all in-structure conformant arrays, the array length
5    is placed before the start of the structure. That's what gives rise
6    to the extra num_auths elemenent. We don't want the Samba code to
7    have to bother with such esoteric NDR details, so its easier to just
8    define it as a dom_sid and use pidl magic to make it all work. It
9    just means you need to mark a sid as a "dom_sid2" in the IDL when you
10    know it is of the conformant array variety
11 */
12 cpp_quote("#define dom_sid2 dom_sid")
13
14 /* same struct as dom_sid but inside a 28 bytes fixed buffer in NDR */
15 cpp_quote("#define dom_sid28 dom_sid")
16
17 /* same struct as dom_sid but in a variable byte buffer, which is maybe empty in NDR */
18 cpp_quote("#define dom_sid0 dom_sid")
19
20 [
21         pointer_default(unique)
22 ]
23 interface dom_sid
24 {
25         /* a domain SID. Note that unlike Samba3 this contains a pointer,
26            so you can't copy them using assignment */
27         typedef [public,gensize,noprint,noejs,nosize] struct {
28                 uint8  sid_rev_num;             /**< SID revision number */
29                 [range(0,15)] int8  num_auths;  /**< Number of sub-authorities */
30                 uint8  id_auth[6];              /**< Identifier Authority */
31                 uint32 sub_auths[num_auths];
32         } dom_sid;
33 }
34