Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
AssembleSourceAssemble complete network packets from Xen network messages.
type fragment = {id : int;Ring id of the message this came from.
*)offset : int;Where the data starts in the page behind it.
*)size : int;gref : int32;The grant naming that page, or 0l where the page is the reader's own and id finds it.
}type packet = {total_size : int;fragments : fragment list;extra_ids : int list;Ring ids of slots consumed by extra_info descriptors. Such a slot cost the reader whatever a slot costs, a page on the receive ring, but carries no data and yields no fragment, so a caller that does not release these leaks one per aggregated frame.
Derived by position, which is only sound where the reader assigned the ids: valid for a frontend reading responses to its own requests, not for a backend reading ids its peer chose.
*)}Error frags reports the fragments of a packet that could not be assembled, so the caller can release their pages and grants rather than leak them. Reading never raises on peer-controlled data.