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
12 cpp_quote("#define dom_sid2 dom_sid")
14 /* same struct as dom_sid but inside a 28 bytes fixed buffer in NDR */
15 cpp_quote("#define dom_sid28 dom_sid")
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")
21 pointer_default(unique)
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];