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 10 extern "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 688