If we only defined the semantics and were not building a system, a
packet would only be a record of headers. However, the runtime needs to
apply eval
to packets contained in PACKET_IN
mesages. For the runtime,
packets also carry a payload that is unmodified by eval
.
val eval : packet ‑> Syntax.policy ‑> PacketSet.t
val eval_pipes : packet ‑> Syntax.policy ‑> (string * packet) list * (string * packet) list * packet list
val size : Syntax.policy ‑> int
val queries_of_policy : Syntax.policy ‑> string list
val switches_of_policy : Syntax.policy ‑> Syntax.switchId list