module Net.ClientInterface where import Data.Word(Word16) import qualified Net.IPv4 as IP import qualified Net.ARP_Protocol as ARP import qualified Net.UDP_Client as UC import qualified Net.TCP_Client as TC data Config = DHCP | Fixed { Config -> Addr myIP,Config -> Addr routerIP,Config -> Addr netmask::IP.Addr } deriving (Int -> Config -> ShowS [Config] -> ShowS Config -> String (Int -> Config -> ShowS) -> (Config -> String) -> ([Config] -> ShowS) -> Show Config forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> Config -> ShowS showsPrec :: Int -> Config -> ShowS $cshow :: Config -> String show :: Config -> String $cshowList :: [Config] -> ShowS showList :: [Config] -> ShowS Show) fixed :: Addr -> Addr -> Config fixed Addr myIP Addr routerIP = Addr -> Addr -> Addr -> Config Fixed Addr myIP Addr routerIP (Addr -> Addr IP.defaultNetmask Addr myIP) data Net m = Net { forall (m :: * -> *). Net m -> Addr -> Word16 -> Word16 -> m () ping :: IP.Addr -> Word16 -> Word16 -> m (), forall (m :: * -> *). Net m -> m CacheDump dump :: m ARP.CacheDump, forall (m :: * -> *). Net m -> Interface m udp :: UC.Interface m, forall (m :: * -> *). Net m -> Interface m tcp :: TC.Interface m }