openflow alternatives and similar packages
Based on the "Networking" category.
Alternatively, view openflow alternatives based on common mentions on social networks and blogs.
-
snap-core
Core type definitions (Snap monad, HTTP types, etc) and utilities for web handlers. -
snap-server
A fast HTTP server library, which runs Snap web handlers. -
call-haskell-from-anything
Call Haskell functions from any programming language via serialization and dynamic libraries -
PortFusion
Haskell-powered cross-platform transport-layer distributed reverse / forward proxy & tunneling solution – currently available for all TCP protocols (RDP, VNC, HTTP(S), SSH, ...). -
io-streams
Simple, composable, and easy-to-use stream I/O for Haskell -
network-transport-zeromq
ZeroMQ transport for distributed-process (aka Cloud Haskell) -
glirc
Haskell IRC library and console client - Join us on libera.chat #glirc -
HaskellNet
Haskell library which provides client support for POP3, SMTP, and IMAP protocols. -
ngx-export
A comprehensive web framework aimed at building custom Haskell handlers for the Nginx Web Server -
http-types
Generic HTTP types for Haskell (for both client and server code) -
graphula
A simple interface for generating persistent data and linking its dependencies -
secure-sockets
A library for making secure connections between servers. -
network-transport-tcp
TCP Realisation of Network.Transport -
linklater
A Haskell library for the Slack API (including real-time messaging!)
Free Global Payroll designed for tech teams
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of openflow or a related project?
README
OpenFlow 
OpenFlow is a Haskell library that implements OpenFlow protocols 1.0 and 1.3. It defines data types that model the logical content of the various OpenFlow protocol messages and provides serialization and deserialization methods using the binary package. It also provides basic functions to start servers that use these representations.
Installation
To build a controller using this library, you need to install GHC and install this library. For information on how to install Haskell, head over to https://www.haskell.org. To install this library, clone this repository, enter the cloned directory, and then run cabal install
.
Getting Started
To write an OpenFlow 1.3 controller, start with the following template, and then fill in the messageHandler
function:
import Network.Data.OF13.Message
import Network.Data.OF13.Server
main :: IO ()
main = runServerOne 6633 factory
where factory sw = handshake sw >> return (messageHandler sw)
handshake :: Switch -> IO ()
handshake sw = sendMessage sw [Hello { xid = 0, len = 8 }]
messageHandler :: Switch -> Maybe Message -> IO ()
messageHandler _ Nothing = putStrLn "Disconnecting"
messageHandler sw (Just msg) = print msg >> sendMessage sw [FeatureRequest 1]
Place the above source into a file, for example, Main.hs
. Assuming you have installed ghc
and this library, you can then run ghc --make Main.hs
to build an executable from Main.hs
. You can then run it as Main
.
The above main
program calls runServerOne
which will wait for a single OpenFlow 1.3 server to connect on port 6633 and then will run the given factory
function. The factory
function performs an initial handshake
, which, in this bare bones example, consists of sending a Hello
message to the switch, and then returns a message handler function messageHandler
that will be used to interact with that switch until the connection is terminated. When the server receives an OpenFlow 1.3 message m
, it will run messageHandler (Just m)
and when the connection is terminated, the server runs messageHandler Nothing
. The message handler can do anything, but typically it sends messages to the switch. To do this, use the sendMessage
function.