123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656 |
- {******************************************************************************}
- { }
- { Winsock2 RSVP/LPM API interface Unit for Object Pascal }
- { }
- { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
- { Corporation. All Rights Reserved. }
- { }
- { The original file is: lpmapi.h, released June 2000. The original Pascal }
- { code is: LpmApi.pas, released December 2000. The initial developer of the }
- { Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
- { }
- { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
- { Marcel van Brakel. All Rights Reserved. }
- { }
- { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
- { }
- { You may retrieve the latest version of this file at the Project JEDI }
- { APILIB home page, located at http://jedi-apilib.sourceforge.net }
- { }
- { The contents of this file are used with permission, subject to the Mozilla }
- { Public License Version 1.1 (the "License"); you may not use this file except }
- { in compliance with the License. You may obtain a copy of the License at }
- { http://www.mozilla.org/MPL/MPL-1.1.html }
- { }
- { Software distributed under the License is distributed on an "AS IS" basis, }
- { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
- { the specific language governing rights and limitations under the License. }
- { }
- { Alternatively, the contents of this file may be used under the terms of the }
- { GNU Lesser General Public License (the "LGPL License"), in which case the }
- { provisions of the LGPL License are applicable instead of those above. }
- { If you wish to allow use of your version of this file only under the terms }
- { of the LGPL License and not to allow others to use your version of this file }
- { under the MPL, indicate your decision by deleting the provisions above and }
- { replace them with the notice and other provisions required by the LGPL }
- { License. If you do not delete the provisions above, a recipient may use }
- { your version of this file under either the MPL or the LGPL License. }
- { }
- { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
- { }
- {******************************************************************************}
- unit JwaLpmApi;
- {$WEAKPACKAGEUNIT}
- {$HPPEMIT ''}
- {$HPPEMIT '#include "lpmapi.h"'}
- {$HPPEMIT ''}
- {$I jediapilib.inc}
- interface
- uses
- JwaWinSock2, JwaWinType;
- type
- FLOAT = Single;
- {$NODEFINE FLOAT}
- (****************************************************************************
- RSVPD -- ReSerVation Protocol Daemon
- USC Information Sciences Institute
- Marina del Rey, California
- Original Version: Shai Herzog, Nov. 1993.
- Current Version: Steven Berson & Bob Braden, may 1996.
- Copyright (c) 1996 by the University of Southern California
- All rights reserved.
- Permission to use, copy, modify, and distribute this software and its
- documentation in source and binary forms for any purpose and without
- fee is hereby granted, provided that both the above copyright notice
- and this permission notice appear in all copies, and that any
- documentation, advertising materials, and other materials related to
- such distribution and use acknowledge that the software was developed
- in part by the University of Southern California, Information
- Sciences Institute. The name of the University may not be used to
- endorse or promote products derived from this software without
- specific prior written permission.
- THE UNIVERSITY OF SOUTHERN CALIFORNIA makes no representations about
- the suitability of this software for any purpose. THIS SOFTWARE IS
- PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES,
- INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- Other copyrights might apply to parts of this software and are so
- noted when applicable.
- ********************************************************************)
- (*
- * Standard format of an RSVP object header
- *)
- type
- RsvpObjHdr = record
- obj_length: USHORT; (* Length in bytes *)
- obj_class: UCHAR; (* Class (values defined below) *)
- obj_ctype: UCHAR; (* C-Type (values defined below) *)
- end;
- {$EXTERNALSYM RsvpObjHdr}
- TRsvpObjHdr = RsvpObjHdr;
- PRsvpObjHdr = ^RsvpObjHdr;
- PPRsvpObjHdr = ^PRsvpObjHdr;
- function ObjLength(const x: TRsvpObjHdr): USHORT;
- {$EXTERNALSYM ObjLength}
- function ObjCType(const x: TRsvpObjHdr): UCHAR;
- {$EXTERNALSYM ObjCType}
- function ObjClass(const x: TRsvpObjHdr): UCHAR;
- {$EXTERNALSYM ObjClass}
- function ObjData(const x: TRsvpObjHdr): Pointer;
- {$EXTERNALSYM ObjData}
- (*
- * Define object classes: Class-Num values
- *)
- const
- class_NULL = 0;
- {$EXTERNALSYM class_NULL}
- class_SESSION = 1;
- {$EXTERNALSYM class_SESSION}
- class_SESSION_GROUP = 2;
- {$EXTERNALSYM class_SESSION_GROUP}
- class_RSVP_HOP = 3;
- {$EXTERNALSYM class_RSVP_HOP}
- class_INTEGRITY = 4;
- {$EXTERNALSYM class_INTEGRITY}
- class_TIME_VALUES = 5;
- {$EXTERNALSYM class_TIME_VALUES}
- class_ERROR_SPEC = 6;
- {$EXTERNALSYM class_ERROR_SPEC}
- class_SCOPE = 7;
- {$EXTERNALSYM class_SCOPE}
- class_STYLE = 8;
- {$EXTERNALSYM class_STYLE}
- class_FLOWSPEC = 9; // these two are the same
- {$EXTERNALSYM class_FLOWSPEC}
- class_IS_FLOWSPEC = 9; // since we added IS in front of the name
- {$EXTERNALSYM class_IS_FLOWSPEC}
- class_FILTER_SPEC = 10;
- {$EXTERNALSYM class_FILTER_SPEC}
- class_SENDER_TEMPLATE = 11;
- {$EXTERNALSYM class_SENDER_TEMPLATE}
- class_SENDER_TSPEC = 12;
- {$EXTERNALSYM class_SENDER_TSPEC}
- class_ADSPEC = 13;
- {$EXTERNALSYM class_ADSPEC}
- class_POLICY_DATA = 14;
- {$EXTERNALSYM class_POLICY_DATA}
- class_CONFIRM = 15;
- {$EXTERNALSYM class_CONFIRM}
- class_MAX = 15;
- {$EXTERNALSYM class_MAX}
- (*
- * RSVP SESSION object
- *)
- ctype_SESSION_ipv4 = 1;
- {$EXTERNALSYM ctype_SESSION_ipv4}
- ctype_SESSION_ipv4GPI = 3 (* IPSEC: Generalized Port Id *);
- {$EXTERNALSYM ctype_SESSION_ipv4GPI}
- SESSFLG_E_Police = $01 (* E_Police: Entry policing flag*);
- {$EXTERNALSYM SESSFLG_E_Police}
- type
- Session_IPv4 = record
- sess_destaddr: IN_ADDR; // DestAddress
- sess_protid: UCHAR; // Protocol Id
- sess_flags: UCHAR; // Use the flags defined above
- sess_destport: USHORT; // DestPort
- end;
- {$EXTERNALSYM Session_IPv4}
- TSessionIPv4 = Session_IPv4;
- PSessionIPv4 = ^Session_IPv4;
- (* GPI versions have virtual dest port instead of dest port; this
- * changes the interpretation but not the format, so we do not
- * define new structs for GPI.
- *)
- RSVP_SESSION = record
- sess_header: RsvpObjHdr;
- case Integer of
- 0: (sess_ipv4: Session_IPv4);
- end;
- {$EXTERNALSYM RSVP_SESSION}
- TRsvpSession = RSVP_SESSION;
- PRsvpSession = ^RSVP_SESSION;
- // Useful defines to access components of SESSION obect
- //#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
- (*
- * RSVP HOP object
- *)
- const
- ctype_RSVP_HOP_ipv4 = 1;
- {$EXTERNALSYM ctype_RSVP_HOP_ipv4}
- type
- Rsvp_Hop_IPv4 = record
- hop_ipaddr: IN_ADDR; // Next/Previous Hop Address
- hop_LIH: ULONG; // Logical Interface Handle
- end;
- {$EXTERNALSYM Rsvp_Hop_IPv4}
- TRsvpHopIPv4 = Rsvp_Hop_IPv4;
- PRsvpHopIPv4 = ^Rsvp_Hop_IPv4;
- RSVP_HOP = record
- hop_header: RsvpObjHdr;
- case Integer of
- 0: (hop_ipv4: Rsvp_Hop_IPv4);
- end;
- {$EXTERNALSYM RSVP_HOP}
- TRsvpHop = RSVP_HOP;
- PRsvpHop = ^RSVP_HOP;
- //#define Hop4LIH hop_u.hop_ipv4.hop_LIH
- //#define Hop4Addr hop_u.hop_ipv4.hop_ipaddr
- (*
- * RSVP STYLE object
- *)
- // Define values for option vector
- const
- Opt_Share_mask = $00000018; // 2 bits: Sharing control
- {$EXTERNALSYM Opt_Share_mask}
- Opt_Distinct = $00000008; // Distinct reservations
- {$EXTERNALSYM Opt_Distinct}
- Opt_Shared = $00000010; // Shared reservations
- {$EXTERNALSYM Opt_Shared}
- Opt_SndSel_mask = $00000007; // 3 bits: Sender selection
- {$EXTERNALSYM Opt_SndSel_mask}
- Opt_Wildcard = $00000001; // Wildcard scope
- {$EXTERNALSYM Opt_Wildcard}
- Opt_Explicit = $00000002; // Explicit scope
- {$EXTERNALSYM Opt_Explicit}
- function Style_is_Wildcard(p: DWORD): Boolean;
- {$EXTERNALSYM Style_is_Wildcard}
- function Style_is_Shared(p: DWORD): Boolean;
- {$EXTERNALSYM Style_is_Shared}
- // Define style values
- const
- STYLE_WF = Opt_Shared + Opt_Wildcard;
- {$EXTERNALSYM STYLE_WF}
- STYLE_FF = Opt_Distinct + Opt_Explicit;
- {$EXTERNALSYM STYLE_FF}
- STYLE_SE = Opt_Shared + Opt_Explicit;
- {$EXTERNALSYM STYLE_SE}
- ctype_STYLE = 1;
- {$EXTERNALSYM ctype_STYLE}
- type
- RESV_STYLE = record
- style_header: RsvpObjHdr;
- style_word: ULONG;
- end;
- {$EXTERNALSYM RESV_STYLE}
- TResvStyle = RESV_STYLE;
- PResvStyle = ^RESV_STYLE;
- (*
- * RSVP FILTER SPEC object
- *)
- const
- ctype_FILTER_SPEC_ipv4 = 1; // IPv4 FILTER_SPEC
- {$EXTERNALSYM ctype_FILTER_SPEC_ipv4}
- ctype_FILTER_SPEC_ipv4GPI = 4; // IPv4/GPI FILTER_SPEC
- {$EXTERNALSYM ctype_FILTER_SPEC_ipv4GPI}
- type
- Filter_Spec_IPv4 = record
- filt_ipaddr: IN_ADDR; // IPv4 SrcAddress
- filt_unused: USHORT;
- filt_port: USHORT; // SrcPort
- end;
- {$EXTERNALSYM Filter_Spec_IPv4}
- TFilterSpecIPv4 = Filter_Spec_IPv4;
- PFilterSpecIPv4 = ^Filter_Spec_IPv4;
- Filter_Spec_IPv4GPI = record
- filt_ipaddr: IN_ADDR; // IPv4 SrcAddress
- filt_gpi: ULONG; // Generalized Port Id
- end;
- {$EXTERNALSYM Filter_Spec_IPv4GPI}
- TFilterSpecIPv4GPI = Filter_Spec_IPv4GPI;
- PFilterSpecIPv4GPI = ^Filter_Spec_IPv4GPI;
- FILTER_SPEC = record
- filt_header: RsvpObjHdr;
- case Integer of
- 0: (filt_ipv4: Filter_Spec_IPv4);
- 1: (filt_ipv4gpi: Filter_Spec_IPv4GPI);
- end;
- {$EXTERNALSYM FILTER_SPEC}
- TFilterSpec = FILTER_SPEC;
- PFilterSpec = ^FILTER_SPEC;
- //#define FilterSrcaddr filt_u.filt_ipv4.filt_ipaddr
- //#define FilterSrcport filt_u.filt_ipv4.filt_port
- (*
- * RSVP SENDER_TEMPLATE object
- *)
- const
- ctype_SENDER_TEMPLATE_ipv4 = 1; // IPv4 SENDER_TEMPLATE
- {$EXTERNALSYM ctype_SENDER_TEMPLATE_ipv4}
- ctype_SENDER_TEMPLATE_ipv4GPI = 4; // IPv4/GPI SENDER_TEMPLATE
- {$EXTERNALSYM ctype_SENDER_TEMPLATE_ipv4GPI}
- type
- SENDER_TEMPLATE = FILTER_SPEC; // Identical to FILTER_SPEC
- {$EXTERNALSYM SENDER_TEMPLATE}
- TSenderTemplate = SENDER_TEMPLATE;
- PSenderTemplate = ^SENDER_TEMPLATE;
- (*
- * RSVP SCOPE object class
- *)
- const
- ctype_SCOPE_list_ipv4 = 1;
- {$EXTERNALSYM ctype_SCOPE_list_ipv4}
- type
- Scope_list_ipv4 = record
- scopl_ipaddr: array [0..0] of IN_ADDR; // var-len list of IP sender addrs
- end;
- {$EXTERNALSYM Scope_list_ipv4}
- TScopeListIPv4 = Scope_list_ipv4;
- PScopeListIPv4 = ^Scope_list_ipv4;
- RSVP_SCOPE = record
- scopl_header: RsvpObjHdr;
- case Integer of
- 0: (scopl_ipv4: Scope_list_ipv4);
- end;
- {$EXTERNALSYM RSVP_SCOPE}
- TRsvpScope = RSVP_SCOPE;
- PRsvpScope = ^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))
- (*
- * ERROR_SPEC object class
- *)
- const
- ctype_ERROR_SPEC_ipv4 = 1;
- {$EXTERNALSYM ctype_ERROR_SPEC_ipv4}
- ERROR_SPECF_InPlace = $01; (* Left resv in place *)
- {$EXTERNALSYM ERROR_SPECF_InPlace}
- ERROR_SPECF_NotGuilty = $02; (* This rcvr not guilty *)
- {$EXTERNALSYM ERROR_SPECF_NotGuilty}
- ERR_FORWARD_OK = $8000; (* Flag: OK to forward state *)
- {$EXTERNALSYM ERR_FORWARD_OK}
- function Error_Usage(x: DWORD): DWORD;
- {$EXTERNALSYM Error_Usage}
- const
- ERR_Usage_globl = $00; (* Globally-defined sub-code *)
- {$EXTERNALSYM ERR_Usage_globl}
- ERR_Usage_local = $10; (* Locally-defined sub-code *)
- {$EXTERNALSYM ERR_Usage_local}
- ERR_Usage_serv = $11; (* Service-defined sub-code *)
- {$EXTERNALSYM ERR_Usage_serv}
- ERR_global_mask = $0fff; (* Sub-code bits in Error Val *)
- {$EXTERNALSYM ERR_global_mask}
- type
- Error_Spec_IPv4 = record
- errs_errnode: in_addr; (* Error Node Address *)
- errs_flags: u_char; (* Flags: *)
- errs_code: UCHAR; (* Error Code (def'd below) *)
- errs_value: USHORT; (* Error Value *)
- end;
- {$EXTERNALSYM Error_Spec_IPv4}
- TErrorSpecIPv4 = Error_Spec_IPv4;
- PErrorSpecIPv4 = ^Error_Spec_IPv4;
- type
- ERROR_SPEC = record
- errs_header: RsvpObjHdr;
- case Integer of
- 0: (errs_ipv4: Error_Spec_IPv4);
- end;
- {$EXTERNALSYM ERROR_SPEC}
- TErrorSpec = ERROR_SPEC;
- PErrorSpec = ^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
- (*
- * POLICY_DATA object class
- *
- * Contents are Opaque RSVP/SBM
- *)
- const
- ctype_POLICY_DATA = 1;
- {$EXTERNALSYM ctype_POLICY_DATA}
- type
- POLICY_DATA = record
- PolicyObjHdr: RsvpObjHdr;
- usPeOffset: USHORT; // Offset to the start of Policy Elements from the begining of Policy Data
- usReserved: USHORT;
- end;
- {$EXTERNALSYM POLICY_DATA}
- TPolicyData = POLICY_DATA;
- PPolicyData = ^POLICY_DATA;
- const
- PD_HDR_LEN = SizeOf(POLICY_DATA);
- {$EXTERNALSYM PD_HDR_LEN}
- type
- POLICY_ELEMENT = record
- usPeLength: USHORT; // Policy Element length
- usPeType: USHORT; // Policy Element type
- ucPeData: array [0..3] of UCHAR; // Just a place holder to the start of Policy Element data
- end;
- {$EXTERNALSYM POLICY_ELEMENT}
- TPolicyElement = POLICY_ELEMENT;
- PPolicyElement = ^POLICY_ELEMENT;
- const
- PE_HDR_LEN = 2 * SizeOf(USHORT);
- {$EXTERNALSYM PE_HDR_LEN}
- (**************************************************************************
- *
- * Int-Serv Data Structures
- *
- **************************************************************************)
- (*
- * Service numbers
- *)
- const
- GENERAL_INFO = 1;
- {$EXTERNALSYM GENERAL_INFO}
- GUARANTEED_SERV = 2;
- {$EXTERNALSYM GUARANTEED_SERV}
- PREDICTIVE_SERV = 3;
- {$EXTERNALSYM PREDICTIVE_SERV}
- CONTROLLED_DELAY_SERV = 4;
- {$EXTERNALSYM CONTROLLED_DELAY_SERV}
- CONTROLLED_LOAD_SERV = 5;
- {$EXTERNALSYM CONTROLLED_LOAD_SERV}
- QUALITATIVE_SERV = 6;
- {$EXTERNALSYM QUALITATIVE_SERV}
- (*
- * Well-known parameter IDs
- *)
- const
- IS_WKP_HOP_CNT = 4;
- {$EXTERNALSYM IS_WKP_HOP_CNT}
- IS_WKP_PATH_BW = 6;
- {$EXTERNALSYM IS_WKP_PATH_BW}
- IS_WKP_MIN_LATENCY = 8;
- {$EXTERNALSYM IS_WKP_MIN_LATENCY}
- IS_WKP_COMPOSED_MTU = 10;
- {$EXTERNALSYM IS_WKP_COMPOSED_MTU}
- IS_WKP_TB_TSPEC = 127; (* Token-bucket TSPEC parm *)
- {$EXTERNALSYM IS_WKP_TB_TSPEC}
- IS_WKP_Q_TSPEC = 128;
- {$EXTERNALSYM IS_WKP_Q_TSPEC}
- type
- int_serv_wkp = DWORD;
- {$EXTERNALSYM int_serv_wkp}
- TIntServWkp = int_serv_wkp;
- (*
- * Int-serv Main header
- *)
- IntServMainHdr = record
- ismh_version: UCHAR; // Version
- ismh_unused: UCHAR;
- ismh_len32b: USHORT; // # 32-bit words excluding this hdr
- end;
- {$EXTERNALSYM IntServMainHdr}
- TIntServMainHdr = IntServMainHdr;
- PIntServMainHdr = ^IntServMainHdr;
- const
- INTSERV_VERS_MASK = $f0;
- {$EXTERNALSYM INTSERV_VERS_MASK}
- INTSERV_VERSION0 = 0;
- {$EXTERNALSYM INTSERV_VERSION0}
- function Intserv_Version(x: DWORD): DWORD;
- {$EXTERNALSYM Intserv_Version}
- function Intserv_Version_OK(const x: TIntServMainHdr): Boolean;
- {$EXTERNALSYM Intserv_Version_OK}
- // Convert ishm_length to equivalent RSVP object size, for checking
- function Intserv_Obj_size(const x: TIntServMainHdr): DWORD;
- {$EXTERNALSYM Intserv_Obj_size}
- (*
- * Int-serv Service Element Header
- *)
- // Flag: Break bit
- const
- ISSH_BREAK_BIT = $80;
- {$EXTERNALSYM ISSH_BREAK_BIT}
- type
- IntServServiceHdr = record
- issh_service: UCHAR; // Service number
- issh_flags: UCHAR; // Flag byte
- issh_len32b: USHORT; // #32-bit words excluding this hdr
- end;
- {$EXTERNALSYM IntServServiceHdr}
- TIntServServiceHdr = IntServServiceHdr;
- PIntServServiceHdr = ^IntServServiceHdr;
- function Issh_len32b(const p: TIntServServiceHdr): USHORT;
- {$EXTERNALSYM Issh_len32b}
- (*
- * Int-serv Parameter Element Header
- *)
- const
- ISPH_FLG_INV = $80; // Flag: Invalid
- {$EXTERNALSYM ISPH_FLG_INV}
- type
- IntServParmHdr = record
- isph_parm_num: UCHAR; // Parameter number
- isph_flags: UCHAR; // Flags
- isph_len32b: USHORT; // #32-bit words excluding this hdr
- end;
- {$EXTERNALSYM IntServParmHdr}
- TIntServParmHdr = IntServParmHdr;
- PIntServParmHdr = ^IntServParmHdr;
- {
- function Next_Main_Hdr(const p: TIntServMainHdr): PIntServMainHdr;
- begin
- TODO (IntServMainHdr *)((ULONG *)(p)+1+(p)->ismh_len32b)
- end;
- function Next_Serv_Hdr(const p: TIntServMainHdr): ULONG;
- begin
- TODO (IntServServiceHdr *)((ULONG *)(p)+1+(p)->issh_len32b)
- end;
- function Next_Parm_Hdr(const p: TIntServParmHdr): ULONG;
- begin
- TODO (IntServParmHdr *)((ULONG *)(p)+1+(p)->isph_len32b)
- end;
- }
- (*
- * Generic Tspec Parameters
- *)
- type
- GenTspecParms = record
- TB_Tspec_r: FLOAT; // Token bucket rate (B/sec)
- TB_Tspec_b: FLOAT; // Token bucket depth (B)
- TB_Tspec_p: FLOAT; // Peak data rate (B/sec)
- TB_Tspec_m: ULONG; // Min Policed Unit (B)
- TB_Tspec_M_: ULONG; // Max pkt size (B)
- end;
- {$EXTERNALSYM GenTspecParms}
- TGenTspecParms = GenTspecParms;
- PGenTspecParms = ^GenTspecParms;
- (*
- * Generic Tspec
- *)
- GenTspec = record
- gen_Tspec_serv_hdr: IntServServiceHdr; // (GENERAL_INFO, length)
- gen_Tspec_parm_hdr: IntServParmHdr; // (IS_WKP_TB_TSPEC)
- gen_Tspec_parms: GenTspecParms;
- end;
- {$EXTERNALSYM GenTspec}
- TGenTspec = GenTspec;
- PGenTspec = ^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))
- (* contents of qualitative tspec *)
- type
- QualTspecParms = record
- TB_Tspec_M: ULONG; // Max pkt size (M)
- end;
- {$EXTERNALSYM QualTspecParms}
- TQualTspecParms = QualTspecParms;
- PQualTspecParms = ^QualTspecParms;
- QualTspec = record
- qual_Tspec_serv_hdr: IntServServiceHdr; // (QUALITATIVE_SERV, length)
- qual_Tspec_parm_hdr: IntServParmHdr; // (IS_WKP_Q_TSPEC)
- qual_Tspec_parms: QualTspecParms;
- end;
- {$EXTERNALSYM QualTspec}
- TQualTspec = QualTspec;
- PQualTspec = ^QualTspec;
- QualAppFlowSpec = record
- Q_spec_serv_hdr: IntServServiceHdr; // (QUALITATIVE_SERV,0,len)
- Q_spec_parm_hdr: IntServParmHdr; // (IS_WKP_Q_TSPEC)
- Q_spec_parms: QualTspecParms; // QUALITATIVE Tspec parameters
- end;
- {$EXTERNALSYM QualAppFlowSpec}
- TQualAppFlowSpec = QualAppFlowSpec;
- PQualAppFlowSpec = ^QualAppFlowSpec;
- //#define QAspec_M Q_spec_parms.TB_Tspec_M
- (*
- * Contents of int-serv Tspec
- *)
- IntServTspecBody = record
- st_mh: IntServMainHdr;
- case Integer of
- 0: (gen_stspec: GenTspec); // Generic Tspec
- 1: (qual_stspec: QualTspec);
- end;
- {$EXTERNALSYM IntServTspecBody}
- TIntServTspecBody = IntServTspecBody;
- PIntServTspecBody = ^IntServTspecBody;
- (*
- * SENDER_TSPEC class object
- *)
- const
- ctype_SENDER_TSPEC = 2;
- {$EXTERNALSYM ctype_SENDER_TSPEC}
- type
- SENDER_TSPEC = record
- stspec_header: RsvpObjHdr;
- stspec_body: IntServTspecBody;
- end;
- {$EXTERNALSYM SENDER_TSPEC}
- TSenderTSpec = SENDER_TSPEC;
- PSenderTSpec = ^SENDER_TSPEC;
- (*
- * Controlled-Load Flowspec
- *)
- CtrlLoadFlowspec = record
- CL_spec_serv_hdr: IntServServiceHdr; // (CONTROLLED_LOAD_SERV,0,len)
- CL_spec_parm_hdr: IntServParmHdr; // (IS_WKP_TB_TSPEC)
- CL_spec_parms: GenTspecParms; // GENERIC Tspec parameters
- end;
- {$EXTERNALSYM CtrlLoadFlowspec}
- TCtrlLoadFlowspec = CtrlLoadFlowspec;
- PCtrlLoadFlowspec = ^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))
- (* Service-specific Parameter IDs
- *)
- const
- IS_GUAR_RSPEC = 130;
- {$EXTERNALSYM IS_GUAR_RSPEC}
- GUAR_ADSPARM_C = 131;
- {$EXTERNALSYM GUAR_ADSPARM_C}
- GUAR_ADSPARM_D = 132;
- {$EXTERNALSYM GUAR_ADSPARM_D}
- GUAR_ADSPARM_Ctot = 133;
- {$EXTERNALSYM GUAR_ADSPARM_Ctot}
- GUAR_ADSPARM_Dtot = 134;
- {$EXTERNALSYM GUAR_ADSPARM_Dtot}
- GUAR_ADSPARM_Csum = 135;
- {$EXTERNALSYM GUAR_ADSPARM_Csum}
- GUAR_ADSPARM_Dsum = 136;
- {$EXTERNALSYM GUAR_ADSPARM_Dsum}
- (*
- * Guaranteed Rspec parameters
- *)
- type
- GuarRspec = record
- Guar_R: FLOAT; // Guaranteed Rate B/s
- Guar_S: ULONG; // Slack term secs
- end;
- {$EXTERNALSYM GuarRspec}
- TGuarRspec = GuarRspec;
- PGuarRspec = ^GuarRspec;
- (*
- * Guaranteed Flowspec
- *)
- GuarFlowSpec = record
- Guar_serv_hdr: IntServServiceHdr; // (GUARANTEED, 0, length)
- Guar_Tspec_hdr: IntServParmHdr; // (IS_WKP_TB_TSPEC,)
- Guar_Tspec_parms: GenTspecParms; // GENERIC Tspec parms
- Guar_Rspec_hdr: IntServParmHdr; // (IS_GUAR_RSPEC)
- Guar_Rspec: GuarRspec; // Guaranteed rate (B/sec)
- end;
- {$EXTERNALSYM GuarFlowSpec}
- TGuarFlowSpec = GuarFlowSpec;
- PGuarFlowSpec = ^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))
- (*
- * Contents of int-serv flowspec
- *)
- type
- IntServFlowSpec = record
- spec_mh: IntServMainHdr;
- case Integer of
- 0: (CL_spec: CtrlLoadFlowspec); // Controlled-Load service
- 1: (G_spec: GuarFlowSpec); // Guaranteed service
- 2: (Q_spec: QualAppFlowSpec);
- end;
- {$EXTERNALSYM IntServFlowSpec}
- TIntServFlowSpec = IntServFlowSpec;
- PIntServFlowSpec = ^IntServFlowSpec;
- //#define ISmh_len32b spec_mh.ismh_len32b
- //#define ISmh_version spec_mh.ismh_version
- //#define ISmh_unused spec_mh.ismh_unused
- (*
- * Int-Serv FLOWSPEC object
- *)
- const
- ctype_FLOWSPEC_Intserv0 = 2; // The int-serv flowspec (v.0)
- {$EXTERNALSYM ctype_FLOWSPEC_Intserv0}
- type
- IS_FLOWSPEC = record
- flow_header: RsvpObjHdr;
- flow_body: IntServFlowSpec;
- end;
- {$EXTERNALSYM IS_FLOWSPEC}
- TIsFlowSpec = IS_FLOWSPEC;
- PIsFlowSpec = ^IS_FLOWSPEC;
- (*
- * FLOW DESCRIPTOR
- *)
- FLOW_DESC = record
- u1: record
- case Integer of
- 0: (stspec: ^SENDER_TSPEC);
- 1: (isflow: ^IS_FLOWSPEC);
- end;
- u2: record
- case Integer of
- 0: (stemp: ^SENDER_TEMPLATE);
- 1: (fspec: ^FILTER_SPEC);
- end;
- end;
- {$EXTERNALSYM FLOW_DESC}
- TFlowDesc = FLOW_DESC;
- PFlowDesc = ^FLOW_DESC;
- //#define FdSenderTspec u1.stspec
- //#define FdIsFlowSpec u1.isflow
- //#define FdSenderTemplate u2.stemp
- //#define FdFilterSpec u2.fspec
- (*
- * ADSPEC class object
- *
- * Opaque to RSVP -- Contents defined in rapi_lib.h
- *)
- const
- ctype_ADSPEC_INTSERV = 2;
- {$EXTERNALSYM ctype_ADSPEC_INTSERV}
- (*
- * Guaranteed service Adspec parameters -- fixed part
- *)
- type
- Gads_parms_t = record
- Gads_serv_hdr: IntServServiceHdr; // GUARANTEED, x, len
- Gads_Ctot_hdr: IntServParmHdr; // GUAR_ADSPARM_Ctot
- Gads_Ctot: ULONG;
- Gads_Dtot_hdr: IntServParmHdr; // (GUAR_ADSPARM_Dtot
- Gads_Dtot: ULONG;
- Gads_Csum_hdr: IntServParmHdr; // GUAR_ADSPARM_Csum
- Gads_Csum: ULONG;
- Gads_Dsum_hdr: IntServParmHdr; // GUAR_ADSPARM_Dsum
- Gads_Dsum: ULONG;
- (*
- * May be followed by override general param values
- *)
- end;
- {$EXTERNALSYM Gads_parms_t}
- TGadsParmsT = Gads_parms_t;
- PGadsParmsT = ^Gads_parms_t;
- (*
- * General Path Characterization Parameters
- *)
-
- GenAdspecParams = record
- gen_parm_hdr: IntServServiceHdr; // GENERAL_INFO, len
- gen_parm_hopcnt_hdr: IntServParmHdr; // (IS_WKP_HOP_CNT
- gen_parm_hopcnt: ULONG;
- gen_parm_pathbw_hdr: IntServParmHdr; // IS_WKP_PATH_BW
- gen_parm_path_bw: FLOAT;
- gen_parm_minlat_hdr: IntServParmHdr; // IS_WKP_MIN_LATENCY
- gen_parm_min_latency: ULONG;
- gen_parm_compmtu_hdr: IntServParmHdr; // IS_WKP_COMPOSED_MTU
- gen_parm_composed_MTU: ULONG;
- end;
- {$EXTERNALSYM GenAdspecParams}
- TGenAdspecParams = GenAdspecParams;
- PGenAdspecParams = ^GenAdspecParams;
- (*
- * Contents of (minimal) int-serv Adspec
- *)
- IS_ADSPEC_BODY = record
- adspec_mh: IntServMainHdr; // Main header
- adspec_genparms: GenAdspecParams;// General char parm fragment
- (*
- * Followed by variable-length fragments for some or all
- * services. These can be minimal length fragments.
- *)
- end;
- {$EXTERNALSYM IS_ADSPEC_BODY}
- TIsAdSpecBody = IS_ADSPEC_BODY;
- PIsAdSpecBody = ^IS_ADSPEC_BODY;
- //const TODO Unknown Object_Header
- // GEN_ADSPEC_LEN = SizeOf(Object_header) + SizeOf(IS_adsbody_t);
- // {$EXTERNALSYM GEN_ADSPEC_LEN}
- type
- ADSPEC = record
- adspec_header: RsvpObjHdr;
- adspec_body: IS_ADSPEC_BODY; (* Defined in rapi_lib.h *)
- end;
- {$EXTERNALSYM ADSPEC}
- TAdSpec = ADSPEC;
- PAdSpec = ^ADSPEC;
- // RSVP message types
- const
- RSVP_PATH = 1;
- {$EXTERNALSYM RSVP_PATH}
- RSVP_RESV = 2;
- {$EXTERNALSYM RSVP_RESV}
- RSVP_PATH_ERR = 3;
- {$EXTERNALSYM RSVP_PATH_ERR}
- RSVP_RESV_ERR = 4;
- {$EXTERNALSYM RSVP_RESV_ERR}
- RSVP_PATH_TEAR = 5;
- {$EXTERNALSYM RSVP_PATH_TEAR}
- RSVP_RESV_TEAR = 6;
- {$EXTERNALSYM RSVP_RESV_TEAR}
- (* RSVP error codes
- *)
- RSVP_Err_NONE = 0; (* No error (CONFIRM) *)
- {$EXTERNALSYM RSVP_Err_NONE}
- RSVP_Erv_Nonev = 0; (* No-error Error Value *)
- {$EXTERNALSYM RSVP_Erv_Nonev}
- (* Admission Control failure *)
- RSVP_Err_ADMISSION = 1;
- {$EXTERNALSYM RSVP_Err_ADMISSION}
- (* Globally-defined sub-codes for : Admission Control failure *)
- RSVP_Erv_Other = 0; (* Unspecified cause *)
- {$EXTERNALSYM RSVP_Erv_Other}
- RSVP_Erv_DelayBnd = 1; (* Cannot meet delay bound req *)
- {$EXTERNALSYM RSVP_Erv_DelayBnd}
- RSVP_Erv_Bandwidth = 2; (* Insufficient bandwidth *)
- {$EXTERNALSYM RSVP_Erv_Bandwidth}
- RSVP_Erv_MTU = 3; (* MTU in flowspec too large *)
- {$EXTERNALSYM RSVP_Erv_MTU}
- // Microsoft specific error values
- RSVP_Erv_Flow_Rate = $8001;
- {$EXTERNALSYM RSVP_Erv_Flow_Rate}
- RSVP_Erv_Bucket_szie = $8002;
- {$EXTERNALSYM RSVP_Erv_Bucket_szie}
- RSVP_Erv_Peak_Rate = $8003;
- {$EXTERNALSYM RSVP_Erv_Peak_Rate}
- RSVP_Erv_Min_Policied_size = $8004;
- {$EXTERNALSYM RSVP_Erv_Min_Policied_size}
- (* Policy control failure *)
- RSVP_Err_POLICY = 2;
- {$EXTERNALSYM RSVP_Err_POLICY}
- // Policy error values from Identity draft
- POLICY_ERRV_NO_MORE_INFO = 1;
- {$EXTERNALSYM POLICY_ERRV_NO_MORE_INFO}
- POLICY_ERRV_UNSUPPORTED_CREDENTIAL_TYPE = 2;
- {$EXTERNALSYM POLICY_ERRV_UNSUPPORTED_CREDENTIAL_TYPE}
- POLICY_ERRV_INSUFFICIENT_PRIVILEGES = 3;
- {$EXTERNALSYM POLICY_ERRV_INSUFFICIENT_PRIVILEGES}
- POLICY_ERRV_EXPIRED_CREDENTIALS = 4;
- {$EXTERNALSYM POLICY_ERRV_EXPIRED_CREDENTIALS}
- POLICY_ERRV_IDENTITY_CHANGED = 5;
- {$EXTERNALSYM POLICY_ERRV_IDENTITY_CHANGED}
- // Microsoft specific policy error values
- POLICY_ERRV_UNKNOWN = 0;
- {$EXTERNALSYM POLICY_ERRV_UNKNOWN}
- POLICY_ERRV_GLOBAL_DEF_FLOW_COUNT = 1;
- {$EXTERNALSYM POLICY_ERRV_GLOBAL_DEF_FLOW_COUNT}
- POLICY_ERRV_GLOBAL_GRP_FLOW_COUNT = 2;
- {$EXTERNALSYM POLICY_ERRV_GLOBAL_GRP_FLOW_COUNT}
- POLICY_ERRV_GLOBAL_USER_FLOW_COUNT = 3;
- {$EXTERNALSYM POLICY_ERRV_GLOBAL_USER_FLOW_COUNT}
- POLICY_ERRV_GLOBAL_UNAUTH_USER_FLOW_COUNT = 4;
- {$EXTERNALSYM POLICY_ERRV_GLOBAL_UNAUTH_USER_FLOW_COUNT}
- POLICY_ERRV_SUBNET_DEF_FLOW_COUNT = 5;
- {$EXTERNALSYM POLICY_ERRV_SUBNET_DEF_FLOW_COUNT}
- POLICY_ERRV_SUBNET_GRP_FLOW_COUNT = 6;
- {$EXTERNALSYM POLICY_ERRV_SUBNET_GRP_FLOW_COUNT}
- POLICY_ERRV_SUBNET_USER_FLOW_COUNT = 7;
- {$EXTERNALSYM POLICY_ERRV_SUBNET_USER_FLOW_COUNT}
- POLICY_ERRV_SUBNET_UNAUTH_USER_FLOW_COUNT = 8;
- {$EXTERNALSYM POLICY_ERRV_SUBNET_UNAUTH_USER_FLOW_COUNT}
- POLICY_ERRV_GLOBAL_DEF_FLOW_DURATION = 9;
- {$EXTERNALSYM POLICY_ERRV_GLOBAL_DEF_FLOW_DURATION}
- POLICY_ERRV_GLOBAL_GRP_FLOW_DURATION = 10;
- {$EXTERNALSYM POLICY_ERRV_GLOBAL_GRP_FLOW_DURATION}
- POLICY_ERRV_GLOBAL_USER_FLOW_DURATION = 11;
- {$EXTERNALSYM POLICY_ERRV_GLOBAL_USER_FLOW_DURATION}
- POLICY_ERRV_GLOBAL_UNAUTH_USER_FLOW_DURATION = 12;
- {$EXTERNALSYM POLICY_ERRV_GLOBAL_UNAUTH_USER_FLOW_DURATION}
- POLICY_ERRV_SUBNET_DEF_FLOW_DURATION = 13;
- {$EXTERNALSYM POLICY_ERRV_SUBNET_DEF_FLOW_DURATION}
- POLICY_ERRV_SUBNET_GRP_FLOW_DURATION = 14;
- {$EXTERNALSYM POLICY_ERRV_SUBNET_GRP_FLOW_DURATION}
- POLICY_ERRV_SUBNET_USER_FLOW_DURATION = 15;
- {$EXTERNALSYM POLICY_ERRV_SUBNET_USER_FLOW_DURATION}
- POLICY_ERRV_SUBNET_UNAUTH_USER_FLOW_DURATION = 16;
- {$EXTERNALSYM POLICY_ERRV_SUBNET_UNAUTH_USER_FLOW_DURATION}
- POLICY_ERRV_GLOBAL_DEF_FLOW_RATE = 17;
- {$EXTERNALSYM POLICY_ERRV_GLOBAL_DEF_FLOW_RATE}
- POLICY_ERRV_GLOBAL_GRP_FLOW_RATE = 18;
- {$EXTERNALSYM POLICY_ERRV_GLOBAL_GRP_FLOW_RATE}
- POLICY_ERRV_GLOBAL_USER_FLOW_RATE = 19;
- {$EXTERNALSYM POLICY_ERRV_GLOBAL_USER_FLOW_RATE}
- POLICY_ERRV_GLOBAL_UNAUTH_USER_FLOW_RATE = 20;
- {$EXTERNALSYM POLICY_ERRV_GLOBAL_UNAUTH_USER_FLOW_RATE}
- POLICY_ERRV_SUBNET_DEF_FLOW_RATE = 21;
- {$EXTERNALSYM POLICY_ERRV_SUBNET_DEF_FLOW_RATE}
- POLICY_ERRV_SUBNET_GRP_FLOW_RATE = 22;
- {$EXTERNALSYM POLICY_ERRV_SUBNET_GRP_FLOW_RATE}
- POLICY_ERRV_SUBNET_USER_FLOW_RATE = 23;
- {$EXTERNALSYM POLICY_ERRV_SUBNET_USER_FLOW_RATE}
- POLICY_ERRV_SUBNET_UNAUTH_USER_FLOW_RATE = 24;
- {$EXTERNALSYM POLICY_ERRV_SUBNET_UNAUTH_USER_FLOW_RATE}
- POLICY_ERRV_GLOBAL_DEF_PEAK_RATE = 25;
- {$EXTERNALSYM POLICY_ERRV_GLOBAL_DEF_PEAK_RATE}
- POLICY_ERRV_GLOBAL_GRP_PEAK_RATE = 26;
- {$EXTERNALSYM POLICY_ERRV_GLOBAL_GRP_PEAK_RATE}
- POLICY_ERRV_GLOBAL_USER_PEAK_RATE = 27;
- {$EXTERNALSYM POLICY_ERRV_GLOBAL_USER_PEAK_RATE}
- POLICY_ERRV_GLOBAL_UNAUTH_USER_PEAK_RATE = 28;
- {$EXTERNALSYM POLICY_ERRV_GLOBAL_UNAUTH_USER_PEAK_RATE}
- POLICY_ERRV_SUBNET_DEF_PEAK_RATE = 29;
- {$EXTERNALSYM POLICY_ERRV_SUBNET_DEF_PEAK_RATE}
- POLICY_ERRV_SUBNET_GRP_PEAK_RATE = 30;
- {$EXTERNALSYM POLICY_ERRV_SUBNET_GRP_PEAK_RATE}
- POLICY_ERRV_SUBNET_USER_PEAK_RATE = 31;
- {$EXTERNALSYM POLICY_ERRV_SUBNET_USER_PEAK_RATE}
- POLICY_ERRV_SUBNET_UNAUTH_USER_PEAK_RATE = 32;
- {$EXTERNALSYM POLICY_ERRV_SUBNET_UNAUTH_USER_PEAK_RATE}
- POLICY_ERRV_GLOBAL_DEF_SUM_FLOW_RATE = 33;
- {$EXTERNALSYM POLICY_ERRV_GLOBAL_DEF_SUM_FLOW_RATE}
- POLICY_ERRV_GLOBAL_GRP_SUM_FLOW_RATE = 34;
- {$EXTERNALSYM POLICY_ERRV_GLOBAL_GRP_SUM_FLOW_RATE}
- POLICY_ERRV_GLOBAL_USER_SUM_FLOW_RATE = 35;
- {$EXTERNALSYM POLICY_ERRV_GLOBAL_USER_SUM_FLOW_RATE}
- POLICY_ERRV_GLOBAL_UNAUTH_USER_SUM_FLOW_RATE = 36;
- {$EXTERNALSYM POLICY_ERRV_GLOBAL_UNAUTH_USER_SUM_FLOW_RATE}
- POLICY_ERRV_SUBNET_DEF_SUM_FLOW_RATE = 37;
- {$EXTERNALSYM POLICY_ERRV_SUBNET_DEF_SUM_FLOW_RATE}
- POLICY_ERRV_SUBNET_GRP_SUM_FLOW_RATE = 38;
- {$EXTERNALSYM POLICY_ERRV_SUBNET_GRP_SUM_FLOW_RATE}
- POLICY_ERRV_SUBNET_USER_SUM_FLOW_RATE = 39;
- {$EXTERNALSYM POLICY_ERRV_SUBNET_USER_SUM_FLOW_RATE}
- POLICY_ERRV_SUBNET_UNAUTH_USER_SUM_FLOW_RATE = 40;
- {$EXTERNALSYM POLICY_ERRV_SUBNET_UNAUTH_USER_SUM_FLOW_RATE}
- POLICY_ERRV_GLOBAL_DEF_SUM_PEAK_RATE = 41;
- {$EXTERNALSYM POLICY_ERRV_GLOBAL_DEF_SUM_PEAK_RATE}
- POLICY_ERRV_GLOBAL_GRP_SUM_PEAK_RATE = 42;
- {$EXTERNALSYM POLICY_ERRV_GLOBAL_GRP_SUM_PEAK_RATE}
- POLICY_ERRV_GLOBAL_USER_SUM_PEAK_RATE = 43;
- {$EXTERNALSYM POLICY_ERRV_GLOBAL_USER_SUM_PEAK_RATE}
- POLICY_ERRV_GLOBAL_UNAUTH_USER_SUM_PEAK_RATE = 44;
- {$EXTERNALSYM POLICY_ERRV_GLOBAL_UNAUTH_USER_SUM_PEAK_RATE}
- POLICY_ERRV_SUBNET_DEF_SUM_PEAK_RATE = 45;
- {$EXTERNALSYM POLICY_ERRV_SUBNET_DEF_SUM_PEAK_RATE}
- POLICY_ERRV_SUBNET_GRP_SUM_PEAK_RATE = 46;
- {$EXTERNALSYM POLICY_ERRV_SUBNET_GRP_SUM_PEAK_RATE}
- POLICY_ERRV_SUBNET_USER_SUM_PEAK_RATE = 47;
- {$EXTERNALSYM POLICY_ERRV_SUBNET_USER_SUM_PEAK_RATE}
- POLICY_ERRV_SUBNET_UNAUTH_USER_SUM_PEAK_RATE = 48;
- {$EXTERNALSYM POLICY_ERRV_SUBNET_UNAUTH_USER_SUM_PEAK_RATE}
- POLICY_ERRV_UNKNOWN_USER = 49;
- {$EXTERNALSYM POLICY_ERRV_UNKNOWN_USER}
- POLICY_ERRV_NO_PRIVILEGES = 50;
- {$EXTERNALSYM POLICY_ERRV_NO_PRIVILEGES}
- POLICY_ERRV_EXPIRED_USER_TOKEN = 51;
- {$EXTERNALSYM POLICY_ERRV_EXPIRED_USER_TOKEN}
- POLICY_ERRV_NO_RESOURCES = 52;
- {$EXTERNALSYM POLICY_ERRV_NO_RESOURCES}
- POLICY_ERRV_PRE_EMPTED = 53;
- {$EXTERNALSYM POLICY_ERRV_PRE_EMPTED}
- POLICY_ERRV_USER_CHANGED = 54;
- {$EXTERNALSYM POLICY_ERRV_USER_CHANGED}
- POLICY_ERRV_NO_ACCEPTS = 55;
- {$EXTERNALSYM POLICY_ERRV_NO_ACCEPTS}
- POLICY_ERRV_NO_MEMORY = 56;
- {$EXTERNALSYM POLICY_ERRV_NO_MEMORY}
- POLICY_ERRV_CRAZY_FLOWSPEC = 57;
- {$EXTERNALSYM POLICY_ERRV_CRAZY_FLOWSPEC}
- // Other RSVP defined Error codes
- RSVP_Err_NO_PATH = 3; (* No path state for Resv *)
- {$EXTERNALSYM RSVP_Err_NO_PATH}
- RSVP_Err_NO_SENDER = 4; (* No sender info for Resv *)
- {$EXTERNALSYM RSVP_Err_NO_SENDER}
- RSVP_Err_BAD_STYLE = 5; (* Conflicting style *)
- {$EXTERNALSYM RSVP_Err_BAD_STYLE}
- RSVP_Err_UNKNOWN_STYLE = 6; (* Unknown reservation style *)
- {$EXTERNALSYM RSVP_Err_UNKNOWN_STYLE}
- RSVP_Err_BAD_DSTPORT = 7; (* Conflicting DstPort in Sess *)
- {$EXTERNALSYM RSVP_Err_BAD_DSTPORT}
- RSVP_Err_BAD_SNDPORT = 8; (* Conflicting Sender port *)
- {$EXTERNALSYM RSVP_Err_BAD_SNDPORT}
- RSVP_Err_AMBIG_FILTER = 9; (* Ambiguous Filter spec in Resv*)
- {$EXTERNALSYM RSVP_Err_AMBIG_FILTER}
- RSVP_Err_PREEMPTED = 12; (* Service Preempted *)
- {$EXTERNALSYM RSVP_Err_PREEMPTED}
- (* Unknown object Class-Num *)
- RSVP_Err_UNKN_OBJ_CLASS = 13;
- {$EXTERNALSYM RSVP_Err_UNKN_OBJ_CLASS}
- (* ErrVal = Class_num, CType *)
- (* Unknown object C-Type *)
- RSVP_Err_UNKNOWN_CTYPE = 14;
- {$EXTERNALSYM RSVP_Err_UNKNOWN_CTYPE}
- (* ErrVal = Class_num, CType *)
- RSVP_Err_API_ERROR = 20; (* API client error *)
- {$EXTERNALSYM RSVP_Err_API_ERROR}
- (* ErrVal = API error code *)
- (* Traffic Control error *)
- RSVP_Err_TC_ERROR = 21;
- {$EXTERNALSYM RSVP_Err_TC_ERROR}
- (* Globally-defined sub-codes for : Traffic Control errors *)
- RSVP_Erv_Conflict_Serv = 01; (* Service Conflict *)
- {$EXTERNALSYM RSVP_Erv_Conflict_Serv}
- RSVP_Erv_No_Serv = 02; (* Unknown Service *)
- {$EXTERNALSYM RSVP_Erv_No_Serv}
- RSVP_Erv_Crazy_Flowspec = 03; (* Unreasonable Flowspec *)
- {$EXTERNALSYM RSVP_Erv_Crazy_Flowspec}
- RSVP_Erv_Crazy_Tspec = 04; (* Unreasonable Tspec *)
- {$EXTERNALSYM RSVP_Erv_Crazy_Tspec}
- RSVP_Err_TC_SYS_ERROR = 22; (* Traffic control system error *)
- {$EXTERNALSYM RSVP_Err_TC_SYS_ERROR}
- (* ErrVal = kernel error code *)
- (* RSVP System error *)
- RSVP_Err_RSVP_SYS_ERROR = 23;
- {$EXTERNALSYM RSVP_Err_RSVP_SYS_ERROR}
- (* Globally-defined sub-codes for : RSVP system errors *)
- RSVP_Erv_MEMORY = 1; (* Out of memory *)
- {$EXTERNALSYM RSVP_Erv_MEMORY}
- RSVP_Erv_API = 2; (* API logic error *)
- {$EXTERNALSYM RSVP_Erv_API}
- // Identity Policy elements related defines
- // Reseved Identity PE types
- LPM_PE_USER_IDENTITY = 2;
- {$EXTERNALSYM LPM_PE_USER_IDENTITY}
- LPM_PE_APP_IDENTITY = 3;
- {$EXTERNALSYM LPM_PE_APP_IDENTITY}
- // Defines for Identity error values
- ERROR_NO_MORE_INFO = 1;
- {$EXTERNALSYM ERROR_NO_MORE_INFO}
- UNSUPPORTED_CREDENTIAL_TYPE = 2;
- {$EXTERNALSYM UNSUPPORTED_CREDENTIAL_TYPE}
- INSUFFICIENT_PRIVILEGES = 3;
- {$EXTERNALSYM INSUFFICIENT_PRIVILEGES}
- EXPIRED_CREDENTIAL = 4;
- {$EXTERNALSYM EXPIRED_CREDENTIAL}
- IDENTITY_CHANGED = 5;
- {$EXTERNALSYM IDENTITY_CHANGED}
- type
- ID_ERROR_OBJECT = record
- usIdErrLength: USHORT;
- ucAType: UCHAR;
- ucSubType: UCHAR;
- usReserved: USHORT;
- usIdErrorValue: USHORT;
- ucIdErrData: array [0..3] of UCHAR;
- end;
- {$EXTERNALSYM ID_ERROR_OBJECT}
- TIdErrorObject = ID_ERROR_OBJECT;
- PIdErrorObject = ^ID_ERROR_OBJECT;
- const
- ID_ERR_OBJ_HDR_LEN = SizeOf(ID_ERROR_OBJECT) - 4 * SizeOf(UCHAR);
- {$EXTERNALSYM ID_ERR_OBJ_HDR_LEN}
- (*
- LPM API specific definitions
- *)
- (**************************************
- LPM_Initialize
- ***************************************)
- type
- LPM_HANDLE = HANDLE;
- {$EXTERNALSYM LPM_HANDLE}
- RHANDLE = HANDLE;
- {$EXTERNALSYM RHANDLE}
- LPV = ULONG;
- {$EXTERNALSYM LPV}
- PETYPE = USHORT;
- {$EXTERNALSYM PETYPE}
- const
- LPM_OK = 0;
- {$EXTERNALSYM LPM_OK}
- type
- MSG_TYPE = Integer;
- {$EXTERNALSYM MSG_TYPE}
- TMsgType = MSG_TYPE;
- rsvpmsgobjs = record
- RsvpMsgType: TMsgType;
- pRsvpSession: PRsvpSession;
- pRsvpFromHop: PRsvpHop;
- pRsvpToHop: PRsvpHop;
- pResvStyle: PResvStyle;
- pRsvpScope: PRsvpScope;
- FlowDescCount: Integer;
- pFlowDescs: PFlowDesc;
- PdObjectCount: Integer;
- ppPdObjects: ^PPolicyData;
- pErrorSpec: PErrorSpec;
- pAdspec: PADSpec;
- end;
- {$EXTERNALSYM rsvpmsgobjs}
- RSVP_MSG_OBJS = rsvpmsgobjs;
- {$EXTERNALSYM RSVP_MSG_OBJS}
- TRsvpMsgObjs = RSVP_MSG_OBJS;
- PRsvpMsgObjs = ^RSVP_MSG_OBJS;
-
- PALLOCMEM = function(Size: DWORD): Pointer; stdcall;
- {$EXTERNALSYM PALLOCMEM}
- TAllocMem = PALLOCMEM;
- PFREEMEM = procedure(pv: Pointer); stdcall;
- {$EXTERNALSYM PFREEMEM}
- TFreeMem = PFREEMEM;
- policy_decision = record
- lpvResult: LPV; // Use the LPV values from above
- wPolicyErrCode: WORD; // RSVP defined error codes
- wPolicyErrValue: WORD; // RSVP defined error values
- end;
- {$EXTERNALSYM policy_decision}
- TPolicyDecision = policy_decision;
- PPolicyDecision = ^policy_decision;
- CBADMITRESULT = function(LpmHandle: LPM_HANDLE; RequestHandle: RHANDLE;
- ulPcmActionFlags: ULONG; LpmError: Integer; PolicyDecisionsCount: Integer;
- pPolicyDecisions: PPolicyDecision): ULONG; stdcall;
- {$EXTERNALSYM CBADMITRESULT}
- TCbAdmitResult = CBADMITRESULT;
- CBGETRSVPOBJECTS = function(LpmHandle: LPM_HANDLE; RequestHandle: RHANDLE;
- LpmError: Integer; RsvpObjectsCount: Integer; ppRsvpObjects: PPRsvpObjHdr): ULONG; stdcall;
- {$EXTERNALSYM CBGETRSVPOBJECTS}
- TCbGetRsvpObjects = CBGETRSVPOBJECTS;
- // The above 2 call backs can return the following errors
- const
- INV_LPM_HANDLE = 1; // Supplied LpmHandle is invalid
- {$EXTERNALSYM INV_LPM_HANDLE}
- LPM_TIME_OUT = 2; // LPM has returned results after the time limit
- {$EXTERNALSYM LPM_TIME_OUT}
- INV_REQ_HANDLE = 3; // Supplied Request handle is invalid
- {$EXTERNALSYM INV_REQ_HANDLE}
- DUP_RESULTS = 4; // LPM has already returned results for this request
- {$EXTERNALSYM DUP_RESULTS}
- INV_RESULTS = 5; // Results supplied are invalid
- {$EXTERNALSYM INV_RESULTS}
- type
- lpminitinfo = record
- PcmVersionNumber: DWORD;
- ResultTimeLimit: DWORD;
- ConfiguredLpmCount: Integer;
- AllocMemory: PALLOCMEM;
- FreeMemory: PFREEMEM;
- PcmAdmitResultCallback: CBADMITRESULT;
- GetRsvpObjectsCallback: CBGETRSVPOBJECTS;
- end;
- {$EXTERNALSYM lpminitinfo}
- LPM_INIT_INFO = lpminitinfo;
- {$EXTERNALSYM LPM_INIT_INFO}
- TLpmInitInfo = LPM_INIT_INFO;
- PLpmInitInfo = ^LPM_INIT_INFO;
- // Valid PE types
- // XXX ISSUE - Is 0xFFFF a better choice?
- const
- LPM_PE_ALL_TYPES = 0;
- {$EXTERNALSYM LPM_PE_ALL_TYPES}
- // Current LPM API version number
- LPM_API_VERSION_1 = 1;
- {$EXTERNALSYM LPM_API_VERSION_1}
- // Current PCM version number
- PCM_VERSION_1 = 1;
- {$EXTERNALSYM PCM_VERSION_1}
- function LPM_Initialize(LpmHandle: LPM_HANDLE; const pLpmInitInfo: LPM_INIT_INFO;
- var pLpmVersionNumber: DWORD; var pSupportedPeType: PETYPE; Reserved: Pointer): ULONG; stdcall;
- {$EXTERNALSYM LPM_Initialize}
- (**************************************
- LPM_Deinitialize
- ***************************************)
- function LPM_Deinitialize(LpmHandle: LPM_HANDLE): ULONG; stdcall;
- {$EXTERNALSYM LPM_Deinitialize}
- (**************************************
- LPM_AdmitRsvpMsg
- ***************************************)
- // Valid LPV - LPM Priority Values
- const
- LPV_RESERVED = 0;
- {$EXTERNALSYM LPV_RESERVED}
- LPV_MIN_PRIORITY = 1;
- {$EXTERNALSYM LPV_MIN_PRIORITY}
- LPV_MAX_PRIORITY = $FF00;
- {$EXTERNALSYM LPV_MAX_PRIORITY}
- LPV_DROP_MSG = $FFFD;
- {$EXTERNALSYM LPV_DROP_MSG}
- LPV_DONT_CARE = $FFFE;
- {$EXTERNALSYM LPV_DONT_CARE}
- LPV_REJECT = $FFFF;
- {$EXTERNALSYM LPV_REJECT}
- // Valid values for PcmActionFlags
- FORCE_IMMEDIATE_REFRESH = 1;
- {$EXTERNALSYM FORCE_IMMEDIATE_REFRESH}
- // Function return values for LPM_AdmitResvMsg
- LPM_RESULT_READY = 0;
- {$EXTERNALSYM LPM_RESULT_READY}
- LPM_RESULT_DEFER = 1;
- {$EXTERNALSYM LPM_RESULT_DEFER}
- function LPM_AdmitRsvpMsg(PcmReqHandle: RHANDLE; const pRecvdIntf: RSVP_HOP;
- const pRsvpMsgObjs: RSVP_MSG_OBJS; RcvdRsvpMsgLength: Integer; RcvdRsvpMsg: PUCHAR;
- var pulPcmActionFlags: ULONG; pPolicyDecisions: PPolicyDecision; Reserved: Pointer): ULONG; stdcall;
- {$EXTERNALSYM LPM_AdmitRsvpMsg}
- (**************************************
- LPM_GetRsvpObjects
- ***************************************)
- // Function return values are defined in LPM_AdmitResvMsg section
- function LPM_GetRsvpObjects(PcmReqHandle: RHANDLE; MaxPdSize: ULONG;
- SendingIntfAddr: PRsvpHop; pRsvpMsgObjs: PRsvpMsgObjs; var pRsvpObjectsCount: Integer;
- var pppRsvpObjects: PRsvpObjHdr; Reserved: Pointer): ULONG; stdcall;
- {$EXTERNALSYM LPM_GetRsvpObjects}
- (**************************************
- LPM_DeleteState
- ***************************************)
- // TearDown reasons
- const
- RCVD_PATH_TEAR = 1;
- {$EXTERNALSYM RCVD_PATH_TEAR}
- RCVD_RESV_TEAR = 2;
- {$EXTERNALSYM RCVD_RESV_TEAR}
- ADM_CTRL_FAILED = 3;
- {$EXTERNALSYM ADM_CTRL_FAILED}
- STATE_TIMEOUT = 4;
- {$EXTERNALSYM STATE_TIMEOUT}
- FLOW_DURATION = 5;
- {$EXTERNALSYM FLOW_DURATION}
- procedure LPM_DeleteState(pRcvdIfAddr: PRsvpHop; RsvpMsgType: TMsgType;
- pRsvpSession: PRsvpSession; pRsvpFromHop: PRsvpHop; pResvStyle: PResvStyle;
- FilterSpecCount: Integer; ppFilterSpecList: PFilterSpec; TearDownReason: Integer); stdcall;
- {$EXTERNALSYM LPM_DeleteState}
- (**************************************
- LPM_IpAddrTable
- ***************************************)
- type
- lpmiptable = record
- ulIfIndex: ULONG; // SNMP index for this interface
- MediaType: ULONG; // As defined in IPIFCONS.H
- IfIpAddr: IN_ADDR; // Interface IP address
- IfNetMask: IN_ADDR; // Interface subnet mask
- end;
- {$EXTERNALSYM lpmiptable}
- TLpmIpTable = lpmiptable;
- PLpmIpTable = ^lpmiptable;
- function LPM_IpAddressTable(cIpAddrTable: ULONG; pIpAddrTable: PLpmIpTable): BOOL; stdcall;
- {$EXTERNALSYM LPM_IpAddressTable}
- (**************************************
- LPM_CommitResv
- ***************************************)
- // CommitDecision values
- const
- RESOURCES_ALLOCATED = 1;
- {$EXTERNALSYM RESOURCES_ALLOCATED}
- RESOURCES_MODIFIED = 2;
- {$EXTERNALSYM RESOURCES_MODIFIED}
- procedure LPM_CommitResv(RsvpSession: PRsvpSession; FlowInstalledIntf: PRsvpHop;
- RsvpStyle: PResvStyle; FilterSpecCount: Integer; ppFilterSpecList: PFilterSpec;
- pMergedFlowSpec: PIsFlowSpec; CommitDecision: ULONG); stdcall;
- {$EXTERNALSYM LPM_CommitResv}
- implementation
- const
- lpmlib = 'msidlpm.dll';
- function ObjLength(const x: TRsvpObjHdr): USHORT;
- begin
- Result := x.obj_length;
- end;
- function ObjCType(const x: TRsvpObjHdr): UCHAR;
- begin
- Result := x.obj_ctype;
- end;
- function ObjClass(const x: TRsvpObjHdr): UCHAR;
- begin
- Result := x.obj_class;
- end;
- function ObjData(const x: TRsvpObjHdr): Pointer;
- begin
- Result := Pointer(Integer(@x) + SizeOf(x));
- end;
- function Style_is_Wildcard(p: DWORD): Boolean;
- begin
- Result := (p and Opt_SndSel_mask) = Opt_Wildcard;
- end;
- function Style_is_Shared(p: DWORD): Boolean;
- begin
- Result := (p and Opt_Share_mask) = Opt_Shared;
- end;
- function Error_Usage(x: DWORD): DWORD;
- begin
- Result := (x shr 12) and 3;
- end;
- function Intserv_Version(x: DWORD): DWORD;
- begin
- Result := (x and INTSERV_VERS_MASK) shr 4;
- end;
- function Intserv_Version_OK(const x: TIntServMainHdr): Boolean;
- begin
- Result := (x.ismh_version and INTSERV_VERS_MASK) = INTSERV_VERSION0;
- end;
- function Intserv_Obj_size(const x: TIntServMainHdr): DWORD;
- begin
- Result := x.ismh_len32b * 4 + SizeOf(IntServMainHdr) + SizeOf(RsvpObjHdr);
- end;
- function Issh_len32b(const p: TIntServServiceHdr): USHORT;
- begin
- Result := p.issh_len32b;
- end;
- {$IFDEF DYNAMIC_LINK}
- var
- _LPM_Initialize: Pointer;
- function LPM_Initialize;
- begin
- GetProcedureAddress(_LPM_Initialize, lpmlib, 'LPM_Initialize');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LPM_Initialize]
- end;
- end;
- var
- _LPM_Deinitialize: Pointer;
- function LPM_Deinitialize;
- begin
- GetProcedureAddress(_LPM_Deinitialize, lpmlib, 'LPM_Deinitialize');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LPM_Deinitialize]
- end;
- end;
- var
- _LPM_AdmitRsvpMsg: Pointer;
- function LPM_AdmitRsvpMsg;
- begin
- GetProcedureAddress(_LPM_AdmitRsvpMsg, lpmlib, 'LPM_AdmitRsvpMsg');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LPM_AdmitRsvpMsg]
- end;
- end;
- var
- _LPM_GetRsvpObjects: Pointer;
- function LPM_GetRsvpObjects;
- begin
- GetProcedureAddress(_LPM_GetRsvpObjects, lpmlib, 'LPM_GetRsvpObjects');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LPM_GetRsvpObjects]
- end;
- end;
- var
- _LPM_DeleteState: Pointer;
- procedure LPM_DeleteState;
- begin
- GetProcedureAddress(_LPM_DeleteState, lpmlib, 'LPM_DeleteState');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LPM_DeleteState]
- end;
- end;
- var
- _LPM_IpAddressTable: Pointer;
- function LPM_IpAddressTable;
- begin
- GetProcedureAddress(_LPM_IpAddressTable, lpmlib, 'LPM_IpAddressTable');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LPM_IpAddressTable]
- end;
- end;
- var
- _LPM_CommitResv: Pointer;
- procedure LPM_CommitResv;
- begin
- GetProcedureAddress(_LPM_CommitResv, lpmlib, 'LPM_CommitResv');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_LPM_CommitResv]
- end;
- end;
- {$ELSE}
- function LPM_Initialize; external lpmlib name 'LPM_Initialize';
- function LPM_Deinitialize; external lpmlib name 'LPM_Deinitialize';
- function LPM_AdmitRsvpMsg; external lpmlib name 'LPM_AdmitRsvpMsg';
- function LPM_GetRsvpObjects; external lpmlib name 'LPM_GetRsvpObjects';
- procedure LPM_DeleteState; external lpmlib name 'LPM_DeleteState';
- function LPM_IpAddressTable; external lpmlib name 'LPM_IpAddressTable';
- procedure LPM_CommitResv; external lpmlib name 'LPM_CommitResv';
- {$ENDIF DYNAMIC_LINK}
- end.
|