module Field = Fdd.Fieldmodule Action = Fdd.Actionmodule Value = Fdd.Valuemodule FDD : sig ... endval to_dot : t ‑> stringexception Non_localThe exception that's thrown when the local compiler is given a policy with a
Link term in it. To compile policies with Link terms, invoke global
compiler.
val default_compiler_options : compiler_optionsval prepare_compilation : options:compiler_options ‑> Syntax.policy ‑> unitval compile : ?options:compiler_options ‑> Syntax.policy ‑> tcompile p returns the intermediate representation of the local policy p.
You can generate a flowtable from t by passing it to the to_table
function below.
val restrict : Syntax.header_val ‑> t ‑> trestrict hv t returns the fragment of t that applies when the assignment
hv is true. The result will no longer make any reference to the header
named in hv. This is equivalent to traversing the original NetKAT
syntax tree and replacing all occurrences of Test(hv) with True.
This function is called by to_table to restrict t to the portion that
should run on a single switch.
val to_table : ?options:compiler_options ‑> ?group_tbl:Frenetic_kernel.GroupTable0x04.t ‑> Frenetic_kernel.OpenFlow.switchId ‑> t ‑> Frenetic_kernel.OpenFlow.flow listto_table sw t returns a flowtable that implements t for switch sw.
val to_table' : ?options:compiler_options ‑> ?group_tbl:Frenetic_kernel.GroupTable0x04.t ‑> Frenetic_kernel.OpenFlow.switchId ‑> t ‑> (Frenetic_kernel.OpenFlow.flow * string list) listseq p q returns the sequential composotion of the two intermediate
representations p and q. The result is semantically equivalent to the
seqential composition of the two policies from which p and q were
derived.
union p q returns the parallel composition of the two intermediate
representations p and q. The result is semantically equivalent to the
parallel composition of the two policies from which p and q were
derived.
star p returns the star of the intermediate representation p. The result
is semantically equivalent to the star of the policy from which p was
derived.
val queries : t ‑> (string * Syntax.pred) listqueries t returns the list of queries that occur in t along with the
predicates associated with the query. Frenetic_kernel.Packet and byte counts of flows that
match the predicate should count towards its associated query.
equal a b returns whether or not the two intermediate representations are
structurally equal.
If the two representations are structurally equal, then the policies they derived from are semantically equivalent. However, if the two representations are not equal, the policies they were derived from may still be semantically equivalent.
val compression_ratio : t ‑> int * intval to_local_pol : t ‑> Syntax.policyto_local_pol t returns a NetKAT policy that is semantically equivalent to
t. If was generated from compiling a policy p, it is not guarateed that
to_local_pol t will be identical to p.
val to_string : t ‑> stringto_string t returns a string representation of t. This will be a
representation of the Vlr diagram from the tdk package.
val eval : Semantics.packet ‑> t ‑> Semantics.PacketSet.teval pkt t returns a PacketSet.t that is the result of the packet pkt
being run through the policy represented by t.
val eval_pipes : Semantics.packet ‑> t ‑> (string * Semantics.packet) list * (string * Semantics.packet) list * Semantics.packet listeval_pipes pkt t returns the result of running the packet pkt through
the policy represented by t, with packets grouped according to the type of
location to which the policy assigns them. The result is a triple whose
first component is a list of packets and corresponding pipe location, whose
second is a list of packets and corresponding query location, and whose
third is a list of packets that are at physical locations.
val to_dotfile : t ‑> string ‑> unitval field_order_from_string : string ‑> orderval field_order_to_string : order ‑> stringval options_from_json_string : string ‑> compiler_optionsoptions_from_json_string s returns a compiler_options type suitable. Mostly for HTTP servers
val options_to_json_string : compiler_options ‑> stringinclude sig ... endval flow_layout_of_sexp : Ppx_sexp_conv_lib.Sexp.t ‑> flow_layoutval sexp_of_flow_layout : flow_layout ‑> Ppx_sexp_conv_lib.Sexp.tinclude sig ... endval instruction_of_sexp : Ppx_sexp_conv_lib.Sexp.t ‑> instructionval __instruction_of_sexp__ : Ppx_sexp_conv_lib.Sexp.t ‑> instructionval sexp_of_instruction : instruction ‑> Ppx_sexp_conv_lib.Sexp.ttype multitable_flow = {pattern : Frenetic_kernel.OpenFlow.Pattern.t; |
cookie : int64; |
idle_timeout : Frenetic_kernel.OpenFlow.timeout; |
hard_timeout : Frenetic_kernel.OpenFlow.timeout; |
instruction : instruction; |
flowId : flowId; |
}include sig ... endval multitable_flow_of_sexp : Ppx_sexp_conv_lib.Sexp.t ‑> multitable_flowval sexp_of_multitable_flow : multitable_flow ‑> Ppx_sexp_conv_lib.Sexp.tval layout_to_string : flow_layout ‑> stringval to_multitable : ?options:compiler_options ‑> Frenetic_kernel.OpenFlow.switchId ‑> flow_layout ‑> t ‑> multitable_flow list * Frenetic_kernel.GroupTable0x04.t