Module type Frenetic_async.NetKAT_Controller.CONTROLLER

val start : int ‑> unit

start pt initializes the controller, listening on TCP port pt.

val event : unit ‑> Frenetic_kernel.OpenFlow.event Async.Deferred.t

event () returns the next event from the network.

val switches : unit ‑> (Frenetic_kernel.OpenFlow.switchId * Frenetic_kernel.OpenFlow.portId list) list Async.Deferred.t

current_switches () returns the set of switches currently connected to this controller.

val port_stats : Frenetic_kernel.OpenFlow.switchId ‑> Frenetic_kernel.OpenFlow.portId ‑> Frenetic_kernel.OpenFlow.portStats Async.Deferred.t

port_stats sw pt returns byte and packet counts for switchsw port pt.

val update : Frenetic_netkat.Syntax.policy ‑> unit Async.Deferred.t

update p sets to local policy p.

val update_global : Frenetic_netkat.Syntax.policy ‑> unit Async.Deferred.t

update p sets to global policy p.

val update_fdd : Frenetic_netkat.Local_compiler.t ‑> unit Async.Deferred.t

update_fdd fdd sets the global policy to the one encoded by the FDD.

val packet_out : Frenetic_kernel.OpenFlow.switchId ‑> Frenetic_kernel.OpenFlow.portId option ‑> Frenetic_kernel.OpenFlow.payload ‑> Frenetic_netkat.Syntax.policy list ‑> unit Async.Deferred.t

send_packet_out sw pd p injects packets into the network by applying p to pd at sw. Optional ingress port helps locate buffer.

val query : string ‑> (int64 * int64) Async.Deferred.t

query x returns byte and packet counts for query x.

val set_current_compiler_options : Frenetic_netkat.Local_compiler.compiler_options ‑> unit

set_current_compiler_options co sets compiler options for subsequent invocations