Platform SDK: Quality of Service

LPM_GetRsvpObjects

The LPM_GetRsvpObjects function allows the PCM to query LPMs for policy data. The data is forwarded by the PCM to the SBM for inclusion in RSVP refresh messages that require policy data.

Results from the LPM_GetRsvpObjects function can be returned synchronously or asynchronously. Asynchronous results are returned by calling the cbpGetRsvpObjects callback function.

ULONG
APIENTRY
LPM_GetRsvpObjects (
  RHANDLE PcmReqHandle,
  ULONG MaxPdSize,
  RSVP_HOP *SendingIntfAddr,
  RSVP_MSG_OBJS *pRsvpMsgObjs,
  int *pRsvpObjectsCount,
  RsvpObjHdr ***pppRsvpObjects,
  void *Reserved 
);

Parameters

PcmReqHandle
[in] Unique handle that distinguishes this request from all other requests. LPMs should use this PcmReqHandle when returning results asynchronously using the cbpGetRsvpObjects callback function.
MaxPdSize
[in] Maximum allowable size of the returned policy data.
SendingIntfAddr
[in] Pointer to the interface on which the RSVP message will be sent out. The sending interface IP address is supplied as the RSVP HOP object, which equates to PHOP for PATH messages and NHOP for RESV messages. The Logical Interface Handle is set to the SNMP Index. Note that interface index numbers can change with the addition and deletion of interfaces, due to the Plug and Play features of Windows 2000.
pRsvpMsgObjs
[in] RSVP objects generated by the SBM. All RSVP objects are in host order. The following objects are supplied:
Value Meaning
RsvpMsgType RSVP message type, as defined in the RSVP protocol. This can be used by an LPM to locate the state from which it can generate policy data objects.
RsvpSession RSVP session for which the SBM requires policy information. This can be used by an LPM to locate the state from which it can generate policy data objects.
RsvpHop The HOP to which the RSVP message is being forwarded. Since a PATH message is sent directory to the session address, this HOP pointer is NULL for PATH messages. For all other messages, the address in the HOP object is the node address and the LIH is unused.
RsvpStyle RSVP reservation style, as defined in the RSVP protocol. If an RESV message is being sent out by the SBM, RsvpStyle specifies the reservation style. If a PATH message is being sent, RsvpStyle is NULL.
RsvpScope The RSVP scope of an outgoing RESV message, as long as the SCOPE object is not NULL. Used only for WF-style reservations. For all other RSVP reservation styles, RsvpScope is NULL.
FlowDescCount Number of flow descriptors.
FlowDescList Array of flow descriptor pointers in the outgoing RSVP message. For PATH messages, there will be only one FlowDescriptor containing sender template and sender TSPEC.

pRsvpObjectsCount
[out] Pointer to the number of policy objects being returned. When an LPM is immediately returning results, the pRsvpObjectsCount and pppRsvpObjects parameters should be used to return policy data objects. Note that the buffer containing the policy data objects should be allocated using the memory allocation function PALLOCMEM, supplied within the LPM_Initialize function.
pppRsvpObjects
[out] Pointer to an array of policy data object pointers returned in response to the request. Note that the buffer containing the policy data objects, and this array of policy data object pointers, should be allocated using the memory allocation function PALLOCMEM, supplied within the LPM_Initialize function.
Reserved
[out] Reserved for future use.

Return Values

LPM_RESULT_READY
The LPM has returned the policy data using pRsvpObjectsCount and pppRsvpObjects parameters.
LPM_RESULT_DEFER
The LPM is unable to return the policy data objects synchronously, and will return the policy data objects with a subsequent call to cbpGetRsvpObjects.
LPM_DROP_MSG
The LPM can return this value when it does not want to refresh the outgoing message.
LPM_ERROR
The LPM has encountered an error.

Remarks

If an LPM doesn't have policy data to return from the LPM_GetRsvpObjects function call, it should synchronously return LPM_RESULT_READY, set pppRsvpObjects to NULL, and set pRsvpObjectsCount to zero. If a synchronous return isn't possible, an LPM should return LPM_RESULT_DEFER, and return the result by calling the cbpGetRsvpObjects callback function. If the LPM does not have any policy data objects to return, it can set pppRsvpObjects to NULL and pRsvpObjectsCount to zero.

If any LPM returns LPV_DROP_MSG, the SBM will not send out an RSVP refresh message, and will free the policy data objects returned by other LPMs (those that did not return LPM_DROP_MSG, if any). By not sending out RSVP refresh messages, a flow's RSVP state both upstream and downstream will begin to age, and eventually get deleted.

Note  The SBM will send out the RSVP refresh message even if some or all LPMs fail to return policy data objects in a timely fashion, even though such an outgoing RSVP message may not contain all policy data objects it should.

Requirements

  Windows NT/2000: Requires Windows 2000.
  Windows 95/98: Unsupported.
  Header: Declared in Lpmapi.h.