When the application upcall function returns, any areas
pointed to by Flowspec_list, FilterSpec_list, or Adspec_list become not valid for further reference. The upcall
function must copy any values it wants to save.
The specific parameters depend upon EventType,
which can have one of the following values:
- RAPI_PATH_EVENT
- A path event indicates that RSVP sender (Path) state from a remote
node has arrived or changed at the local node. A RAPI_PATH_EVENT event
containing the complete current list of senders (or possibly no senders,
after a path teardown) in the path state for the specified session
is triggered whenever the path state changes.
FilterSpec_list, Flowspec_list, and Adspec_list are of equal length,
and corresponding entries contain sender templates, sender
Tspecs, and Adspecs, respectively, for all senders known
at this node. A missing object is generally indicated by an empty
RAPI object.
RAPI_PATH_EVENT events are enabled by the initial
rapi_session() call.
- RAPI_RESV_EVENT
- A reservation event indicates that reservation state has arrived
or changed at the node, implying (but not assuring) that reservations
have been established or deleted along the entire data path to one
or more receivers. RAPI_RESV_EVENT upcalls containing the current
reservation state for the API session are triggered whenever the reservation
state changes.
Flowspec_list will either contain one flowspec object or be empty (if the state has been torn down),
and FilterSpec_list contain zero or more corresponding filter
spec objects. Adspec_list is empty.
RAPI_RESV_EVENT
upcalls are enabled by a rapi_sender() call; the sender template from the latter call matches the filter spec returned in
the upcall triggered by a reservation event.
- RAPI_PATH_ERROR
- A path error event indicates that an asynchronous error has been
found in the sender information specified in a rapi_sender() call.
The ErrorCode and ErrorValue parameters specify the
error. FilterSpec_list and Flowspec_list each contain
one object, the sender template and corresponding sender
Tspec (if any) in error, while Adspec_list is empty. If
there is no sender Tspec, the object in Flowspec_list is an empty RAPI object. The Adspec_list is empty.
RAPI_PATH_ERROR events are enabled by a rapi_sender() call, and the sender Tspec in that call matches the sender Tspec returned
in a subsequent upcall triggered by a RAPI_PATH_ERROR event.
- RAPI_RESV_ERROR
- A reservation error upcall indicates that an asynchronous
reservation error has occurred.
The ErrorCode and ErrorValue parameters specify the error. Flowspec_list contains one flowspec, while FilterSpec_list can contain zero or more
corresponding filter specs. Adspec_list is empty.
RAPI_RESV_ERROR
events are enabled by a rapi_reserve() call.
- RAPI_RESV_CONFIRM
- A RAPI_RESV_CONFIRM event indicates that a reservation has been
made at least up to an intermediate merge point, and probably (but
not necessarily) all the way to at least one sender.
The parameters
of a RAPI_RESV_CONFIRM event are the same as those for a RAPI_RESV_EVENT
event upcall.
The accompanying table summarizes the upcalls. n is a nonnegative integer.
Upcall |
Enabled by |
FilterSpecNo |
FlowspecNo |
AdspecNo |
---|
RAPI_PATH_EVENT |
rapi_session |
n |
n |
n |
RAPI_PATH_ERROR |
rapi_sender |
1 |
1 |
0 |
RAPI_RESV_EVENT |
rapi_sender |
n |
1 or 0 |
0 |
RAPI_RESV_ERROR |
rapi_reserve |
n |
1 |
0 |
RAPI_RESV_CONFIRM |
rapi_reserve |
1 |
1 |
0 |