source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/lpmapi.h@ 1186

Last change on this file since 1186 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

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