lpmapi.h 18 KB

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