Managing Handles

The routing table manager maintains a reference count for all the information that it maintains. This prevents the routing table manager from returning to a client any handles to memory that has been freed. Each time a handle is returned to the caller, either as an explicit handle or as part of an information structure, such as RTM_DEST_INFO, the reference count for the object that corresponds to the handle is incremented. When the handle or the information structure is released, the appropriate reference count is decremented. When the reference count becomes zero, the object is freed.

The RtmGetDestInfo, RtmGetEntityInfo, RtmGetRouteInfo and RtmGetNextHopInfo functions return information structures. These functions correspond to RtmReleaseDestInfo, RtmReleaseEntityInfo, RtmReleaseRouteInfo and RtmRelaseNextHopInfo functions, respectively.

Note

The RtmReleaseChangedDests function should be used to release handles that have been returned by a call to RtmGetChangedDests. Do not use RtmReleaseDests for changed destination structures.

 

If a client must keep a specific handle in an information structure while releasing the rest, the client can call RtmReferenceHandles with that handle before releasing the information structure. The handle can then be released by a call to the RtmReleaseDestInfo, RtmReleaseEntityInfo, RtmReleaseRouteInfo and RtmRelaseNextHopInfo functions.