Fix bug #7146 - Samba miss-parses authenticated RPC packets.
[abartlet/samba.git/.git] / librpc / gen_ndr / dcerpc.h
1 /* header auto-generated by pidl */
2
3 #include <stdint.h>
4
5 #include "libcli/util/ntstatus.h"
6
7 #include "librpc/gen_ndr/misc.h"
8 #ifndef _HEADER_dcerpc
9 #define _HEADER_dcerpc
10
11 #define DCERPC_REQUEST_LENGTH   ( 24 )
12 #define DCERPC_BIND_REASON_ASYNTAX      ( 1 )
13 #define DCERPC_BIND_PROVIDER_REJECT     ( 2 )
14 #define DECRPC_BIND_PROTOCOL_VERSION_NOT_SUPPORTED      ( 4 )
15 #define DCERPC_BIND_REASON_INVALID_AUTH_TYPE    ( 8 )
16 #define DCERPC_RESPONSE_LENGTH  ( 24 )
17 #define DCERPC_FAULT_OP_RNG_ERROR       ( 0x1c010002 )
18 #define DCERPC_FAULT_UNK_IF     ( 0x1c010003 )
19 #define DCERPC_FAULT_NDR        ( 0x000006f7 )
20 #define DCERPC_FAULT_INVALID_TAG        ( 0x1c000006 )
21 #define DCERPC_FAULT_CONTEXT_MISMATCH   ( 0x1c00001a )
22 #define DCERPC_FAULT_OTHER      ( 0x00000001 )
23 #define DCERPC_FAULT_ACCESS_DENIED      ( 0x00000005 )
24 #define DCERPC_FAULT_CANT_PERFORM       ( 0x000006d8 )
25 #define DCERPC_FAULT_TODO       ( 0x00000042 )
26 #define DCERPC_AUTH_LEVEL_DEFAULT       ( DCERPC_AUTH_LEVEL_CONNECT )
27 #define DCERPC_AUTH_TRAILER_LENGTH      ( 8 )
28 #define DCERPC_PFC_FLAG_FIRST   ( 0x01 )
29 #define DCERPC_PFC_FLAG_LAST    ( 0x02 )
30 #define DCERPC_PFC_FLAG_PENDING_CANCEL  ( 0x04 )
31 #define DCERPC_PFC_FLAG_SUPPORT_HEADER_SIGN     ( DCERPC_PFC_FLAG_PENDING_CANCEL )
32 #define DCERPC_PFC_FLAG_CONC_MPX        ( 0x10 )
33 #define DCERPC_PFC_FLAG_DID_NOT_EXECUTE ( 0x20 )
34 #define DCERPC_PFC_FLAG_MAYBE   ( 0x40 )
35 #define DCERPC_PFC_FLAG_OBJECT_UUID     ( 0x80 )
36 #define DCERPC_PFC_OFFSET       ( 3 )
37 #define DCERPC_DREP_OFFSET      ( 4 )
38 #define DCERPC_FRAG_LEN_OFFSET  ( 8 )
39 #define DCERPC_AUTH_LEN_OFFSET  ( 10 )
40 #define DCERPC_DREP_LE  ( 0x10 )
41 struct dcerpc_ctx_list {
42         uint16_t context_id;
43         uint8_t num_transfer_syntaxes;
44         struct ndr_syntax_id abstract_syntax;
45         struct ndr_syntax_id *transfer_syntaxes;
46 };
47
48 struct dcerpc_bind {
49         uint16_t max_xmit_frag;
50         uint16_t max_recv_frag;
51         uint32_t assoc_group_id;
52         uint8_t num_contexts;
53         struct dcerpc_ctx_list *ctx_list;
54         DATA_BLOB auth_info;/* [flag(LIBNDR_FLAG_REMAINING)] */
55 };
56
57 struct dcerpc_empty {
58         char _empty_;
59 };
60
61 union dcerpc_object {
62         struct dcerpc_empty empty;/* [default] */
63         struct GUID object;/* [case(LIBNDR_FLAG_OBJECT_PRESENT)] */
64 }/* [nodiscriminant] */;
65
66 struct dcerpc_request {
67         uint32_t alloc_hint;
68         uint16_t context_id;
69         uint16_t opnum;
70         union dcerpc_object object;/* [switch_is(ndr->flags&LIBNDR_FLAG_OBJECT_PRESENT)] */
71         DATA_BLOB _pad;/* [flag(LIBNDR_FLAG_ALIGN8)] */
72         DATA_BLOB stub_and_verifier;/* [flag(LIBNDR_FLAG_REMAINING)] */
73 };
74
75 struct dcerpc_ack_ctx {
76         uint16_t result;
77         uint16_t reason;
78         struct ndr_syntax_id syntax;
79 };
80
81 struct dcerpc_bind_ack {
82         uint16_t max_xmit_frag;
83         uint16_t max_recv_frag;
84         uint32_t assoc_group_id;
85         uint16_t secondary_address_size;/* [value(strlen(secondary_address)+1)] */
86         const char *secondary_address;/* [charset(DOS)] */
87         DATA_BLOB _pad1;/* [flag(LIBNDR_FLAG_ALIGN4)] */
88         uint8_t num_results;
89         struct dcerpc_ack_ctx *ctx_list;
90         DATA_BLOB auth_info;/* [flag(LIBNDR_FLAG_REMAINING)] */
91 };
92
93 struct dcerpc_bind_nak_versions {
94         uint32_t num_versions;
95         uint32_t *versions;
96 };
97
98 union dcerpc_bind_nak_versions_ctr {
99         struct dcerpc_bind_nak_versions v;/* [case(DECRPC_BIND_PROTOCOL_VERSION_NOT_SUPPORTED)] */
100 }/* [nodiscriminant] */;
101
102 struct dcerpc_bind_nak {
103         uint16_t reject_reason;
104         union dcerpc_bind_nak_versions_ctr versions;/* [switch_is(reject_reason)] */
105 };
106
107 struct dcerpc_response {
108         uint32_t alloc_hint;
109         uint16_t context_id;
110         uint8_t cancel_count;
111         DATA_BLOB _pad;/* [flag(LIBNDR_FLAG_ALIGN8)] */
112         DATA_BLOB stub_and_verifier;/* [flag(LIBNDR_FLAG_REMAINING)] */
113 };
114
115 struct dcerpc_fault {
116         uint32_t alloc_hint;
117         uint16_t context_id;
118         uint8_t cancel_count;
119         uint32_t status;
120         DATA_BLOB _pad;/* [flag(LIBNDR_FLAG_REMAINING)] */
121 };
122
123 enum dcerpc_AuthType
124 #ifndef USE_UINT_ENUMS
125  {
126         DCERPC_AUTH_TYPE_NONE=(int)(0),
127         DCERPC_AUTH_TYPE_KRB5_1=(int)(1),
128         DCERPC_AUTH_TYPE_SPNEGO=(int)(9),
129         DCERPC_AUTH_TYPE_NTLMSSP=(int)(10),
130         DCERPC_AUTH_TYPE_KRB5=(int)(16),
131         DCERPC_AUTH_TYPE_DPA=(int)(17),
132         DCERPC_AUTH_TYPE_MSN=(int)(18),
133         DCERPC_AUTH_TYPE_DIGEST=(int)(21),
134         DCERPC_AUTH_TYPE_SCHANNEL=(int)(68),
135         DCERPC_AUTH_TYPE_MSMQ=(int)(100)
136 }
137 #else
138  { __donnot_use_enum_dcerpc_AuthType=0x7FFFFFFF}
139 #define DCERPC_AUTH_TYPE_NONE ( 0 )
140 #define DCERPC_AUTH_TYPE_KRB5_1 ( 1 )
141 #define DCERPC_AUTH_TYPE_SPNEGO ( 9 )
142 #define DCERPC_AUTH_TYPE_NTLMSSP ( 10 )
143 #define DCERPC_AUTH_TYPE_KRB5 ( 16 )
144 #define DCERPC_AUTH_TYPE_DPA ( 17 )
145 #define DCERPC_AUTH_TYPE_MSN ( 18 )
146 #define DCERPC_AUTH_TYPE_DIGEST ( 21 )
147 #define DCERPC_AUTH_TYPE_SCHANNEL ( 68 )
148 #define DCERPC_AUTH_TYPE_MSMQ ( 100 )
149 #endif
150 ;
151
152 enum dcerpc_AuthLevel
153 #ifndef USE_UINT_ENUMS
154  {
155         DCERPC_AUTH_LEVEL_NONE=(int)(1),
156         DCERPC_AUTH_LEVEL_CONNECT=(int)(2),
157         DCERPC_AUTH_LEVEL_CALL=(int)(3),
158         DCERPC_AUTH_LEVEL_PACKET=(int)(4),
159         DCERPC_AUTH_LEVEL_INTEGRITY=(int)(5),
160         DCERPC_AUTH_LEVEL_PRIVACY=(int)(6)
161 }
162 #else
163  { __donnot_use_enum_dcerpc_AuthLevel=0x7FFFFFFF}
164 #define DCERPC_AUTH_LEVEL_NONE ( 1 )
165 #define DCERPC_AUTH_LEVEL_CONNECT ( 2 )
166 #define DCERPC_AUTH_LEVEL_CALL ( 3 )
167 #define DCERPC_AUTH_LEVEL_PACKET ( 4 )
168 #define DCERPC_AUTH_LEVEL_INTEGRITY ( 5 )
169 #define DCERPC_AUTH_LEVEL_PRIVACY ( 6 )
170 #endif
171 ;
172
173 struct dcerpc_auth {
174         enum dcerpc_AuthType auth_type;
175         enum dcerpc_AuthLevel auth_level;
176         uint8_t auth_pad_length;
177         uint8_t auth_reserved;
178         uint32_t auth_context_id;
179         DATA_BLOB credentials;/* [flag(LIBNDR_FLAG_REMAINING)] */
180 }/* [public] */;
181
182 struct dcerpc_auth3 {
183         uint32_t _pad;/* [value(0)] */
184         DATA_BLOB auth_info;/* [flag(LIBNDR_FLAG_REMAINING)] */
185 }/* [public] */;
186
187 struct dcerpc_orphaned {
188         uint32_t _pad;/* [value(0)] */
189         DATA_BLOB auth_info;/* [flag(LIBNDR_FLAG_REMAINING)] */
190 }/* [public] */;
191
192 struct dcerpc_co_cancel {
193         uint32_t _pad;/* [value(0)] */
194         DATA_BLOB auth_info;/* [flag(LIBNDR_FLAG_REMAINING)] */
195 }/* [public] */;
196
197 struct dcerpc_cl_cancel {
198         uint32_t version;
199         uint32_t id;
200 }/* [public] */;
201
202 struct dcerpc_cancel_ack {
203         uint32_t version;
204         uint32_t id;
205         uint32_t server_is_accepting;
206 }/* [public] */;
207
208 struct dcerpc_fack {
209         uint32_t version;
210         uint8_t _pad1;
211         uint16_t window_size;
212         uint32_t max_tdsu;
213         uint32_t max_frag_size;
214         uint16_t serial_no;
215         uint16_t selack_size;
216         uint32_t *selack;
217 }/* [public] */;
218
219 struct dcerpc_ack {
220         char _empty_;
221 }/* [public] */;
222
223 struct dcerpc_ping {
224         char _empty_;
225 }/* [public] */;
226
227 struct dcerpc_shutdown {
228         char _empty_;
229 }/* [public] */;
230
231 struct dcerpc_working {
232         char _empty_;
233 }/* [public] */;
234
235 enum dcerpc_pkt_type
236 #ifndef USE_UINT_ENUMS
237  {
238         DCERPC_PKT_REQUEST=(int)(0),
239         DCERPC_PKT_PING=(int)(1),
240         DCERPC_PKT_RESPONSE=(int)(2),
241         DCERPC_PKT_FAULT=(int)(3),
242         DCERPC_PKT_WORKING=(int)(4),
243         DCERPC_PKT_NOCALL=(int)(5),
244         DCERPC_PKT_REJECT=(int)(6),
245         DCERPC_PKT_ACK=(int)(7),
246         DCERPC_PKT_CL_CANCEL=(int)(8),
247         DCERPC_PKT_FACK=(int)(9),
248         DCERPC_PKT_CANCEL_ACK=(int)(10),
249         DCERPC_PKT_BIND=(int)(11),
250         DCERPC_PKT_BIND_ACK=(int)(12),
251         DCERPC_PKT_BIND_NAK=(int)(13),
252         DCERPC_PKT_ALTER=(int)(14),
253         DCERPC_PKT_ALTER_RESP=(int)(15),
254         DCERPC_PKT_AUTH3=(int)(16),
255         DCERPC_PKT_SHUTDOWN=(int)(17),
256         DCERPC_PKT_CO_CANCEL=(int)(18),
257         DCERPC_PKT_ORPHANED=(int)(19)
258 }
259 #else
260  { __donnot_use_enum_dcerpc_pkt_type=0x7FFFFFFF}
261 #define DCERPC_PKT_REQUEST ( 0 )
262 #define DCERPC_PKT_PING ( 1 )
263 #define DCERPC_PKT_RESPONSE ( 2 )
264 #define DCERPC_PKT_FAULT ( 3 )
265 #define DCERPC_PKT_WORKING ( 4 )
266 #define DCERPC_PKT_NOCALL ( 5 )
267 #define DCERPC_PKT_REJECT ( 6 )
268 #define DCERPC_PKT_ACK ( 7 )
269 #define DCERPC_PKT_CL_CANCEL ( 8 )
270 #define DCERPC_PKT_FACK ( 9 )
271 #define DCERPC_PKT_CANCEL_ACK ( 10 )
272 #define DCERPC_PKT_BIND ( 11 )
273 #define DCERPC_PKT_BIND_ACK ( 12 )
274 #define DCERPC_PKT_BIND_NAK ( 13 )
275 #define DCERPC_PKT_ALTER ( 14 )
276 #define DCERPC_PKT_ALTER_RESP ( 15 )
277 #define DCERPC_PKT_AUTH3 ( 16 )
278 #define DCERPC_PKT_SHUTDOWN ( 17 )
279 #define DCERPC_PKT_CO_CANCEL ( 18 )
280 #define DCERPC_PKT_ORPHANED ( 19 )
281 #endif
282 ;
283
284 union dcerpc_payload {
285         struct dcerpc_request request;/* [case(DCERPC_PKT_REQUEST)] */
286         struct dcerpc_ping ping;/* [case(DCERPC_PKT_PING)] */
287         struct dcerpc_response response;/* [case(DCERPC_PKT_RESPONSE)] */
288         struct dcerpc_fault fault;/* [case(DCERPC_PKT_FAULT)] */
289         struct dcerpc_working working;/* [case(DCERPC_PKT_WORKING)] */
290         struct dcerpc_fack nocall;/* [case(DCERPC_PKT_NOCALL)] */
291         struct dcerpc_fault reject;/* [case(DCERPC_PKT_REJECT)] */
292         struct dcerpc_ack ack;/* [case(DCERPC_PKT_ACK)] */
293         struct dcerpc_cl_cancel cl_cancel;/* [case(DCERPC_PKT_CL_CANCEL)] */
294         struct dcerpc_fack fack;/* [case(DCERPC_PKT_FACK)] */
295         struct dcerpc_cancel_ack cancel_ack;/* [case(DCERPC_PKT_CANCEL_ACK)] */
296         struct dcerpc_bind bind;/* [case(DCERPC_PKT_BIND)] */
297         struct dcerpc_bind_ack bind_ack;/* [case(DCERPC_PKT_BIND_ACK)] */
298         struct dcerpc_bind_nak bind_nak;/* [case(DCERPC_PKT_BIND_NAK)] */
299         struct dcerpc_bind alter;/* [case(DCERPC_PKT_ALTER)] */
300         struct dcerpc_bind_ack alter_resp;/* [case(DCERPC_PKT_ALTER_RESP)] */
301         struct dcerpc_shutdown shutdown;/* [case(DCERPC_PKT_SHUTDOWN)] */
302         struct dcerpc_co_cancel co_cancel;/* [case(DCERPC_PKT_CO_CANCEL)] */
303         struct dcerpc_orphaned orphaned;/* [case(DCERPC_PKT_ORPHANED)] */
304         struct dcerpc_auth3 auth3;/* [case(DCERPC_PKT_AUTH3)] */
305 }/* [nodiscriminant] */;
306
307 struct ncacn_packet {
308         uint8_t rpc_vers;
309         uint8_t rpc_vers_minor;
310         enum dcerpc_pkt_type ptype;
311         uint8_t pfc_flags;
312         uint8_t drep[4];
313         uint16_t frag_length;
314         uint16_t auth_length;
315         uint32_t call_id;
316         union dcerpc_payload u;/* [switch_is(ptype)] */
317 }/* [public] */;
318
319 struct ncadg_packet {
320         uint8_t rpc_vers;
321         uint8_t ptype;
322         uint8_t pfc_flags;
323         uint8_t ncadg_flags;
324         uint8_t drep[3];
325         uint8_t serial_high;
326         struct GUID object;
327         struct GUID iface;
328         struct GUID activity;
329         uint32_t server_boot;
330         uint32_t iface_version;
331         uint32_t seq_num;
332         uint16_t opnum;
333         uint16_t ihint;
334         uint16_t ahint;
335         uint16_t len;
336         uint16_t fragnum;
337         uint8_t auth_proto;
338         uint8_t serial_low;
339         union dcerpc_payload u;/* [switch_is(ptype)] */
340 }/* [public] */;
341
342 #endif /* _HEADER_dcerpc */