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 #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 680