NetKAT Syntax
The NetKAT language is central to Frenetic, and we factor out the central types here. The big actors on NetKAT structures are Compiler which compiles NetKAT into flow tables, Parser which turns NetKAT strings (e.g "TcpSrcPort(8080); port := 2") into NetKAT, and Json which turns JSON-formatted NetKAT into NetKAT
val equal_abstract_location : abstract_location ‑> abstract_location ‑> Ppx_deriving_runtime.bool
include sig ... end
val abstract_location_of_sexp : Ppx_sexp_conv_lib.Sexp.t ‑> abstract_location
val sexp_of_abstract_location : abstract_location ‑> Ppx_sexp_conv_lib.Sexp.t
val compare_abstract_location : abstract_location ‑> abstract_location ‑> int
val hash_fold_abstract_location : Ppx_hash_lib.Std.Hash.state ‑> abstract_location ‑> Ppx_hash_lib.Std.Hash.state
val hash_abstract_location : abstract_location ‑> Ppx_hash_lib.Std.Hash.hash_value
type header_val
=
| Switch of switchId |
| Location of location |
| EthSrc of Frenetic_kernel.Packet.dlAddr |
| EthDst of Frenetic_kernel.Packet.dlAddr |
| Vlan of Frenetic_kernel.Packet.int16 |
| VlanPcp of Frenetic_kernel.Packet.dlVlanPcp |
| EthType of Frenetic_kernel.Packet.dlTyp |
| IPProto of Frenetic_kernel.Packet.nwProto |
| IP4Src of Frenetic_kernel.Packet.nwAddr * int32 |
| IP4Dst of Frenetic_kernel.Packet.nwAddr * int32 |
| TCPSrcPort of Frenetic_kernel.Packet.tpPort |
| TCPDstPort of Frenetic_kernel.Packet.tpPort |
| VSwitch of vswitchId |
| VPort of vportId |
| VFabric of vfabricId |
| Meta of metaId * int64 |
| From of abstract_location |
| AbstractLoc of abstract_location |
include sig ... end
val header_val_of_sexp : Ppx_sexp_conv_lib.Sexp.t ‑> header_val
val sexp_of_header_val : header_val ‑> Ppx_sexp_conv_lib.Sexp.t
val id : policy
val drop : policy
include sig ... end
val switch_port_of_sexp : Ppx_sexp_conv_lib.Sexp.t ‑> switch_port
val sexp_of_switch_port : switch_port ‑> Ppx_sexp_conv_lib.Sexp.t