Module Frenetic_netkat.Semantics

Frenetic_kernel.Packets

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.

module HeadersValues : sig ... end

A map keyed by header names.

type packet = {
switch : Syntax.switchId;
headers : HeadersValues.t;
payload : Syntax.payload;
}
module PacketSet : Core.Set.S with type PacketSet.Elt.t = packet

Semantics

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