package frenetic

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type
type field_or_cont =
  1. | F of Field.t
  2. | K
val sexp_of_field_or_cont : field_or_cont -> Ppx_sexp_conv_lib.Sexp.t
val field_or_cont_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> field_or_cont
module Seq : sig ... end
module Par : sig ... end
type t = Par.t
include Ppx_sexp_conv_lib.Sexpable.S with type t := t
include Frenetic_netkat.Vlr.Result with type t := t
include Frenetic_netkat.Vlr.HashCmp with type t := t
val equal : t -> t -> Ppx_deriving_runtime.bool
include Ppx_sexp_conv_lib.Sexpable.S with type t := t
val t_of_sexp : Sexplib0.Sexp.t -> t
val sexp_of_t : t -> Sexplib0.Sexp.t
val compare : t -> t -> int
val hash_fold_t : Base.Hash.state -> t -> Base.Hash.state
val hash : t -> Base.Hash.hash_value
val sum : t -> t -> t

An associative and commutative binary operation over the type t. The following should hold:

  • sum a (sum b c) = sum (sum a b) c.
  • sum a b = sum b a.
val prod : t -> t -> t

An associative binary operation over the type t. The following should hold:

  • prod a (prod b c) = prod (prod a b) c.
  • prod a (sum b c) = sum (prod a b) (prod a c).
val one : t

one returns identify action, which is a modification representing "no modifications"

val zero : t

zero returns empty action, which consistently with OpenFlow, means "drop"

val negate : t -> t

negate action implements negation for the zero and one actions. Any non-zero action will be mapped to zero by this function.

val to_policy : t -> Frenetic_netkat.Syntax.policy

to_policy a converts an action to a NetKAT policy. Since it's only modifications, it will have no predicates

val demod : Pattern.t -> t -> t

demod pattern removes any patterns from actions

to_sdn switch action converts a NetKAT action to an SDN action. At the moment this function assumes that fields are assigned to proper bitwidth integers, and does no validation along those lines. If the input is derived from a NetKAT surface syntax program, then this assumption likely holds.

val get_queries : t -> string list

get_queries action returns a list of queries used in actions. May have dupes.

val pipes : t -> Core.String.Set.t

get_pipes action returns a set of pipes used in actions

val queries : t -> string list

queries action returns a de-duped set of queries referenced in action

val to_string : t -> string