packages feed

mptcp-pm-0.0.4: mptcp-pm.cabal

cabal-version: 3.0
name: mptcp-pm
version: 0.0.4
license: GPL-3.0-only
license-file: LICENSE
build-type: Simple
Maintainer:  teto
Category:   Network, Mptcp
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.
  It contains a set of function that is also used in [mptcpanalyzer](https://hackage.haskell.org/packages/).

data-files:
extra-source-files:
  headers/*.h
  headers/linux/*.h
  README.md
  CHANGELOG



tested-with:         GHC == 8.10.7

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

Flag WithPolysemy {
  Description: Add polysemy plugin
  Default:     True
}

Flag Dev {
  Description: Relax constraints
  Default:     True
}


common shared-properties
    default-language: Haskell2010
    ghc-options:
      -Wall -fno-warn-unused-binds -fno-warn-unused-matches -haddock
    build-depends:
      -- TODO remove that boundary
      netlink >= 1.1.1.0
      , formatting
      , readable
      , polysemy
      , polysemy-log
      , polysemy-log-co

    default-extensions:
        FlexibleContexts
        , StrictData
        , DataKinds
        , FlexibleContexts
        , GADTs
        , LambdaCase
        -- , OverloadedStrings
        , PolyKinds
        , RankNTypes
        , ScopedTypeVariables
        , TemplateHaskell
        , TypeApplications
        , TypeOperators
        , TypeFamilies

    if flag(WithPolysemy)
        ghc-options: -fplugin=Polysemy.Plugin
        build-depends: polysemy-plugin


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.Tcp.Constants
    --   , Net.Mptcp.Constants
    --   , Net.SockDiag.Constants
    build-depends:
        base >= 4.12
      , containers
      , readable
      , bytestring
      , process
      , cereal
      , enumset
      , ip >= 1.7.3
      , bytestring-conversion
      , text
      -- todo get rid of it
      -- for liftIO
      , 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:
      src/
    build-tool-depends:
      c2hs:c2hs
    Exposed-Modules:
        Net.SockDiag
      , Net.Tcp
      , Net.Bitset
      , Net.Tcp.Constants
      , Net.Tcp.Definitions
      , Net.Mptcp
      , Net.Mptcp.Constants
      , Net.Mptcp.PathManager
      , Net.Mptcp.PathManager.Default
      , Net.IPAddress
      , Net.SockDiag.Constants
      -- TODO let it high level


-- monitor new mptcp connections
-- and delegate the behavior to a monitor
executable mptcp-manager
    import: shared-properties
    default-language: Haskell2010
    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.1.0
    default-extensions: DeriveGeneric
    main-is: Main.hs
    hs-source-dirs: src/app
    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