hans-2.4.0.1: hans.cabal
name: hans
version: 2.4.0.1
cabal-version: >= 1.8
license: BSD3
license-file: LICENSE
author: Galois Inc., Peng Li, Stephan Zdancewic
maintainer: halvm-devel@community.galois.com
category: Networking
synopsis: IPv4 Network Stack
build-type: Simple
description:
HaNS is a lightweight, pure Haskell network stack that can be used for Haskell
networking in the context of the HaLVM, or with a Linux tap device. Currently,
HaNS supports 802.3, IPv4, ARP, DHCP (partially), ICMP, UDP, and TCP.
source-repository head
type: git
location: git://github.com/GaloisInc/HaNS.git
flag bounded-channels
default: False
description: Use bounded channels for message passing
flag enable-tests
default: False
description: Enable building the test suite
flag example
default: False
description: Build the example program
flag web-server
description: Build a simple web-server example
flag word32-in-random
default: False
description: Word32 in Random
library
if(os(HaLVM))
build-depends: XenDevice >= 2.0.0 && < 3.0.0,
HALVMCore >= 2.0.0 && < 3.0.0
exposed-modules: Hans.Device.Xen,
Hans.Device.Ivc
else
build-depends: unix
include-dirs: cbits
c-sources: cbits/tapdevice.c
exposed-modules: Hans.Device.Tap
if flag(bounded-channels)
build-depends: BoundedChan
cpp-options: -DBOUNDED_CHANNELS
ghc-options: -Wall
hs-source-dirs: src
build-depends: base >= 4.0.0.0 && < 5,
cereal >= 0.3.5.2,
bytestring >= 0.9.1.0,
containers >= 0.3.0.0,
monadLib >= 3.6.0,
time >= 1.1.0.0,
fingertree >= 0.0.1.0,
stm >= 2.4
if flag(word32-in-random)
build-depends: random >= 1.0.1.0
cpp-options: -DWORD32_IN_RANDOM
else
build-depends: random >= 1.0.0.0
exposed-modules: Data.PrefixTree,
Hans.Address,
Hans.Address.IP4,
Hans.Address.Mac,
Hans.Channel,
Hans.DhcpClient,
Hans.Layer,
Hans.Layer.Arp,
Hans.Layer.Arp.Table,
Hans.Layer.Ethernet,
Hans.Layer.Dns,
Hans.Layer.IP4,
Hans.Layer.IP4.Fragmentation,
Hans.Layer.IP4.Routing,
Hans.Layer.Icmp4,
Hans.Layer.Tcp,
Hans.Layer.Tcp.Handlers,
Hans.Layer.Tcp.Messages,
Hans.Layer.Tcp.Monad,
Hans.Layer.Tcp.Socket,
Hans.Layer.Tcp.Timers,
Hans.Layer.Tcp.Types,
Hans.Layer.Tcp.WaitBuffer,
Hans.Layer.Tcp.Window,
Hans.Layer.Udp,
Hans.Message.Arp,
Hans.Message.Dhcp4,
Hans.Message.Dhcp4Codec,
Hans.Message.Dhcp4Options,
Hans.Message.Dns,
Hans.Message.EthernetFrame,
Hans.Message.Icmp4,
Hans.Message.Ip4,
Hans.Message.Tcp,
Hans.Message.Types,
Hans.Message.Udp,
Hans.NetworkStack,
Hans.Ports,
Hans.Simple,
Hans.Timers,
Hans.Utils,
Hans.Utils.Checksum
executable test
if flag(example)
buildable: True
else
buildable: False
if(flag(bounded-channels))
build-depends: BoundedChan
cpp-options: -DBOUNDED_CHANNELS
main-is: test.hs
other-modules: WebServer
ghc-options: -Wall
hs-source-dirs: example
build-depends: base >= 4.0.0.0 && < 5,
cereal >= 0.3.5.2,
bytestring >= 0.9.1.0,
containers >= 0.3.0.0,
monadLib >= 3.6.0,
time >= 1.1.0.0,
old-locale >= 1.0.0.0,
hans
if os(HaLVM)
build-depends: XenDevice >= 2.0.0 && < 3.0.0,
HALVMCore >= 2.0.0 && < 3.0.0
else
ghc-options: -threaded
executable web-server
main-is: Main.hs
hs-source-dirs: web-server
ghc-options: -Wall -threaded -rtsopts -fno-warn-unused-do-bind
-fno-warn-orphans
if os(HaLVM)
buildable: False
else
if flag(web-server)
build-depends: base >= 4.0.0.0 && < 5,
cereal >= 0.3.5.2,
bytestring >= 0.9.1.0,
containers >= 0.3.0.0,
monadLib >= 3.6.0,
time >= 1.1.0.0,
old-locale >= 1.0.0.0,
HTTP >= 4000.2.17,
blaze-html >= 0.7.0.2,
blaze-markup,
hans
else
buildable: False
executable tcp-test
main-is: Main.hs
hs-source-dirs: tcp-test
ghc-options: -Wall -rtsopts -threaded
build-depends: base >= 4.0.0.0 && < 5,
cereal >= 0.3.5.2,
bytestring >= 0.9.1.0,
containers >= 0.3.0.0,
monadLib >= 3.6.0,
time >= 1.1.0.0,
old-locale >= 1.0.0.0,
hans
if os(HaLVM)
build-depends: XenDevice >= 2.0.0 && < 3.0.0,
HALVMCore >= 2.0.0 && < 3.0.0
executable echo-client
main-is: Main.hs
hs-source-dirs: echo-client
ghc-options: -Wall -rtsopts -threaded
build-depends: base >= 4.0.0.0 && < 5,
cereal >= 0.3.5.2,
bytestring >= 0.9.1.0,
containers >= 0.3.0.0,
monadLib >= 3.6.0,
time >= 1.1.0.0,
old-locale >= 1.0.0.0,
hans
if os(HaLVM)
build-depends: XenDevice >= 2.0.0 && < 3.0.0,
HALVMCore >= 2.0.0 && < 3.0.0
executable tcp-test-client
main-is: Main.hs
hs-source-dirs: tcp-test-client
if os(HaLVM)
buildable: False
else
build-depends: base,
bytestring,
network
executable test-suite
hs-source-dirs: tests
main-is: Main.hs
if flag(enable-tests)
buildable: True
other-modules: Icmp4,
Icmp4.Packet,
IP4,
IP4.Addr,
IP4.Packet,
Tcp,
Tcp.Packet,
Tcp.Window,
Udp,
Udp.Packet,
Utils
build-depends: base >= 4 && < 5,
containers >= 0.3,
bytestring >= 0.9.1,
old-locale >= 1,
test-framework-quickcheck2 >= 0.2.12.2,
test-framework >= 0.6,
QuickCheck >= 2.4.2,
random >= 1.0.1.1,
cereal >= 0.3.5.2,
hans
else
buildable: False