packages feed

mptcp-pm-0.0.3: mptcp-pm.cabal

cabal-version: 3.0
name: mptcp-pm
version: 0.0.3
license: GPL-3.0-only
license-file: LICENSE
build-type: Simple
Maintainer:  teto
Category:   Network
Synopsis: A Multipath TCP path manager
Homepage:   https://github.com/teto/netlink_pm
Description:
  Multipath TCP (www.multipath-tcp.org) starting from version 0.95 provides a
  netlink path manager module. This package implements the userspace component
  in charge of controlling MPTCP subflow establishement and various behaviors.
data-files:
extra-source-files: headers/*.h headers/linux/*.h README.md CHANGELOG

Source-repository head
  type:       git
  location:   https://github.com/teto/mptcp-pm


-- Flag Dev {
--   Description: Develop with a local netlink library
--   Default:     True
-- }


common shared-properties
    default-language: Haskell2010
    -- -fno-warn-unused-imports
    -- -fforce-recomp  makes it build twice
    ghc-options: -Wall -fno-warn-unused-binds -fno-warn-unused-matches
    build-depends: netlink >= 1.1.2.0


library
    import: shared-properties
    default-language: Haskell2010
    -- for the .chs => c2hs
    -- apparently this just helps getting a better error messages
    Includes:          tcp_states.h, linux/sock_diag.h, linux/inet_diag.h, linux/mptcp.h
    -- TODO try to pass it from CLI instead , Net.TcpInfo
    include-dirs:    headers
    default-extensions: DeriveGeneric
    autogen-modules: Net.Mptcp.Constants, Net.SockDiag.Constants, Net.Tcp.Constants
    build-depends: base >= 4.12 && < 4.17,
      containers
        , bytestring
       -- , fast-logger
       , katip
       , process
       , cereal
       , enumset
       , ip
       , bytestring-conversion
       , text
       -- todo get rid of it
       , mtl
       -- for merge
       , aeson
       , aeson-pretty
       , aeson-extra
       -- to help with merging json content
       , unordered-containers
       -- to create temp folder/files
       , transformers
    hs-source-dirs: .
    build-tool-depends: c2hs:c2hs
    Exposed-Modules:
      Net.SockDiag
      , Net.Tcp
      , Net.Bitset
      , Net.Mptcp
      , Net.IPAddress
      , Net.Tcp.Definitions
      , Net.Tcp.Constants
      , Net.Mptcp.Constants, Net.SockDiag.Constants
      -- TODO let it high level
      , Net.Mptcp.PathManager
      , Net.Mptcp.PathManager.Default


-- monitor new mptcp connections
-- and delegate the behavior to a monitor
executable mptcp-manager
    import: shared-properties
    default-language: Haskell2010
    -- ghc-options: -prof
    build-depends:
        aeson
       , aeson-pretty
       , aeson-extra
       , base >= 4.12 && < 4.17
       , bytestring
       , containers
       , mptcp-pm
       , optparse-applicative
       , transformers
       -- , fast-logger
       , hslogger
       , ip
       , text
       , mtl
       , cereal
       , process
       , temporary
       , filepath
       -- to use Simple module. Try to do without
       , netlink >= 1.1.2.0
    default-extensions: DeriveGeneric
    main-is: daemon.hs
    hs-source-dirs: hs/
    ghc-options: -threaded -rtsopts

Test-Suite test-tcp
  -- 2 types supported, exitcode is based on ... exit codes ....
  type:               exitcode-stdio-1.0
  default-language: Haskell2010
  main-is:            Main.hs
  hs-source-dirs:     test
  ghc-options: -threaded -rtsopts
  build-depends:      base >=4.12
                     , HUnit
                     , mptcp-pm
                     , ip, text