Platform SDK: Quality of Service |
The LPM_AdmitRsvpMsg function is called by the PCM to pass RSVP messages to the LPM for policy based–admission control decisions. Results from calling LPM_AdmitRsvpMsg can be passed back to the PCM either synchronously or asynchronously by setting the return value appropriately. Asynchronous results should be returned by calling the cbpAdmitRsvpMsg function.
ULONG APIENTRY LPM_AdmitRsvpMsg ( RHANDLE PcmReqHandle, RSVP_HOP *pRecvdIntf, RSVP_MSG_OBJS *pRsvpMsgObjs, int RcvdRsvpMsgLength, UCHAR *RcvdRsvpMsg, ULONG *pulPcmActionFlags, POLICY_DECISION pPolicyDecisions, void *Reserved );
Value | Meaning |
---|---|
RsvpMsgType | RSVP message type, as defined by the RSVP protocol. |
RsvpSession | Pointer to the RSVP session, as defined by the RSVP protocol. Note that contents are in host order. |
RsvpFromHop | Pointer to the hop from which the RSVP message was received. Note that contents are in host order. |
RsvpScope | Pointer to the RSVP scope object. |
RsvpStyle | Pointer to the RSVP reservation style, as defined by the RSVP protocol. Note that contents are in host order. |
FlowDescListCount | Number of flow descriptors. |
FlowDescList | Array of flow descriptor pointers. |
PolicyDataCount | Number of policy data objects. |
PolicyDataObjects | Array of policy data object pointers. Note that only the RSVP object header and the policy options are converted to host order, but policy element headers as well as contents are left in network order; the PCM cannot convert the latter to host order, because the PCM cannot parse policy elements. Note that the Microsoft-provided LPM, Msidlpm.dll, does reorder policy element content into host order. |
ErrorSpec | Pointer to the received RSVP ERROR_SPEC object. |
Value | Meaning |
---|---|
LpmPriorityValue | Pointer to a buffer to receive the LPM Priority Value from the LPM. Note that the PCM will only look at this parameter if the return value of LPM_AdmitRsvpMsg is set to LPM_RESULT_READY. If the LPM is returning results synchronously, this parameter must be set to a valid priority value. See Local Policy Module for more information. |
PolicyErrorCode | Pointer to a policy error code. If the request is being rejected synchronously, LPMs must provide a nonzero value for this parameter; the SBM will copy this value, in combination with PolicyErrorValue, into the RSVP error object when sending PATHERR or RESVERR messages (as the result of policy based–admission control failure, to provide a reason for rejecting the request). |
PolicyErrorValue | Pointer to a policy error value. If the request is being rejected synchronously, LPMs must provide a nonzero value for this parameter; the SBM will copy this value, in combination with PolicyErrorCode, into the RSVP error object when sending PATHERR or RESVERR messages (as the result of policy based–admission control failure, to provide a reason for rejecting the request). |
Since an LPMs return POLICY_DECISION is an array, an LPM can accept a subset of flows in FlowDescList and reject the rest of them, if appropriate. For example, since FF style RESV messages can contain multiple flows, when an LPM rejects some flows and accepts others, the SBM generates a separate RESVERR message for each rejected flow; before sending the RESVERR message, PCM calls each LPM to suply policy data objects for each outgoing RESVERR message.
The Subnet Bandwidth Manager (SBM) forwards RSVP PATH, RESV, PATHERR, RESVERR, PATH_TEAR, and RESV_TEAR messages to the PCM. If a request passes LPM policy–based admission (in which case the success status is passed up through the PCM to the SBM), the SBM performs resource based–admission control as part of its RSVP processing; if resource based–admission control fails, the SBM will instruct the PCM to instruct each LPM to delete its state through the LPM_CommitResv function. In such circumstances, the SBM (and not the LPMs) will create the requisite RSVP error message.
Windows NT/2000: Requires Windows 2000.
Windows 95/98: Unsupported.
Header: Declared in Lpmapi.h.