| Copyright | (c) The University of Glasgow 2001 | 
|---|---|
| License | BSD-style (see the file libraries/network/LICENSE) | 
| Maintainer | libraries@haskell.org | 
| Stability | experimental | 
| Portability | non-portable | 
| Safe Haskell | None | 
| Language | Haskell98 | 
Network.BSD
Contents
Description
The Network.BSD module defines Haskell bindings to network programming functionality provided by BSD Unix derivatives.
- type HostName = String
 - getHostName :: IO HostName
 - data HostEntry = HostEntry {
- hostName :: HostName
 - hostAliases :: [HostName]
 - hostFamily :: Family
 - hostAddresses :: [HostAddress]
 
 - getHostByName :: HostName -> IO HostEntry
 - getHostByAddr :: Family -> HostAddress -> IO HostEntry
 - hostAddress :: HostEntry -> HostAddress
 - getHostEntries :: Bool -> IO [HostEntry]
 - setHostEntry :: Bool -> IO ()
 - getHostEntry :: IO HostEntry
 - endHostEntry :: IO ()
 - data ServiceEntry = ServiceEntry {}
 - type ServiceName = String
 - getServiceByName :: ServiceName -> ProtocolName -> IO ServiceEntry
 - getServiceByPort :: PortNumber -> ProtocolName -> IO ServiceEntry
 - getServicePortNumber :: ServiceName -> IO PortNumber
 - getServiceEntries :: Bool -> IO [ServiceEntry]
 - getServiceEntry :: IO ServiceEntry
 - setServiceEntry :: Bool -> IO ()
 - endServiceEntry :: IO ()
 - type ProtocolName = String
 - type ProtocolNumber = CInt
 - data ProtocolEntry = ProtocolEntry {}
 - getProtocolByName :: ProtocolName -> IO ProtocolEntry
 - getProtocolByNumber :: ProtocolNumber -> IO ProtocolEntry
 - getProtocolNumber :: ProtocolName -> IO ProtocolNumber
 - defaultProtocol :: ProtocolNumber
 - getProtocolEntries :: Bool -> IO [ProtocolEntry]
 - setProtocolEntry :: Bool -> IO ()
 - getProtocolEntry :: IO ProtocolEntry
 - endProtocolEntry :: IO ()
 - data PortNumber
 - type NetworkName = String
 - type NetworkAddr = CULong
 - data NetworkEntry = NetworkEntry {}
 - getNetworkByName :: NetworkName -> IO NetworkEntry
 - getNetworkByAddr :: NetworkAddr -> Family -> IO NetworkEntry
 - getNetworkEntries :: Bool -> IO [NetworkEntry]
 - setNetworkEntry :: Bool -> IO ()
 - getNetworkEntry :: IO NetworkEntry
 - endNetworkEntry :: IO ()
 - ifNameToIndex :: String -> IO (Maybe Int)
 
Host names
Either a host name e.g., "haskell.org" or a numeric host
 address string consisting of a dotted decimal IPv4 address or an
 IPv6 address e.g., "192.168.0.1".
Calling getHostName returns the standard host name for the current processor, as set at boot time.
data HostEntry
Constructors
| HostEntry | |
Fields 
  | |
getHostByName :: HostName -> IO HostEntry
Resolve a HostName to IPv4 address.
getHostByAddr :: Family -> HostAddress -> IO HostEntry
Get a HostEntry corresponding to the given address and family.
 Note that only IPv4 is currently supported.
hostAddress :: HostEntry -> HostAddress
getHostEntries :: Bool -> IO [HostEntry]
Low level functionality
setHostEntry :: Bool -> IO ()
endHostEntry :: IO ()
Service names
type ServiceName = String
getServiceByName :: ServiceName -> ProtocolName -> IO ServiceEntry
Get service by name.
getServiceByPort :: PortNumber -> ProtocolName -> IO ServiceEntry
Get the service given a PortNumber and ProtocolName.
getServicePortNumber :: ServiceName -> IO PortNumber
Get the PortNumber corresponding to the ServiceName.
getServiceEntries :: Bool -> IO [ServiceEntry]
Low level functionality
setServiceEntry :: Bool -> IO ()
endServiceEntry :: IO ()
Protocol names
type ProtocolName = String
type ProtocolNumber = CInt
defaultProtocol :: ProtocolNumber
This is the default protocol for a given service.
getProtocolEntries :: Bool -> IO [ProtocolEntry]
Low level functionality
setProtocolEntry :: Bool -> IO ()
endProtocolEntry :: IO ()
Port numbers
data PortNumber
Use the Num instance (i.e. use a literal) to create a
 PortNumber value with the correct network-byte-ordering. You
 should not use the PortNum constructor. It will be removed in the
 next release.
Network names
type NetworkName = String
type NetworkAddr = CULong
getNetworkByAddr :: NetworkAddr -> Family -> IO NetworkEntry
getNetworkEntries :: Bool -> IO [NetworkEntry]
Get the list of network entries.
Low level functionality
setNetworkEntry :: Bool -> IO ()
Open the network name database. The parameter specifies whether a connection is maintained open between various networkEntry calls
endNetworkEntry :: IO ()
Close the connection to the network name database.
Interface names
ifNameToIndex :: String -> IO (Maybe Int)