comparison fuhtark_test/include/winapi/lpmapi.h @ 1500:91c8c3b7cbf0

add: futhark tests for generating vulkan api
author sam <sam@basx.dev>
date Wed, 26 Nov 2025 21:36:48 +0700
parents
children
comparison
equal deleted inserted replaced
1499:1f58458b7ef7 1500:91c8c3b7cbf0
1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the w64 mingw-runtime package.
4 * No warranty is given; refer to the file DISCLAIMER within this package.
5 */
6 #ifndef __LPMAPI_H_
7 #define __LPMAPI_H_
8
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12
13 #ifndef CALLBACK
14 #define CALLBACK __stdcall
15 #endif
16
17 #ifndef WINAPI
18 #define WINAPI __stdcall
19 #endif
20
21 #ifndef APIENTRY
22 #define APIENTRY WINAPI
23 #endif
24
25 typedef struct {
26 USHORT obj_length;
27 UCHAR obj_class;
28 UCHAR obj_ctype;
29 } RsvpObjHdr;
30
31 #define ObjLength(x) ((RsvpObjHdr *)x)->obj_length
32 #define ObjCType(x) ((RsvpObjHdr *)x)->obj_ctype
33 #define ObjClass(x) ((RsvpObjHdr *)x)->obj_class
34 #define ObjData(x) ((RsvpObjHdr *)(x)+1)
35
36 #define class_NULL 0
37 #define class_SESSION 1
38 #define class_SESSION_GROUP 2
39 #define class_RSVP_HOP 3
40 #define class_INTEGRITY 4
41 #define class_TIME_VALUES 5
42 #define class_ERROR_SPEC 6
43 #define class_SCOPE 7
44 #define class_STYLE 8
45 #define class_FLOWSPEC 9
46 #define class_IS_FLOWSPEC 9
47 #define class_FILTER_SPEC 10
48 #define class_SENDER_TEMPLATE 11
49 #define class_SENDER_TSPEC 12
50 #define class_ADSPEC 13
51 #define class_POLICY_DATA 14
52 #define class_CONFIRM 15
53 #define class_MAX 15
54
55 #define ctype_SESSION_ipv4 1
56 #define ctype_SESSION_ipv4GPI 3
57
58 #define SESSFLG_E_Police 0x01
59
60 typedef struct {
61 IN_ADDR sess_destaddr;
62 UCHAR sess_protid;
63 UCHAR sess_flags;
64 USHORT sess_destport;
65 } Session_IPv4;
66
67 typedef struct {
68 RsvpObjHdr sess_header;
69 union {
70 Session_IPv4 sess_ipv4;
71 } sess_u;
72 } RSVP_SESSION;
73
74 #define Sess4Addr sess_u.sess_ipv4.sess_destaddr
75 #define Sess4Port sess_u.sess_ipv4.sess_destport
76 #define Sess4Protocol sess_u.sess_ipv4.sess_protid
77 #define Sess4Flags sess_u.sess_ipv4.sess_flags
78
79 #define ctype_RSVP_HOP_ipv4 1
80
81 typedef struct {
82 IN_ADDR hop_ipaddr;
83 ULONG hop_LIH;
84 } Rsvp_Hop_IPv4;
85
86 typedef struct {
87 RsvpObjHdr hop_header;
88 union {
89 Rsvp_Hop_IPv4 hop_ipv4;
90 } hop_u;
91 } RSVP_HOP;
92
93 #define Hop4LIH hop_u.hop_ipv4.hop_LIH
94 #define Hop4Addr hop_u.hop_ipv4.hop_ipaddr
95
96 #define Opt_Share_mask 0x00000018
97 #define Opt_Distinct 0x00000008
98 #define Opt_Shared 0x00000010
99
100 #define Opt_SndSel_mask 0x00000007
101 #define Opt_Wildcard 0x00000001
102 #define Opt_Explicit 0x00000002
103
104 #define Style_is_Wildcard(p) (((p)&Opt_SndSel_mask)==Opt_Wildcard)
105 #define Style_is_Shared(p) (((p)&Opt_Share_mask)==Opt_Shared)
106
107 #define STYLE_WF Opt_Shared + Opt_Wildcard
108 #define STYLE_FF Opt_Distinct + Opt_Explicit
109 #define STYLE_SE Opt_Shared + Opt_Explicit
110
111 #define ctype_STYLE 1
112
113 typedef struct {
114 RsvpObjHdr style_header;
115 ULONG style_word;
116 } RESV_STYLE;
117
118 #define ctype_FILTER_SPEC_ipv4 1
119 #define ctype_FILTER_SPEC_ipv4GPI 4
120
121 typedef struct {
122 IN_ADDR filt_ipaddr;
123 USHORT filt_unused;
124 USHORT filt_port;
125 } Filter_Spec_IPv4;
126
127 typedef struct {
128 IN_ADDR filt_ipaddr;
129 ULONG filt_gpi;
130 } Filter_Spec_IPv4GPI;
131
132 typedef struct {
133 RsvpObjHdr filt_header;
134 union {
135 Filter_Spec_IPv4 filt_ipv4;
136 Filter_Spec_IPv4GPI filt_ipv4gpi;
137 } filt_u;
138 } FILTER_SPEC;
139
140 #define FilterSrcaddr filt_u.filt_ipv4.filt_ipaddr
141 #define FilterSrcport filt_u.filt_ipv4.filt_port
142
143 #define ctype_SENDER_TEMPLATE_ipv4 1
144 #define ctype_SENDER_TEMPLATE_ipv4GPI 4
145
146 typedef FILTER_SPEC SENDER_TEMPLATE;
147
148 #define ctype_SCOPE_list_ipv4 1
149
150 typedef struct {
151 IN_ADDR scopl_ipaddr[1];
152 } Scope_list_ipv4;
153
154 typedef struct {
155 RsvpObjHdr scopl_header;
156 union {
157 Scope_list_ipv4 scopl_ipv4;
158 } scope_u;
159 } RSVP_SCOPE;
160
161 #define Scope4Addr scope_u.scopl_ipv4.scopl_ipaddr
162 #define ScopeCnt(scp) ((ObjLength(scp)-sizeof(RsvpObjHdr))/sizeof(struct in_addr))
163 #define ScopeLen(cnt) (cnt*sizeof(struct in_addr)+sizeof(RsvpObjHdr))
164
165 #define ctype_ERROR_SPEC_ipv4 1
166
167 #define ERROR_SPECF_InPlace 0x01
168 #define ERROR_SPECF_NotGuilty 0x02
169
170 #define ERR_FORWARD_OK 0x8000
171 #define Error_Usage(x) (((x)>>12)&3)
172 #define ERR_Usage_globl 0x00
173 #define ERR_Usage_local 0x10
174 #define ERR_Usage_serv 0x11
175 #define ERR_global_mask 0x0fff
176
177 typedef struct {
178 struct in_addr errs_errnode;
179 u_char errs_flags;
180 UCHAR errs_code;
181 USHORT errs_value;
182 } Error_Spec_IPv4;
183
184 typedef struct {
185 RsvpObjHdr errs_header;
186 union {
187 Error_Spec_IPv4 errs_ipv4;
188 } errs_u;
189 } ERROR_SPEC;
190
191 #define errspec4_enode errs_u.errs_ipv4.errs_errnode
192 #define errspec4_code errs_u.errs_ipv4.errs_code
193 #define errspec4_value errs_u.errs_ipv4.errs_value
194 #define errspec4_flags errs_u.errs_ipv4.errs_flags
195
196 #define ctype_POLICY_DATA 1
197
198 typedef struct {
199 RsvpObjHdr PolicyObjHdr;
200 USHORT usPeOffset;
201 USHORT usReserved;
202 } POLICY_DATA;
203
204 #define PD_HDR_LEN sizeof(POLICY_DATA)
205
206 typedef struct {
207 USHORT usPeLength;
208 USHORT usPeType;
209 UCHAR ucPeData[4];
210 } POLICY_ELEMENT;
211
212 #define PE_HDR_LEN (2 *sizeof(USHORT))
213
214 #define GENERAL_INFO 1
215 #define GUARANTEED_SERV 2
216 #define PREDICTIVE_SERV 3
217 #define CONTROLLED_DELAY_SERV 4
218 #define CONTROLLED_LOAD_SERV 5
219 #define QUALITATIVE_SERV 6
220
221 enum int_serv_wkp {
222 IS_WKP_HOP_CNT = 4,IS_WKP_PATH_BW = 6,IS_WKP_MIN_LATENCY = 8,IS_WKP_COMPOSED_MTU = 10,IS_WKP_TB_TSPEC = 127,IS_WKP_Q_TSPEC = 128
223 };
224
225 typedef struct {
226 UCHAR ismh_version;
227 UCHAR ismh_unused;
228 USHORT ismh_len32b;
229 } IntServMainHdr;
230
231 #define INTSERV_VERS_MASK 0xf0
232 #define INTSERV_VERSION0 0
233 #define Intserv_Version(x) (((x)&INTSERV_VERS_MASK)>>4)
234 #define Intserv_Version_OK(x) (((x)->ismh_version&INTSERV_VERS_MASK)== INTSERV_VERSION0)
235 #define Intserv_Obj_size(x) (((IntServMainHdr *)(x))->ismh_len32b *4 + sizeof(IntServMainHdr) + sizeof(RsvpObjHdr))
236
237 #define ISSH_BREAK_BIT 0x80
238
239 typedef struct {
240 UCHAR issh_service;
241 UCHAR issh_flags;
242 USHORT issh_len32b;
243 } IntServServiceHdr;
244
245 #define Issh_len32b(p) ((p)->issh_len32b)
246
247 #define ISPH_FLG_INV 0x80
248
249 typedef struct {
250 UCHAR isph_parm_num;
251 UCHAR isph_flags;
252 USHORT isph_len32b;
253 } IntServParmHdr;
254
255 #define Next_Main_Hdr(p) (IntServMainHdr *)((ULONG *)(p)+1+(p)->ismh_len32b)
256 #define Next_Serv_Hdr(p) (IntServServiceHdr *)((ULONG *)(p)+1+(p)->issh_len32b)
257 #define Next_Parm_Hdr(p) (IntServParmHdr *)((ULONG *)(p)+1+(p)->isph_len32b)
258
259 typedef struct {
260 FLOAT TB_Tspec_r;
261 FLOAT TB_Tspec_b;
262 FLOAT TB_Tspec_p;
263 ULONG TB_Tspec_m;
264 ULONG TB_Tspec_M;
265 } GenTspecParms;
266
267 typedef struct {
268 IntServServiceHdr gen_Tspec_serv_hdr;
269 IntServParmHdr gen_Tspec_parm_hdr;
270 GenTspecParms gen_Tspec_parms;
271 } GenTspec;
272
273 #define gtspec_r gen_Tspec_parms.TB_Tspec_r
274 #define gtspec_b gen_Tspec_parms.TB_Tspec_b
275 #define gtspec_m gen_Tspec_parms.TB_Tspec_m
276 #define gtspec_M gen_Tspec_parms.TB_Tspec_M
277 #define gtspec_p gen_Tspec_parms.TB_Tspec_p
278 #define gtspec_parmno gen_Tspec_parm_hdr.isph_parm_num
279 #define gtspec_flags gen_Tspec_parm_hdr.isph_flags
280 #define gtspec_len (sizeof(GenTspec) - sizeof(IntServServiceHdr))
281
282 typedef struct {
283 ULONG TB_Tspec_M;
284 } QualTspecParms;
285
286 typedef struct {
287 IntServServiceHdr qual_Tspec_serv_hdr;
288 IntServParmHdr qual_Tspec_parm_hdr;
289 QualTspecParms qual_Tspec_parms;
290 } QualTspec;
291
292 typedef struct {
293 IntServServiceHdr Q_spec_serv_hdr;
294 IntServParmHdr Q_spec_parm_hdr;
295 QualTspecParms Q_spec_parms;
296 } QualAppFlowSpec;
297
298 #define QAspec_M Q_spec_parms.TB_Tspec_M
299
300 typedef struct {
301 IntServMainHdr st_mh;
302 union {
303 GenTspec gen_stspec;
304 QualTspec qual_stspec;
305 } tspec_u;
306 } IntServTspecBody;
307
308 #define ctype_SENDER_TSPEC 2
309
310 typedef struct {
311 RsvpObjHdr stspec_header;
312 IntServTspecBody stspec_body;
313 } SENDER_TSPEC;
314
315 typedef struct {
316 IntServServiceHdr CL_spec_serv_hdr;
317 IntServParmHdr CL_spec_parm_hdr;
318 GenTspecParms CL_spec_parms;
319 } CtrlLoadFlowspec;
320
321 #define CLspec_r CL_spec_parms.TB_Tspec_r
322 #define CLspec_b CL_spec_parms.TB_Tspec_b
323 #define CLspec_p CL_spec_parms.TB_Tspec_p
324 #define CLspec_m CL_spec_parms.TB_Tspec_m
325 #define CLspec_M CL_spec_parms.TB_Tspec_M
326 #define CLspec_parmno CL_spec_parm_hdr.isph_parm_num
327 #define CLspec_flags CL_spec_parm_hdr.isph_flags
328 #define CLspec_len32b CL_spec_parm_hdr.isph_len32b
329 #define CLspec_len (sizeof(CtrlLoadFlowspec) - sizeof(IntServServiceHdr))
330
331 enum {
332 IS_GUAR_RSPEC = 130,GUAR_ADSPARM_C = 131,GUAR_ADSPARM_D = 132,GUAR_ADSPARM_Ctot = 133,GUAR_ADSPARM_Dtot = 134,GUAR_ADSPARM_Csum = 135,
333 GUAR_ADSPARM_Dsum = 136
334 };
335
336 typedef struct {
337 FLOAT Guar_R;
338 ULONG Guar_S;
339 } GuarRspec;
340
341 typedef struct {
342 IntServServiceHdr Guar_serv_hdr;
343 IntServParmHdr Guar_Tspec_hdr;
344 GenTspecParms Guar_Tspec_parms;
345 IntServParmHdr Guar_Rspec_hdr;
346 GuarRspec Guar_Rspec;
347 } GuarFlowSpec;
348
349 #define Gspec_r Guar_Tspec_parms.TB_Tspec_r
350 #define Gspec_b Guar_Tspec_parms.TB_Tspec_b
351 #define Gspec_p Guar_Tspec_parms.TB_Tspec_p
352 #define Gspec_m Guar_Tspec_parms.TB_Tspec_m
353 #define Gspec_M Guar_Tspec_parms.TB_Tspec_M
354 #define Gspec_R Guar_Rspec.Guar_R
355 #define Gspec_S Guar_Rspec.Guar_S
356 #define Gspec_T_parmno Guar_Tspec_hdr.isph_parm_num
357 #define Gspec_T_flags Guar_Tspec_hdr.isph_flags
358 #define Gspec_R_parmno Guar_Rspec_hdr.isph_parm_num
359 #define Gspec_R_flags Guar_Rspec_hdr.isph_flags
360 #define Gspec_len (sizeof(GuarFlowSpec) - sizeof(IntServServiceHdr))
361
362 typedef struct {
363 IntServMainHdr spec_mh;
364 union {
365 CtrlLoadFlowspec CL_spec;
366 GuarFlowSpec G_spec;
367 QualAppFlowSpec Q_spec;
368 } spec_u;
369 } IntServFlowSpec;
370
371 #define ISmh_len32b spec_mh.ismh_len32b
372 #define ISmh_version spec_mh.ismh_version
373 #define ISmh_unused spec_mh.ismh_unused
374
375 #define ctype_FLOWSPEC_Intserv0 2
376
377 typedef struct {
378 RsvpObjHdr flow_header;
379 IntServFlowSpec flow_body;
380 } IS_FLOWSPEC;
381
382 typedef struct flow_desc {
383 union {
384 SENDER_TSPEC *stspec;
385 IS_FLOWSPEC *isflow;
386 } u1;
387 union {
388 SENDER_TEMPLATE *stemp;
389 FILTER_SPEC *fspec;
390 } u2;
391 } FLOW_DESC;
392
393 #define FdSenderTspec u1.stspec
394 #define FdIsFlowSpec u1.isflow
395
396 #define FdSenderTemplate u2.stemp
397 #define FdFilterSpec u2.fspec
398
399 #define ctype_ADSPEC_INTSERV 2
400
401 typedef struct {
402 IntServServiceHdr Gads_serv_hdr;
403 IntServParmHdr Gads_Ctot_hdr;
404 ULONG Gads_Ctot;
405 IntServParmHdr Gads_Dtot_hdr;
406 ULONG Gads_Dtot;
407 IntServParmHdr Gads_Csum_hdr;
408 ULONG Gads_Csum;
409 IntServParmHdr Gads_Dsum_hdr;
410 ULONG Gads_Dsum;
411 } Gads_parms_t;
412
413 typedef struct {
414 IntServServiceHdr gen_parm_hdr;
415 IntServParmHdr gen_parm_hopcnt_hdr;
416 ULONG gen_parm_hopcnt;
417 IntServParmHdr gen_parm_pathbw_hdr;
418 FLOAT gen_parm_path_bw;
419 IntServParmHdr gen_parm_minlat_hdr;
420 ULONG gen_parm_min_latency;
421 IntServParmHdr gen_parm_compmtu_hdr;
422 ULONG gen_parm_composed_MTU;
423 } GenAdspecParams;
424
425 typedef struct {
426 IntServMainHdr adspec_mh;
427 GenAdspecParams adspec_genparms;
428 } IS_ADSPEC_BODY;
429
430 #define GEN_ADSPEC_LEN (sizeof(Object_header) + sizeof(IS_adsbody_t))
431
432 typedef struct {
433 RsvpObjHdr adspec_header;
434 IS_ADSPEC_BODY adspec_body;
435 } ADSPEC;
436
437 #define RSVP_PATH 1
438 #define RSVP_RESV 2
439 #define RSVP_PATH_ERR 3
440 #define RSVP_RESV_ERR 4
441 #define RSVP_PATH_TEAR 5
442 #define RSVP_RESV_TEAR 6
443
444 #define RSVP_Err_NONE 0
445 #define RSVP_Erv_Nonev 0
446
447 #define RSVP_Err_ADMISSION 1
448
449 #define RSVP_Erv_Other 0
450 #define RSVP_Erv_DelayBnd 1
451 #define RSVP_Erv_Bandwidth 2
452 #define RSVP_Erv_MTU 3
453
454 #define RSVP_Erv_Flow_Rate 0x8001
455 #define RSVP_Erv_Bucket_szie 0x8002
456 #define RSVP_Erv_Peak_Rate 0x8003
457 #define RSVP_Erv_Min_Policied_size 0x8004
458
459 #define RSVP_Err_POLICY 2
460
461 #define POLICY_ERRV_NO_MORE_INFO 1
462 #define POLICY_ERRV_UNSUPPORTED_CREDENTIAL_TYPE 2
463 #define POLICY_ERRV_INSUFFICIENT_PRIVILEGES 3
464 #define POLICY_ERRV_EXPIRED_CREDENTIALS 4
465 #define POLICY_ERRV_IDENTITY_CHANGED 5
466
467 #define POLICY_ERRV_UNKNOWN 0
468
469 #define POLICY_ERRV_GLOBAL_DEF_FLOW_COUNT 1
470 #define POLICY_ERRV_GLOBAL_GRP_FLOW_COUNT 2
471 #define POLICY_ERRV_GLOBAL_USER_FLOW_COUNT 3
472 #define POLICY_ERRV_GLOBAL_UNAUTH_USER_FLOW_COUNT 4
473 #define POLICY_ERRV_SUBNET_DEF_FLOW_COUNT 5
474 #define POLICY_ERRV_SUBNET_GRP_FLOW_COUNT 6
475 #define POLICY_ERRV_SUBNET_USER_FLOW_COUNT 7
476 #define POLICY_ERRV_SUBNET_UNAUTH_USER_FLOW_COUNT 8
477
478 #define POLICY_ERRV_GLOBAL_DEF_FLOW_DURATION 9
479 #define POLICY_ERRV_GLOBAL_GRP_FLOW_DURATION 10
480 #define POLICY_ERRV_GLOBAL_USER_FLOW_DURATION 11
481 #define POLICY_ERRV_GLOBAL_UNAUTH_USER_FLOW_DURATION 12
482 #define POLICY_ERRV_SUBNET_DEF_FLOW_DURATION 13
483 #define POLICY_ERRV_SUBNET_GRP_FLOW_DURATION 14
484 #define POLICY_ERRV_SUBNET_USER_FLOW_DURATION 15
485 #define POLICY_ERRV_SUBNET_UNAUTH_USER_FLOW_DURATION 16
486
487 #define POLICY_ERRV_GLOBAL_DEF_FLOW_RATE 17
488 #define POLICY_ERRV_GLOBAL_GRP_FLOW_RATE 18
489 #define POLICY_ERRV_GLOBAL_USER_FLOW_RATE 19
490 #define POLICY_ERRV_GLOBAL_UNAUTH_USER_FLOW_RATE 20
491 #define POLICY_ERRV_SUBNET_DEF_FLOW_RATE 21
492 #define POLICY_ERRV_SUBNET_GRP_FLOW_RATE 22
493 #define POLICY_ERRV_SUBNET_USER_FLOW_RATE 23
494 #define POLICY_ERRV_SUBNET_UNAUTH_USER_FLOW_RATE 24
495
496 #define POLICY_ERRV_GLOBAL_DEF_PEAK_RATE 25
497 #define POLICY_ERRV_GLOBAL_GRP_PEAK_RATE 26
498 #define POLICY_ERRV_GLOBAL_USER_PEAK_RATE 27
499 #define POLICY_ERRV_GLOBAL_UNAUTH_USER_PEAK_RATE 28
500 #define POLICY_ERRV_SUBNET_DEF_PEAK_RATE 29
501 #define POLICY_ERRV_SUBNET_GRP_PEAK_RATE 30
502 #define POLICY_ERRV_SUBNET_USER_PEAK_RATE 31
503 #define POLICY_ERRV_SUBNET_UNAUTH_USER_PEAK_RATE 32
504
505 #define POLICY_ERRV_GLOBAL_DEF_SUM_FLOW_RATE 33
506 #define POLICY_ERRV_GLOBAL_GRP_SUM_FLOW_RATE 34
507 #define POLICY_ERRV_GLOBAL_USER_SUM_FLOW_RATE 35
508 #define POLICY_ERRV_GLOBAL_UNAUTH_USER_SUM_FLOW_RATE 36
509 #define POLICY_ERRV_SUBNET_DEF_SUM_FLOW_RATE 37
510 #define POLICY_ERRV_SUBNET_GRP_SUM_FLOW_RATE 38
511 #define POLICY_ERRV_SUBNET_USER_SUM_FLOW_RATE 39
512 #define POLICY_ERRV_SUBNET_UNAUTH_USER_SUM_FLOW_RATE 40
513
514 #define POLICY_ERRV_GLOBAL_DEF_SUM_PEAK_RATE 41
515 #define POLICY_ERRV_GLOBAL_GRP_SUM_PEAK_RATE 42
516 #define POLICY_ERRV_GLOBAL_USER_SUM_PEAK_RATE 43
517 #define POLICY_ERRV_GLOBAL_UNAUTH_USER_SUM_PEAK_RATE 44
518 #define POLICY_ERRV_SUBNET_DEF_SUM_PEAK_RATE 45
519 #define POLICY_ERRV_SUBNET_GRP_SUM_PEAK_RATE 46
520 #define POLICY_ERRV_SUBNET_USER_SUM_PEAK_RATE 47
521 #define POLICY_ERRV_SUBNET_UNAUTH_USER_SUM_PEAK_RATE 48
522
523 #define POLICY_ERRV_UNKNOWN_USER 49
524 #define POLICY_ERRV_NO_PRIVILEGES 50
525 #define POLICY_ERRV_EXPIRED_USER_TOKEN 51
526 #define POLICY_ERRV_NO_RESOURCES 52
527 #define POLICY_ERRV_PRE_EMPTED 53
528 #define POLICY_ERRV_USER_CHANGED 54
529 #define POLICY_ERRV_NO_ACCEPTS 55
530 #define POLICY_ERRV_NO_MEMORY 56
531 #define POLICY_ERRV_CRAZY_FLOWSPEC 57
532
533 #define RSVP_Err_NO_PATH 3
534 #define RSVP_Err_NO_SENDER 4
535 #define RSVP_Err_BAD_STYLE 5
536 #define RSVP_Err_UNKNOWN_STYLE 6
537 #define RSVP_Err_BAD_DSTPORT 7
538 #define RSVP_Err_BAD_SNDPORT 8
539 #define RSVP_Err_AMBIG_FILTER 9
540 #define RSVP_Err_PREEMPTED 12
541 #define RSVP_Err_UNKN_OBJ_CLASS 13
542 #define RSVP_Err_UNKNOWN_CTYPE 14
543 #define RSVP_Err_API_ERROR 20
544 #define RSVP_Err_TC_ERROR 21
545
546 #define RSVP_Erv_Conflict_Serv 01
547 #define RSVP_Erv_No_Serv 02
548 #define RSVP_Erv_Crazy_Flowspec 03
549 #define RSVP_Erv_Crazy_Tspec 04
550
551 #define RSVP_Err_TC_SYS_ERROR 22
552
553 #define RSVP_Err_RSVP_SYS_ERROR 23
554
555 #define RSVP_Erv_MEMORY 1
556 #define RSVP_Erv_API 2
557
558 #define LPM_PE_USER_IDENTITY 2
559 #define LPM_PE_APP_IDENTITY 3
560
561 #define ERROR_NO_MORE_INFO 1
562 #define UNSUPPORTED_CREDENTIAL_TYPE 2
563 #define INSUFFICIENT_PRIVILEGES 3
564 #define EXPIRED_CREDENTIAL 4
565 #define IDENTITY_CHANGED 5
566
567 typedef struct {
568 USHORT usIdErrLength;
569 UCHAR ucAType;
570 UCHAR ucSubType;
571 USHORT usReserved;
572 USHORT usIdErrorValue;
573 UCHAR ucIdErrData[4];
574 } ID_ERROR_OBJECT;
575
576 #define ID_ERR_OBJ_HDR_LEN (sizeof(ID_ERROR_OBJECT) - 4 *sizeof(UCHAR))
577
578 DECLARE_HANDLE(LPM_HANDLE);
579 DECLARE_HANDLE(RHANDLE);
580
581 typedef ULONG LPV;
582 typedef USHORT PETYPE;
583
584 #define LPM_OK 0
585
586 typedef int MSG_TYPE;
587
588 typedef struct rsvpmsgobjs {
589 MSG_TYPE RsvpMsgType;
590 RSVP_SESSION *pRsvpSession;
591 RSVP_HOP *pRsvpFromHop;
592 RSVP_HOP *pRsvpToHop;
593 RESV_STYLE *pResvStyle;
594 RSVP_SCOPE *pRsvpScope;
595 int FlowDescCount;
596 FLOW_DESC *pFlowDescs;
597 int PdObjectCount;
598 POLICY_DATA **ppPdObjects;
599 ERROR_SPEC *pErrorSpec;
600 ADSPEC *pAdspec;
601 } RSVP_MSG_OBJS;
602
603 typedef void *(WINAPI *PALLOCMEM)(DWORD Size);
604 typedef void (WINAPI *PFREEMEM)(void *pv);
605
606 typedef struct policy_decision {
607 LPV lpvResult;
608 WORD wPolicyErrCode;
609 WORD wPolicyErrValue;
610 } POLICY_DECISION;
611
612 typedef ULONG *(CALLBACK *CBADMITRESULT)(LPM_HANDLE LpmHandle,RHANDLE RequestHandle,ULONG ulPcmActionFlags,int LpmError,int PolicyDecisionsCount,POLICY_DECISION *pPolicyDecisions);
613 typedef ULONG *(CALLBACK *CBGETRSVPOBJECTS)(LPM_HANDLE LpmHandle,RHANDLE RequestHandle,int LpmError,int RsvpObjectsCount,RsvpObjHdr **ppRsvpObjects);
614
615 #define INV_LPM_HANDLE 1
616 #define LPM_TIME_OUT 2
617 #define INV_REQ_HANDLE 3
618 #define DUP_RESULTS 4
619 #define INV_RESULTS 5
620
621 typedef struct lpminitinfo {
622 DWORD PcmVersionNumber;
623 DWORD ResultTimeLimit;
624 int ConfiguredLpmCount;
625 PALLOCMEM AllocMemory;
626 PFREEMEM FreeMemory;
627 CBADMITRESULT PcmAdmitResultCallback;
628 CBGETRSVPOBJECTS GetRsvpObjectsCallback;
629 } LPM_INIT_INFO;
630
631 #define LPM_PE_ALL_TYPES 0
632 #define LPM_API_VERSION_1 1
633
634 #define PCM_VERSION_1 1
635
636 ULONG WINAPI LPM_Initialize(LPM_HANDLE LpmHandle,LPM_INIT_INFO *pLpmInitInfo,DWORD *pLpmVersionNumber,PETYPE *pSupportedPeType,VOID *Reserved);
637 ULONG WINAPI LPM_Deinitialize(LPM_HANDLE LpmHandle);
638
639 #define LPV_RESERVED 0
640 #define LPV_MIN_PRIORITY 1
641 #define LPV_MAX_PRIORITY 0xFF00
642 #define LPV_DROP_MSG 0xFFFD
643 #define LPV_DONT_CARE 0xFFFE
644 #define LPV_REJECT 0xFFFF
645
646 #define FORCE_IMMEDIATE_REFRESH 1
647
648 #define LPM_RESULT_READY 0
649 #define LPM_RESULT_DEFER 1
650
651 ULONG WINAPI LPM_AdmitRsvpMsg(RHANDLE PcmReqHandle,RSVP_HOP *pRecvdIntf,RSVP_MSG_OBJS *pRsvpMsgObjs,int RcvdRsvpMsgLength,UCHAR *RcvdRsvpMsg,ULONG *pulPcmActionFlags,POLICY_DECISION *pPolicyDecisions,void *Reserved);
652 ULONG WINAPI LPM_GetRsvpObjects(RHANDLE PcmReqHandle,ULONG MaxPdSize,RSVP_HOP *SendingIntfAddr,RSVP_MSG_OBJS *pRsvpMsgObjs,int *pRsvpObjectsCount,RsvpObjHdr ***pppRsvpObjects,void *Reserved);
653
654 #define RCVD_PATH_TEAR 1
655 #define RCVD_RESV_TEAR 2
656 #define ADM_CTRL_FAILED 3
657 #define STATE_TIMEOUT 4
658 #define FLOW_DURATION 5
659
660 VOID WINAPI LPM_DeleteState(RSVP_HOP *pRcvdIfAddr,MSG_TYPE RsvpMsgType,RSVP_SESSION *pRsvpSession,RSVP_HOP *pRsvpFromHop,RESV_STYLE *pResvStyle,int FilterSpecCount,FILTER_SPEC **ppFilterSpecList,int TearDownReason);
661
662 typedef struct lpmiptable {
663 ULONG ulIfIndex;
664 ULONG MediaType;
665 IN_ADDR IfIpAddr;
666 IN_ADDR IfNetMask;
667 } LPMIPTABLE;
668
669 WINBOOL WINAPI LPM_IpAddressTable (ULONG cIpAddrTable,LPMIPTABLE *pIpAddrTable);
670
671 #define RESOURCES_ALLOCATED 1
672 #define RESOURCES_MODIFIED 2
673
674 VOID WINAPI LPM_CommitResv (RSVP_SESSION *RsvpSession,RSVP_HOP *FlowInstalledIntf,RESV_STYLE *RsvpStyle,int FilterSpecCount,FILTER_SPEC **ppFilterSpecList,IS_FLOWSPEC *pMergedFlowSpec,ULONG CommitDecision);
675
676 #ifdef __cplusplus
677 }
678 #endif
679 #endif