ReactOS  0.4.14-dev-337-gf981a68
rpc_defs.h
Go to the documentation of this file.
1 /*
2  * RPC definitions
3  *
4  * Copyright 2001-2002 Ove K√•ven, TransGaming Technologies
5  * Copyright 2004 Filip Navara
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20  */
21 
22 #ifndef __WINE_RPC_DEFS_H
23 #define __WINE_RPC_DEFS_H
24 
25 #include "pshpack1.h"
26 typedef struct
27 {
28  unsigned char rpc_ver; /* RPC major version (5) */
29  unsigned char rpc_ver_minor; /* RPC minor version (0) */
30  unsigned char ptype; /* Packet type (PKT_*) */
31  unsigned char flags;
32  unsigned char drep[4]; /* Data representation */
33  unsigned short frag_len; /* Data size in bytes including header and tail. */
34  unsigned short auth_len; /* Authentication length */
35  unsigned int call_id; /* Call identifier. */
37 
38 typedef struct
39 {
41  unsigned int alloc_hint; /* Data size in bytes excluding header and tail. */
42  unsigned short context_id; /* Presentation context identifier */
43  unsigned short opnum;
45 
46 typedef struct
47 {
49  unsigned int alloc_hint; /* Data size in bytes excluding header and tail. */
50  unsigned short context_id; /* Presentation context identifier */
51  unsigned char cancel_count;
52  unsigned char reserved;
54 
55 typedef struct
56 {
58  unsigned int alloc_hint; /* Data size in bytes excluding header and tail. */
59  unsigned short context_id; /* Presentation context identifier */
60  unsigned char cancel_count; /* Received cancel count */
61  unsigned char reserved; /* Force alignment! */
62  unsigned int status; /* Runtime fault code (RPC_STATUS) */
63  unsigned int reserved2;
65 
66 typedef struct
67 {
68  unsigned short context_id; /* Presentation context identifier */
69  unsigned char num_syntaxes; /* Number of syntaxes */
70  unsigned char reserved; /* For alignment */
72  RPC_SYNTAX_IDENTIFIER transfer_syntaxes[ANYSIZE_ARRAY]; /* size_is(num_syntaxes) */
74 
75 typedef struct
76 {
78  unsigned short max_tsize; /* Maximum transmission fragment size */
79  unsigned short max_rsize; /* Maximum receive fragment size */
80  unsigned int assoc_gid; /* Associated group id */
81  unsigned char num_elements; /* Number of elements */
82  unsigned char padding[3]; /* Force alignment! */
83  /*
84  * Following this header are these fields:
85  * RpcContextElement context_elements[num_elements]
86  */
88 
89 typedef struct
90 {
91  unsigned short length; /* Length of the string including null terminator */
92  char string[ANYSIZE_ARRAY]; /* String data in single byte, null terminated form */
94 
95 typedef struct
96 {
97  unsigned short result;
98  unsigned short reason;
100 } RpcResult;
101 
102 typedef struct
103 {
104  unsigned char num_results; /* Number of results */
105  unsigned char reserved[3]; /* Force alignment! */
106  RpcResult results[ANYSIZE_ARRAY]; /* size_is(num_results) */
107 } RpcResultList;
108 
109 typedef struct
110 {
112  unsigned short max_tsize; /* Maximum transmission fragment size */
113  unsigned short max_rsize; /* Maximum receive fragment size */
114  unsigned int assoc_gid; /* Associated group id */
115  /*
116  * Following this header are these fields:
117  * RpcAddressString server_address;
118  * [0 - 3 bytes of padding so that results is 4-byte aligned]
119  * RpcResultList results;
120  */
122 
123 typedef struct
124 {
126  unsigned short reject_reason;
127  unsigned char protocols_count;
128  struct {
129  unsigned char rpc_ver;
130  unsigned char rpc_ver_minor;
133 
134 /* undocumented packet sent during RPC over HTTP */
135 typedef struct
136 {
138  unsigned short flags;
139  unsigned short num_data_items;
140 } RpcPktHttpHdr;
141 
142 /* AUTH3 packet */
143 typedef struct
144 {
146  unsigned int pad; /* ignored */
148 
149 /* Union representing all possible packet headers */
150 typedef union
151 {
161 } RpcPktHdr;
162 
163 typedef struct
164 {
165  unsigned char auth_type; /* authentication scheme in use */
166  unsigned char auth_level; /* RPC_C_AUTHN_LEVEL* */
167  unsigned char auth_pad_length; /* length of padding to restore n % 4 alignment */
168  unsigned char auth_reserved; /* reserved, must be zero */
169  unsigned int auth_context_id; /* unique value for the authenticated connection */
171 #include "poppack.h"
172 
173 #define RPC_AUTH_VERIFIER_LEN(common_hdr) \
174  ((common_hdr)->auth_len ? (common_hdr)->auth_len + sizeof(RpcAuthVerifier) : 0)
175 
176 #define RPC_VER_MAJOR 5
177 #define RPC_VER_MINOR 0
178 
179 #define RPC_FLG_FIRST 1
180 #define RPC_FLG_LAST 2
181 #define RPC_FLG_OBJECT_UUID 0x80
182 
183 #define RPC_MIN_PACKET_SIZE 0x1000
184 #define RPC_MAX_PACKET_SIZE 0x16D0
185 
187 {
189  PKT_PING = 1,
195  PKT_ACK = 7,
197  PKT_FACK = 9,
199  PKT_BIND = 11,
204  PKT_AUTH3 = 16,
208  PKT_HTTP = 20,
209 };
210 
211 #define RESULT_ACCEPT 0
212 #define RESULT_USER_REJECTION 1
213 #define RESULT_PROVIDER_REJECTION 2
214 
215 #define REASON_NONE 0
216 #define REASON_ABSTRACT_SYNTAX_NOT_SUPPORTED 1
217 #define REASON_TRANSFER_SYNTAXES_NOT_SUPPORTED 2
218 #define REASON_LOCAL_LIMIT_EXCEEDED 3
219 
220 #define REJECT_REASON_NOT_SPECIFIED 0
221 #define REJECT_TEMPORARY_CONGESTION 1
222 #define REJECT_LOCAL_LIMIT_EXCEEDED 2
223 #define REJECT_CALLED_PADDR_UNKNOWN 3 /* not used */
224 #define REJECT_PROTOCOL_VERSION_NOT_SUPPORTED 4
225 #define REJECT_DEFAULT_CONTEXT_NOT_SUPPORTED 5 /* not used */
226 #define REJECT_USER_DATA_NOT_READABLE 6 /* not used */
227 #define REJECT_NO_PSAP_AVAILABLE 7 /* not used */
228 #define REJECT_UNKNOWN_AUTHN_SERVICE 8
229 #define REJECT_INVALID_CHECKSUM 9
230 
231 #define NCADG_IP_UDP 0x08
232 #define NCACN_IP_TCP 0x07
233 #define NCADG_IPX 0x0E
234 #define NCACN_SPX 0x0C
235 #define NCACN_NB_NB 0x12
236 #define NCACN_NB_IPX 0x0D
237 #define NCACN_DNET_NSP 0x04
238 #define NCACN_HTTP 0x1F
239 
240 /* FreeDCE: TWR_C_FLR_PROT_ID_IP */
241 #define TWR_IP 0x09
242 
243 #endif /* __WINE_RPC_DEFS_H */
unsigned short context_id
Definition: rpc_defs.h:59
RpcPktCommonHdr common
Definition: rpc_defs.h:48
RpcPktCommonHdr common
Definition: rpc_defs.h:111
unsigned char reserved
Definition: rpc_defs.h:52
unsigned short max_tsize
Definition: rpc_defs.h:78
#define ANYSIZE_ARRAY
Definition: typedefs.h:45
unsigned char rpc_ver
Definition: rpc_defs.h:28
RpcPktCommonHdr common
Definition: rpc_defs.h:125
unsigned char reserved
Definition: rpc_defs.h:70
unsigned int pad
Definition: rpc_defs.h:146
unsigned char rpc_ver_minor
Definition: rpc_defs.h:130
unsigned short max_rsize
Definition: rpc_defs.h:113
RpcPktCommonHdr common
Definition: rpc_defs.h:77
unsigned char rpc_ver
Definition: rpc_defs.h:129
rpc_packet_type
Definition: rpc_defs.h:186
unsigned short length
Definition: rpc_defs.h:91
RpcPktResponseHdr response
Definition: rpc_defs.h:154
RPC_SYNTAX_IDENTIFIER transfer_syntax
Definition: rpc_defs.h:99
unsigned char cancel_count
Definition: rpc_defs.h:51
unsigned short opnum
Definition: rpc_defs.h:43
RpcPktCommonHdr common
Definition: rpc_defs.h:137
unsigned short context_id
Definition: rpc_defs.h:68
unsigned int call_id
Definition: rpc_defs.h:35
unsigned int alloc_hint
Definition: rpc_defs.h:58
RpcPktCommonHdr common
Definition: rpc_defs.h:152
unsigned short max_rsize
Definition: rpc_defs.h:79
unsigned char num_elements
Definition: rpc_defs.h:81
unsigned short flags
Definition: rpc_defs.h:138
RpcPktCommonHdr common
Definition: rpc_defs.h:40
unsigned int assoc_gid
Definition: rpc_defs.h:114
r reserved
Definition: btrfs.c:2865
unsigned int status
Definition: rpc_defs.h:62
unsigned char num_syntaxes
Definition: rpc_defs.h:69
RpcPktBindAckHdr bind_ack
Definition: rpc_defs.h:157
unsigned char rpc_ver_minor
Definition: rpc_defs.h:29
RpcPktBindNAckHdr bind_nack
Definition: rpc_defs.h:158
unsigned int auth_context_id
Definition: rpc_defs.h:169
unsigned short max_tsize
Definition: rpc_defs.h:112
unsigned char auth_pad_length
Definition: rpc_defs.h:167
unsigned short reason
Definition: rpc_defs.h:98
unsigned short frag_len
Definition: rpc_defs.h:33
RpcPktCommonHdr common
Definition: rpc_defs.h:57
unsigned int reserved2
Definition: rpc_defs.h:63
RpcPktRequestHdr request
Definition: rpc_defs.h:153
unsigned int padding
Definition: isohybrid.c:50
unsigned char cancel_count
Definition: rpc_defs.h:60
unsigned char auth_reserved
Definition: rpc_defs.h:168
struct _test_info results[8]
Definition: SetCursorPos.c:29
unsigned char ptype
Definition: rpc_defs.h:30
RpcPktAuth3Hdr auth3
Definition: rpc_defs.h:160
RpcPktHttpHdr http
Definition: rpc_defs.h:159
unsigned short context_id
Definition: rpc_defs.h:42
unsigned char auth_type
Definition: rpc_defs.h:165
unsigned short auth_len
Definition: rpc_defs.h:34
RpcPktBindHdr bind
Definition: rpc_defs.h:156
unsigned char auth_level
Definition: rpc_defs.h:166
struct protocol * protocols
Definition: dispatch.c:52
unsigned int alloc_hint
Definition: rpc_defs.h:41
RpcPktCommonHdr common
Definition: rpc_defs.h:145
RpcPktFaultHdr fault
Definition: rpc_defs.h:155
unsigned char protocols_count
Definition: rpc_defs.h:127
RPC_SYNTAX_IDENTIFIER abstract_syntax
Definition: rpc_defs.h:71
unsigned short result
Definition: rpc_defs.h:97
unsigned short reject_reason
Definition: rpc_defs.h:126
unsigned char reserved
Definition: rpc_defs.h:61
unsigned int alloc_hint
Definition: rpc_defs.h:49
unsigned short num_data_items
Definition: rpc_defs.h:139
unsigned char num_results
Definition: rpc_defs.h:104
unsigned short context_id
Definition: rpc_defs.h:50
unsigned char flags
Definition: rpc_defs.h:31
unsigned int assoc_gid
Definition: rpc_defs.h:80