netcore-1.0.0: src/Frenetic/Server.hs
module Frenetic.Server
( controller
, dynController
) where
import Frenetic.Hosts.Nettle
import Frenetic.NetCore.Types
import Frenetic.Common
-- |Starts an OpenFlow controller that runs dynamic NetCore programs.
--
-- The controller reads NetCore programs from the given channel. When
-- the controller receives a program on the channel, it compiles it and
-- reconfigures the network to run it.
dynController :: Chan Policy
-> Chan (Loc, ByteString) -- ^packets to emit
-> IO ()
dynController = nettleServer
-- |Starts an OpenFlow controller that runs a static NetCore program.
controller :: Policy -> IO ()
controller policy = do
ch <- newChan
writeChan ch policy
pktChan <- newChan
dynController ch pktChan