INFO: When and How Often RESV confirmation Is Delivered

ID: Q195274

The information in this article applies to:

SUMMARY

When you write a GQoS (Generic Quality of Service) enabled Winsock application, you can have the receiving application request that a reservation confirmation be delivered to it.

A reservation is established using the Resource ReSerVation Protocol (RSVP) through the exchange of RSVP PATH and RESV messages. The sending application causes a PATH message to be sent by the QOS service provider and the receiving applications accepts the reservation by causing the QOS service provider to send an RESV. The receiving application can request to receive confirmation that the reservation has actually been established.

MORE INFORMATION

When you are requesting reservation confirmation, it is important to remember the following:

After requesting reservation confirmation, the receiver must await notification either by registering interest in the FD_QOS notification event (if you are using WSAAsyncSelect or WSAEventSelect) or by calling WSAIoctl(SIO_GET_QOS). A reservation confirmation results in the receipt of a RSVP_OBJECT_STATUS_INFO object (assuming your provider-specific buffer is large enough to accommodate this object) with a status code set to WSA_QOS_REQUEST_CONFIRMED.

The following sample code demonstrates how a receiver can request RSVP reservation confirmation:

Sample Code

   QOS               Qos;
   RSVP_RESERVE_INFO RsvpResv;
   DWORD             cbQosLen;

   // Set flowspecs.
   Qos.ReceivingFlowspec = app_specific_receiving_flowspec;
   Qos.SendingFlowspec   = default_notraffic;

   // Fill in RSVP_OBJECT_RESERVE_INFO to request RESV confirmation.
   ZeroMemory((char *)&RsvpResv, sizeof(RsvpResv));
   RsvpResv.ObjectHdr.ObjectType = RSVP_OBJECT_RESERVE_INFO;
   RsvpResv.ObjectHdr.ObjectLength = sizeof(RsvpResv);
   RsvpResv.Style = RSVP_DEFAULT_STYLE;
   RsvpResv.ConfirmRequest = 1;
   RsvpResv.NumPolicyElement = 0;
   RsvpResv.PolicyElementList = NULL;
   RsvpResv.NumFlowDesc = 0;
   RsvpResv.FlowDescList = NULL;
   Qos.ProviderSpecific.len = RsvpResv.ObjectHdr.ObjectLength;
   Qos.ProviderSpecific.buf = (char *)&RsvpResv;

   // Size of overall QOS structure to set varies based on any "objects"
   // added to the provider-specific buffer.
   cbQosLen = sizeof(QOS) + Qos.ProviderSpecific.len;

   // Set QOS on socket and request RESV confirmation.
   nRet = WSAIoctl(my_socket, SIO_SET_QOS, (LPVOID)&Qos, cbQosLen,
            NULL, 0, &dwBytes, NULL, NULL);

REFERENCES

RFC 2205, "Resource ReSerVation Protocol (RSVP) -- Version 1 Functional Specification"

QOSEvent Sample (Windows NT 5.0 Beta 2 Platform SDK or later)

Additional query words: RSVP ResvConf

Keywords          : kbnetwork kbAPI kbGQos kbSDKPlatform kbWinOS98 kbWinsock kbGrpNet 
Issue type        : kbinfo

Last Reviewed: November 6, 1998