diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fuhtark_test/include/winapi/lpmapi.h	Wed Nov 26 21:36:48 2025 +0700
@@ -0,0 +1,679 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+#ifndef __LPMAPI_H_
+#define __LPMAPI_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef CALLBACK
+#define CALLBACK __stdcall
+#endif
+
+#ifndef WINAPI
+#define WINAPI __stdcall
+#endif
+
+#ifndef APIENTRY
+#define APIENTRY WINAPI
+#endif
+
+  typedef struct {
+    USHORT obj_length;
+    UCHAR obj_class;
+    UCHAR obj_ctype;
+  } RsvpObjHdr;
+
+#define ObjLength(x) ((RsvpObjHdr *)x)->obj_length
+#define ObjCType(x) ((RsvpObjHdr *)x)->obj_ctype
+#define ObjClass(x) ((RsvpObjHdr *)x)->obj_class
+#define ObjData(x) ((RsvpObjHdr *)(x)+1)
+
+#define class_NULL 0
+#define class_SESSION 1
+#define class_SESSION_GROUP 2
+#define class_RSVP_HOP 3
+#define class_INTEGRITY 4
+#define class_TIME_VALUES 5
+#define class_ERROR_SPEC 6
+#define class_SCOPE 7
+#define class_STYLE 8
+#define class_FLOWSPEC 9
+#define class_IS_FLOWSPEC 9
+#define class_FILTER_SPEC 10
+#define class_SENDER_TEMPLATE 11
+#define class_SENDER_TSPEC 12
+#define class_ADSPEC 13
+#define class_POLICY_DATA 14
+#define class_CONFIRM 15
+#define class_MAX 15
+
+#define ctype_SESSION_ipv4 1
+#define ctype_SESSION_ipv4GPI 3
+
+#define SESSFLG_E_Police 0x01
+
+  typedef struct {
+    IN_ADDR sess_destaddr;
+    UCHAR sess_protid;
+    UCHAR sess_flags;
+    USHORT sess_destport;
+  } Session_IPv4;
+
+  typedef struct {
+    RsvpObjHdr sess_header;
+    union {
+      Session_IPv4 sess_ipv4;
+    } sess_u;
+  } RSVP_SESSION;
+
+#define Sess4Addr sess_u.sess_ipv4.sess_destaddr
+#define Sess4Port sess_u.sess_ipv4.sess_destport
+#define Sess4Protocol sess_u.sess_ipv4.sess_protid
+#define Sess4Flags sess_u.sess_ipv4.sess_flags
+
+#define ctype_RSVP_HOP_ipv4 1
+
+  typedef struct {
+    IN_ADDR hop_ipaddr;
+    ULONG hop_LIH;
+  } Rsvp_Hop_IPv4;
+
+  typedef struct {
+    RsvpObjHdr hop_header;
+    union {
+      Rsvp_Hop_IPv4 hop_ipv4;
+    } hop_u;
+  } RSVP_HOP;
+
+#define Hop4LIH hop_u.hop_ipv4.hop_LIH
+#define Hop4Addr hop_u.hop_ipv4.hop_ipaddr
+
+#define Opt_Share_mask 0x00000018
+#define Opt_Distinct 0x00000008
+#define Opt_Shared 0x00000010
+
+#define Opt_SndSel_mask 0x00000007
+#define Opt_Wildcard 0x00000001
+#define Opt_Explicit 0x00000002
+
+#define Style_is_Wildcard(p) (((p)&Opt_SndSel_mask)==Opt_Wildcard)
+#define Style_is_Shared(p) (((p)&Opt_Share_mask)==Opt_Shared)
+
+#define STYLE_WF Opt_Shared + Opt_Wildcard
+#define STYLE_FF Opt_Distinct + Opt_Explicit
+#define STYLE_SE Opt_Shared + Opt_Explicit
+
+#define ctype_STYLE 1
+
+  typedef struct {
+    RsvpObjHdr style_header;
+    ULONG style_word;
+  } RESV_STYLE;
+
+#define ctype_FILTER_SPEC_ipv4 1
+#define ctype_FILTER_SPEC_ipv4GPI 4
+
+  typedef struct {
+    IN_ADDR filt_ipaddr;
+    USHORT filt_unused;
+    USHORT filt_port;
+  } Filter_Spec_IPv4;
+
+  typedef struct {
+    IN_ADDR filt_ipaddr;
+    ULONG filt_gpi;
+  } Filter_Spec_IPv4GPI;
+
+  typedef struct {
+    RsvpObjHdr filt_header;
+    union {
+      Filter_Spec_IPv4 filt_ipv4;
+      Filter_Spec_IPv4GPI filt_ipv4gpi;
+    } filt_u;
+  } FILTER_SPEC;
+
+#define FilterSrcaddr filt_u.filt_ipv4.filt_ipaddr
+#define FilterSrcport filt_u.filt_ipv4.filt_port
+
+#define ctype_SENDER_TEMPLATE_ipv4 1
+#define ctype_SENDER_TEMPLATE_ipv4GPI 4
+
+  typedef FILTER_SPEC SENDER_TEMPLATE;
+
+#define ctype_SCOPE_list_ipv4 1
+
+  typedef struct {
+    IN_ADDR scopl_ipaddr[1];
+  } Scope_list_ipv4;
+
+  typedef struct {
+    RsvpObjHdr scopl_header;
+    union {
+      Scope_list_ipv4 scopl_ipv4;
+    } scope_u;
+  } RSVP_SCOPE;
+
+#define Scope4Addr scope_u.scopl_ipv4.scopl_ipaddr
+#define ScopeCnt(scp) ((ObjLength(scp)-sizeof(RsvpObjHdr))/sizeof(struct in_addr))
+#define ScopeLen(cnt) (cnt*sizeof(struct in_addr)+sizeof(RsvpObjHdr))
+
+#define ctype_ERROR_SPEC_ipv4 1
+
+#define ERROR_SPECF_InPlace 0x01
+#define ERROR_SPECF_NotGuilty 0x02
+
+#define ERR_FORWARD_OK 0x8000
+#define Error_Usage(x) (((x)>>12)&3)
+#define ERR_Usage_globl 0x00
+#define ERR_Usage_local 0x10
+#define ERR_Usage_serv 0x11
+#define ERR_global_mask 0x0fff
+
+  typedef struct {
+    struct in_addr errs_errnode;
+    u_char errs_flags;
+    UCHAR errs_code;
+    USHORT errs_value;
+  } Error_Spec_IPv4;
+
+  typedef struct {
+    RsvpObjHdr errs_header;
+    union {
+      Error_Spec_IPv4 errs_ipv4;
+    } errs_u;
+  } ERROR_SPEC;
+
+#define errspec4_enode errs_u.errs_ipv4.errs_errnode
+#define errspec4_code errs_u.errs_ipv4.errs_code
+#define errspec4_value errs_u.errs_ipv4.errs_value
+#define errspec4_flags errs_u.errs_ipv4.errs_flags
+
+#define ctype_POLICY_DATA 1
+
+  typedef struct {
+    RsvpObjHdr PolicyObjHdr;
+    USHORT usPeOffset;
+    USHORT usReserved;
+  } POLICY_DATA;
+
+#define PD_HDR_LEN sizeof(POLICY_DATA)
+
+  typedef struct {
+    USHORT usPeLength;
+    USHORT usPeType;
+    UCHAR ucPeData[4];
+  } POLICY_ELEMENT;
+
+#define PE_HDR_LEN (2 *sizeof(USHORT))
+
+#define GENERAL_INFO 1
+#define GUARANTEED_SERV 2
+#define PREDICTIVE_SERV 3
+#define CONTROLLED_DELAY_SERV 4
+#define CONTROLLED_LOAD_SERV 5
+#define QUALITATIVE_SERV 6
+
+  enum int_serv_wkp {
+    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
+  };
+
+  typedef struct {
+    UCHAR ismh_version;
+    UCHAR ismh_unused;
+    USHORT ismh_len32b;
+  } IntServMainHdr;
+
+#define INTSERV_VERS_MASK 0xf0
+#define INTSERV_VERSION0 0
+#define Intserv_Version(x) (((x)&INTSERV_VERS_MASK)>>4)
+#define Intserv_Version_OK(x) (((x)->ismh_version&INTSERV_VERS_MASK)== INTSERV_VERSION0)
+#define Intserv_Obj_size(x) (((IntServMainHdr *)(x))->ismh_len32b *4 + sizeof(IntServMainHdr) + sizeof(RsvpObjHdr))
+
+#define ISSH_BREAK_BIT 0x80
+
+  typedef struct {
+    UCHAR issh_service;
+    UCHAR issh_flags;
+    USHORT issh_len32b;
+  } IntServServiceHdr;
+
+#define Issh_len32b(p) ((p)->issh_len32b)
+
+#define ISPH_FLG_INV 0x80
+
+  typedef struct {
+    UCHAR isph_parm_num;
+    UCHAR isph_flags;
+    USHORT isph_len32b;
+  } IntServParmHdr;
+
+#define Next_Main_Hdr(p) (IntServMainHdr *)((ULONG *)(p)+1+(p)->ismh_len32b)
+#define Next_Serv_Hdr(p) (IntServServiceHdr *)((ULONG *)(p)+1+(p)->issh_len32b)
+#define Next_Parm_Hdr(p) (IntServParmHdr *)((ULONG *)(p)+1+(p)->isph_len32b)
+
+  typedef struct {
+    FLOAT TB_Tspec_r;
+    FLOAT TB_Tspec_b;
+    FLOAT TB_Tspec_p;
+    ULONG TB_Tspec_m;
+    ULONG TB_Tspec_M;
+  } GenTspecParms;
+
+  typedef struct {
+    IntServServiceHdr gen_Tspec_serv_hdr;
+    IntServParmHdr gen_Tspec_parm_hdr;
+    GenTspecParms gen_Tspec_parms;
+  } GenTspec;
+
+#define gtspec_r gen_Tspec_parms.TB_Tspec_r
+#define gtspec_b gen_Tspec_parms.TB_Tspec_b
+#define gtspec_m gen_Tspec_parms.TB_Tspec_m
+#define gtspec_M gen_Tspec_parms.TB_Tspec_M
+#define gtspec_p gen_Tspec_parms.TB_Tspec_p
+#define gtspec_parmno gen_Tspec_parm_hdr.isph_parm_num
+#define gtspec_flags gen_Tspec_parm_hdr.isph_flags
+#define gtspec_len (sizeof(GenTspec) - sizeof(IntServServiceHdr))
+
+  typedef struct {
+    ULONG TB_Tspec_M;
+  } QualTspecParms;
+
+  typedef struct {
+    IntServServiceHdr qual_Tspec_serv_hdr;
+    IntServParmHdr qual_Tspec_parm_hdr;
+    QualTspecParms qual_Tspec_parms;
+  } QualTspec;
+
+  typedef struct {
+    IntServServiceHdr Q_spec_serv_hdr;
+    IntServParmHdr Q_spec_parm_hdr;
+    QualTspecParms Q_spec_parms;
+  } QualAppFlowSpec;
+
+#define QAspec_M Q_spec_parms.TB_Tspec_M
+
+  typedef struct {
+    IntServMainHdr st_mh;
+    union {
+      GenTspec gen_stspec;
+      QualTspec qual_stspec;
+    } tspec_u;
+  } IntServTspecBody;
+
+#define ctype_SENDER_TSPEC 2
+
+  typedef struct {
+    RsvpObjHdr stspec_header;
+    IntServTspecBody stspec_body;
+  } SENDER_TSPEC;
+
+  typedef struct {
+    IntServServiceHdr CL_spec_serv_hdr;
+    IntServParmHdr CL_spec_parm_hdr;
+    GenTspecParms CL_spec_parms;
+  } CtrlLoadFlowspec;
+
+#define CLspec_r CL_spec_parms.TB_Tspec_r
+#define CLspec_b CL_spec_parms.TB_Tspec_b
+#define CLspec_p CL_spec_parms.TB_Tspec_p
+#define CLspec_m CL_spec_parms.TB_Tspec_m
+#define CLspec_M CL_spec_parms.TB_Tspec_M
+#define CLspec_parmno CL_spec_parm_hdr.isph_parm_num
+#define CLspec_flags CL_spec_parm_hdr.isph_flags
+#define CLspec_len32b CL_spec_parm_hdr.isph_len32b
+#define CLspec_len (sizeof(CtrlLoadFlowspec) - sizeof(IntServServiceHdr))
+
+  enum {
+    IS_GUAR_RSPEC = 130,GUAR_ADSPARM_C = 131,GUAR_ADSPARM_D = 132,GUAR_ADSPARM_Ctot = 133,GUAR_ADSPARM_Dtot = 134,GUAR_ADSPARM_Csum = 135,
+    GUAR_ADSPARM_Dsum = 136
+  };
+
+  typedef struct {
+    FLOAT Guar_R;
+    ULONG Guar_S;
+  } GuarRspec;
+
+  typedef struct {
+    IntServServiceHdr Guar_serv_hdr;
+    IntServParmHdr Guar_Tspec_hdr;
+    GenTspecParms Guar_Tspec_parms;
+    IntServParmHdr Guar_Rspec_hdr;
+    GuarRspec Guar_Rspec;
+  } GuarFlowSpec;
+
+#define Gspec_r Guar_Tspec_parms.TB_Tspec_r
+#define Gspec_b Guar_Tspec_parms.TB_Tspec_b
+#define Gspec_p Guar_Tspec_parms.TB_Tspec_p
+#define Gspec_m Guar_Tspec_parms.TB_Tspec_m
+#define Gspec_M Guar_Tspec_parms.TB_Tspec_M
+#define Gspec_R Guar_Rspec.Guar_R
+#define Gspec_S Guar_Rspec.Guar_S
+#define Gspec_T_parmno Guar_Tspec_hdr.isph_parm_num
+#define Gspec_T_flags Guar_Tspec_hdr.isph_flags
+#define Gspec_R_parmno Guar_Rspec_hdr.isph_parm_num
+#define Gspec_R_flags Guar_Rspec_hdr.isph_flags
+#define Gspec_len (sizeof(GuarFlowSpec) - sizeof(IntServServiceHdr))
+
+  typedef struct {
+    IntServMainHdr spec_mh;
+    union {
+      CtrlLoadFlowspec CL_spec;
+      GuarFlowSpec G_spec;
+      QualAppFlowSpec Q_spec;
+    } spec_u;
+  } IntServFlowSpec;
+
+#define ISmh_len32b spec_mh.ismh_len32b
+#define ISmh_version spec_mh.ismh_version
+#define ISmh_unused spec_mh.ismh_unused
+
+#define ctype_FLOWSPEC_Intserv0 2
+
+  typedef struct {
+    RsvpObjHdr flow_header;
+    IntServFlowSpec flow_body;
+  } IS_FLOWSPEC;
+
+  typedef struct flow_desc {
+    union {
+      SENDER_TSPEC *stspec;
+      IS_FLOWSPEC *isflow;
+    } u1;
+    union {
+      SENDER_TEMPLATE *stemp;
+      FILTER_SPEC *fspec;
+    } u2;
+  } FLOW_DESC;
+
+#define FdSenderTspec u1.stspec
+#define FdIsFlowSpec u1.isflow
+
+#define FdSenderTemplate u2.stemp
+#define FdFilterSpec u2.fspec
+
+#define ctype_ADSPEC_INTSERV 2
+
+  typedef struct {
+    IntServServiceHdr Gads_serv_hdr;
+    IntServParmHdr Gads_Ctot_hdr;
+    ULONG Gads_Ctot;
+    IntServParmHdr Gads_Dtot_hdr;
+    ULONG Gads_Dtot;
+    IntServParmHdr Gads_Csum_hdr;
+    ULONG Gads_Csum;
+    IntServParmHdr Gads_Dsum_hdr;
+    ULONG Gads_Dsum;
+  } Gads_parms_t;
+
+  typedef struct {
+    IntServServiceHdr gen_parm_hdr;
+    IntServParmHdr gen_parm_hopcnt_hdr;
+    ULONG gen_parm_hopcnt;
+    IntServParmHdr gen_parm_pathbw_hdr;
+    FLOAT gen_parm_path_bw;
+    IntServParmHdr gen_parm_minlat_hdr;
+    ULONG gen_parm_min_latency;
+    IntServParmHdr gen_parm_compmtu_hdr;
+    ULONG gen_parm_composed_MTU;
+  } GenAdspecParams;
+
+  typedef struct {
+    IntServMainHdr adspec_mh;
+    GenAdspecParams adspec_genparms;
+  } IS_ADSPEC_BODY;
+
+#define GEN_ADSPEC_LEN (sizeof(Object_header) + sizeof(IS_adsbody_t))
+
+  typedef struct {
+    RsvpObjHdr adspec_header;
+    IS_ADSPEC_BODY adspec_body;
+  } ADSPEC;
+
+#define RSVP_PATH 1
+#define RSVP_RESV 2
+#define RSVP_PATH_ERR 3
+#define RSVP_RESV_ERR 4
+#define RSVP_PATH_TEAR 5
+#define RSVP_RESV_TEAR 6
+
+#define RSVP_Err_NONE 0
+#define RSVP_Erv_Nonev 0
+
+#define RSVP_Err_ADMISSION 1
+
+#define RSVP_Erv_Other 0
+#define RSVP_Erv_DelayBnd 1
+#define RSVP_Erv_Bandwidth 2
+#define RSVP_Erv_MTU 3
+
+#define RSVP_Erv_Flow_Rate 0x8001
+#define RSVP_Erv_Bucket_szie 0x8002
+#define RSVP_Erv_Peak_Rate 0x8003
+#define RSVP_Erv_Min_Policied_size 0x8004
+
+#define RSVP_Err_POLICY 2
+
+#define POLICY_ERRV_NO_MORE_INFO 1
+#define POLICY_ERRV_UNSUPPORTED_CREDENTIAL_TYPE 2
+#define POLICY_ERRV_INSUFFICIENT_PRIVILEGES 3
+#define POLICY_ERRV_EXPIRED_CREDENTIALS 4
+#define POLICY_ERRV_IDENTITY_CHANGED 5
+
+#define POLICY_ERRV_UNKNOWN 0
+
+#define POLICY_ERRV_GLOBAL_DEF_FLOW_COUNT 1
+#define POLICY_ERRV_GLOBAL_GRP_FLOW_COUNT 2
+#define POLICY_ERRV_GLOBAL_USER_FLOW_COUNT 3
+#define POLICY_ERRV_GLOBAL_UNAUTH_USER_FLOW_COUNT 4
+#define POLICY_ERRV_SUBNET_DEF_FLOW_COUNT 5
+#define POLICY_ERRV_SUBNET_GRP_FLOW_COUNT 6
+#define POLICY_ERRV_SUBNET_USER_FLOW_COUNT 7
+#define POLICY_ERRV_SUBNET_UNAUTH_USER_FLOW_COUNT 8
+
+#define POLICY_ERRV_GLOBAL_DEF_FLOW_DURATION 9
+#define POLICY_ERRV_GLOBAL_GRP_FLOW_DURATION 10
+#define POLICY_ERRV_GLOBAL_USER_FLOW_DURATION 11
+#define POLICY_ERRV_GLOBAL_UNAUTH_USER_FLOW_DURATION 12
+#define POLICY_ERRV_SUBNET_DEF_FLOW_DURATION 13
+#define POLICY_ERRV_SUBNET_GRP_FLOW_DURATION 14
+#define POLICY_ERRV_SUBNET_USER_FLOW_DURATION 15
+#define POLICY_ERRV_SUBNET_UNAUTH_USER_FLOW_DURATION 16
+
+#define POLICY_ERRV_GLOBAL_DEF_FLOW_RATE 17
+#define POLICY_ERRV_GLOBAL_GRP_FLOW_RATE 18
+#define POLICY_ERRV_GLOBAL_USER_FLOW_RATE 19
+#define POLICY_ERRV_GLOBAL_UNAUTH_USER_FLOW_RATE 20
+#define POLICY_ERRV_SUBNET_DEF_FLOW_RATE 21
+#define POLICY_ERRV_SUBNET_GRP_FLOW_RATE 22
+#define POLICY_ERRV_SUBNET_USER_FLOW_RATE 23
+#define POLICY_ERRV_SUBNET_UNAUTH_USER_FLOW_RATE 24
+
+#define POLICY_ERRV_GLOBAL_DEF_PEAK_RATE 25
+#define POLICY_ERRV_GLOBAL_GRP_PEAK_RATE 26
+#define POLICY_ERRV_GLOBAL_USER_PEAK_RATE 27
+#define POLICY_ERRV_GLOBAL_UNAUTH_USER_PEAK_RATE 28
+#define POLICY_ERRV_SUBNET_DEF_PEAK_RATE 29
+#define POLICY_ERRV_SUBNET_GRP_PEAK_RATE 30
+#define POLICY_ERRV_SUBNET_USER_PEAK_RATE 31
+#define POLICY_ERRV_SUBNET_UNAUTH_USER_PEAK_RATE 32
+
+#define POLICY_ERRV_GLOBAL_DEF_SUM_FLOW_RATE 33
+#define POLICY_ERRV_GLOBAL_GRP_SUM_FLOW_RATE 34
+#define POLICY_ERRV_GLOBAL_USER_SUM_FLOW_RATE 35
+#define POLICY_ERRV_GLOBAL_UNAUTH_USER_SUM_FLOW_RATE 36
+#define POLICY_ERRV_SUBNET_DEF_SUM_FLOW_RATE 37
+#define POLICY_ERRV_SUBNET_GRP_SUM_FLOW_RATE 38
+#define POLICY_ERRV_SUBNET_USER_SUM_FLOW_RATE 39
+#define POLICY_ERRV_SUBNET_UNAUTH_USER_SUM_FLOW_RATE 40
+
+#define POLICY_ERRV_GLOBAL_DEF_SUM_PEAK_RATE 41
+#define POLICY_ERRV_GLOBAL_GRP_SUM_PEAK_RATE 42
+#define POLICY_ERRV_GLOBAL_USER_SUM_PEAK_RATE 43
+#define POLICY_ERRV_GLOBAL_UNAUTH_USER_SUM_PEAK_RATE 44
+#define POLICY_ERRV_SUBNET_DEF_SUM_PEAK_RATE 45
+#define POLICY_ERRV_SUBNET_GRP_SUM_PEAK_RATE 46
+#define POLICY_ERRV_SUBNET_USER_SUM_PEAK_RATE 47
+#define POLICY_ERRV_SUBNET_UNAUTH_USER_SUM_PEAK_RATE 48
+
+#define POLICY_ERRV_UNKNOWN_USER 49
+#define POLICY_ERRV_NO_PRIVILEGES 50
+#define POLICY_ERRV_EXPIRED_USER_TOKEN 51
+#define POLICY_ERRV_NO_RESOURCES 52
+#define POLICY_ERRV_PRE_EMPTED 53
+#define POLICY_ERRV_USER_CHANGED 54
+#define POLICY_ERRV_NO_ACCEPTS 55
+#define POLICY_ERRV_NO_MEMORY 56
+#define POLICY_ERRV_CRAZY_FLOWSPEC 57
+
+#define RSVP_Err_NO_PATH 3
+#define RSVP_Err_NO_SENDER 4
+#define RSVP_Err_BAD_STYLE 5
+#define RSVP_Err_UNKNOWN_STYLE 6
+#define RSVP_Err_BAD_DSTPORT 7
+#define RSVP_Err_BAD_SNDPORT 8
+#define RSVP_Err_AMBIG_FILTER 9
+#define RSVP_Err_PREEMPTED 12
+#define RSVP_Err_UNKN_OBJ_CLASS 13
+#define RSVP_Err_UNKNOWN_CTYPE 14
+#define RSVP_Err_API_ERROR 20
+#define RSVP_Err_TC_ERROR 21
+
+#define RSVP_Erv_Conflict_Serv 01
+#define RSVP_Erv_No_Serv 02
+#define RSVP_Erv_Crazy_Flowspec 03
+#define RSVP_Erv_Crazy_Tspec 04
+
+#define RSVP_Err_TC_SYS_ERROR 22
+
+#define RSVP_Err_RSVP_SYS_ERROR 23
+
+#define RSVP_Erv_MEMORY 1
+#define RSVP_Erv_API 2
+
+#define LPM_PE_USER_IDENTITY 2
+#define LPM_PE_APP_IDENTITY 3
+
+#define ERROR_NO_MORE_INFO 1
+#define UNSUPPORTED_CREDENTIAL_TYPE 2
+#define INSUFFICIENT_PRIVILEGES 3
+#define EXPIRED_CREDENTIAL 4
+#define IDENTITY_CHANGED 5
+
+  typedef struct {
+    USHORT usIdErrLength;
+    UCHAR ucAType;
+    UCHAR ucSubType;
+    USHORT usReserved;
+    USHORT usIdErrorValue;
+    UCHAR ucIdErrData[4];
+  } ID_ERROR_OBJECT;
+
+#define ID_ERR_OBJ_HDR_LEN (sizeof(ID_ERROR_OBJECT) - 4 *sizeof(UCHAR))
+
+  DECLARE_HANDLE(LPM_HANDLE);
+  DECLARE_HANDLE(RHANDLE);
+
+  typedef ULONG LPV;
+  typedef USHORT PETYPE;
+
+#define LPM_OK 0
+
+  typedef int MSG_TYPE;
+
+  typedef struct rsvpmsgobjs {
+    MSG_TYPE RsvpMsgType;
+    RSVP_SESSION *pRsvpSession;
+    RSVP_HOP *pRsvpFromHop;
+    RSVP_HOP *pRsvpToHop;
+    RESV_STYLE *pResvStyle;
+    RSVP_SCOPE *pRsvpScope;
+    int FlowDescCount;
+    FLOW_DESC *pFlowDescs;
+    int PdObjectCount;
+    POLICY_DATA **ppPdObjects;
+    ERROR_SPEC *pErrorSpec;
+    ADSPEC *pAdspec;
+  } RSVP_MSG_OBJS;
+
+  typedef void *(WINAPI *PALLOCMEM)(DWORD Size);
+  typedef void (WINAPI *PFREEMEM)(void *pv);
+
+  typedef struct policy_decision {
+    LPV lpvResult;
+    WORD wPolicyErrCode;
+    WORD wPolicyErrValue;
+  } POLICY_DECISION;
+
+  typedef ULONG *(CALLBACK *CBADMITRESULT)(LPM_HANDLE LpmHandle,RHANDLE RequestHandle,ULONG ulPcmActionFlags,int LpmError,int PolicyDecisionsCount,POLICY_DECISION *pPolicyDecisions);
+  typedef ULONG *(CALLBACK *CBGETRSVPOBJECTS)(LPM_HANDLE LpmHandle,RHANDLE RequestHandle,int LpmError,int RsvpObjectsCount,RsvpObjHdr **ppRsvpObjects);
+
+#define INV_LPM_HANDLE 1
+#define LPM_TIME_OUT 2
+#define INV_REQ_HANDLE 3
+#define DUP_RESULTS 4
+#define INV_RESULTS 5
+
+  typedef struct lpminitinfo {
+    DWORD PcmVersionNumber;
+    DWORD ResultTimeLimit;
+    int ConfiguredLpmCount;
+    PALLOCMEM AllocMemory;
+    PFREEMEM FreeMemory;
+    CBADMITRESULT PcmAdmitResultCallback;
+    CBGETRSVPOBJECTS GetRsvpObjectsCallback;
+  } LPM_INIT_INFO;
+
+#define LPM_PE_ALL_TYPES 0
+#define LPM_API_VERSION_1 1
+
+#define PCM_VERSION_1 1
+
+  ULONG WINAPI LPM_Initialize(LPM_HANDLE LpmHandle,LPM_INIT_INFO *pLpmInitInfo,DWORD *pLpmVersionNumber,PETYPE *pSupportedPeType,VOID *Reserved);
+  ULONG WINAPI LPM_Deinitialize(LPM_HANDLE LpmHandle);
+
+#define LPV_RESERVED 0
+#define LPV_MIN_PRIORITY 1
+#define LPV_MAX_PRIORITY 0xFF00
+#define LPV_DROP_MSG 0xFFFD
+#define LPV_DONT_CARE 0xFFFE
+#define LPV_REJECT 0xFFFF
+
+#define FORCE_IMMEDIATE_REFRESH 1
+
+#define LPM_RESULT_READY 0
+#define LPM_RESULT_DEFER 1
+
+  ULONG WINAPI LPM_AdmitRsvpMsg(RHANDLE PcmReqHandle,RSVP_HOP *pRecvdIntf,RSVP_MSG_OBJS *pRsvpMsgObjs,int RcvdRsvpMsgLength,UCHAR *RcvdRsvpMsg,ULONG *pulPcmActionFlags,POLICY_DECISION *pPolicyDecisions,void *Reserved);
+  ULONG WINAPI LPM_GetRsvpObjects(RHANDLE PcmReqHandle,ULONG MaxPdSize,RSVP_HOP *SendingIntfAddr,RSVP_MSG_OBJS *pRsvpMsgObjs,int *pRsvpObjectsCount,RsvpObjHdr ***pppRsvpObjects,void *Reserved);
+
+#define RCVD_PATH_TEAR 1
+#define RCVD_RESV_TEAR 2
+#define ADM_CTRL_FAILED 3
+#define STATE_TIMEOUT 4
+#define FLOW_DURATION 5
+
+  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);
+
+  typedef struct lpmiptable {
+    ULONG ulIfIndex;
+    ULONG MediaType;
+    IN_ADDR IfIpAddr;
+    IN_ADDR IfNetMask;
+  } LPMIPTABLE;
+
+  WINBOOL WINAPI LPM_IpAddressTable (ULONG cIpAddrTable,LPMIPTABLE *pIpAddrTable);
+
+#define RESOURCES_ALLOCATED 1
+#define RESOURCES_MODIFIED 2
+
+  VOID WINAPI LPM_CommitResv (RSVP_SESSION *RsvpSession,RSVP_HOP *FlowInstalledIntf,RESV_STYLE *RsvpStyle,int FilterSpecCount,FILTER_SPEC **ppFilterSpecList,IS_FLOWSPEC *pMergedFlowSpec,ULONG CommitDecision);
+
+#ifdef __cplusplus
+}
+#endif
+#endif