| Copyright | (c) The University of Glasgow 2001 | 
|---|---|
| License | BSD-3-Clause | 
| Maintainer | libraries@haskell.org | 
| Stability | experimental | 
| Portability | non-portable | 
| Safe Haskell | None | 
| Language | Haskell2010 | 
Network.BSD
Description
The Network.BSD module defines Haskell bindings to network programming functionality (mostly network database operations) provided by BSD Unix derivatives.
NOTE: Some of the types are reexported from Network.Socket in order to make the network-bsd API self-contained.
Windows compatibility
The following functions are not exported by Network.BSD on the Windows platform:
- getHostEntries,- setHostEntry,- getHostEntry,- endHostEntry
- getServiceEntries,- getServiceEntry,- setServiceEntry,- endServiceEntry
- getProtocolEntries,- setProtocolEntry,- getProtocolEntry,- endProtocolEntry
- getNetworkByName,- getNetworkByAddr,- getNetworkEntries,- setNetworkEntry,- getNetworkEntry,- endNetworkEntry
Synopsis
- type HostName = String
- type HostAddress = Word32
- data Family where- pattern AF_UNSPEC :: Family
- pattern AF_UNIX :: Family
- pattern AF_INET :: Family
- pattern AF_INET6 :: Family
- pattern AF_IMPLINK :: Family
- pattern AF_PUP :: Family
- pattern AF_CHAOS :: Family
- pattern AF_NS :: Family
- pattern AF_NBS :: Family
- pattern AF_ECMA :: Family
- pattern AF_DATAKIT :: Family
- pattern AF_CCITT :: Family
- pattern AF_SNA :: Family
- pattern AF_DECnet :: Family
- pattern AF_DLI :: Family
- pattern AF_LAT :: Family
- pattern AF_HYLINK :: Family
- pattern AF_APPLETALK :: Family
- pattern AF_ROUTE :: Family
- pattern AF_NETBIOS :: Family
- pattern AF_NIT :: Family
- pattern AF_802 :: Family
- pattern AF_ISO :: Family
- pattern AF_OSI :: Family
- pattern AF_NETMAN :: Family
- pattern AF_X25 :: Family
- pattern AF_AX25 :: Family
- pattern AF_OSINET :: Family
- pattern AF_GOSSIP :: Family
- pattern AF_IPX :: Family
- pattern Pseudo_AF_XTP :: Family
- pattern AF_CTF :: Family
- pattern AF_WAN :: Family
- pattern AF_SDL :: Family
- pattern AF_NETWARE :: Family
- pattern AF_NDD :: Family
- pattern AF_INTF :: Family
- pattern AF_COIP :: Family
- pattern AF_CNT :: Family
- pattern Pseudo_AF_RTIP :: Family
- pattern Pseudo_AF_PIP :: Family
- pattern AF_SIP :: Family
- pattern AF_ISDN :: Family
- pattern Pseudo_AF_KEY :: Family
- pattern AF_NATM :: Family
- pattern AF_ARP :: Family
- pattern Pseudo_AF_HDRCMPLT :: Family
- pattern AF_ENCAP :: Family
- pattern AF_LINK :: Family
- pattern AF_RAW :: Family
- pattern AF_RIF :: Family
- pattern AF_NETROM :: Family
- pattern AF_BRIDGE :: Family
- pattern AF_ATMPVC :: Family
- pattern AF_ROSE :: Family
- pattern AF_NETBEUI :: Family
- pattern AF_SECURITY :: Family
- pattern AF_PACKET :: Family
- pattern AF_ASH :: Family
- pattern AF_ECONET :: Family
- pattern AF_ATMSVC :: Family
- pattern AF_IRDA :: Family
- pattern AF_PPPOX :: Family
- pattern AF_WANPIPE :: Family
- pattern AF_BLUETOOTH :: Family
- pattern AF_CAN :: Family
 
- 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
- data PortNumber
- 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 ()
- 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 and network addresses
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".
type HostAddress = Word32 #
The raw network byte order number is read using host byte order.
 Therefore on little-endian architectures the byte order is swapped. For
 example 127.0.0.1 is represented as 0x0100007f on little-endian hosts
 and as 0x7f000001 on big-endian hosts.
For direct manipulation prefer hostAddressToTuple and
 tupleToHostAddress.
Address families.  The AF_xxxxx constants are widely used as synonyms
 for the corresponding PF_xxxxx protocol family values, to which they are
 numerically equal in mainstream socket API implementations.
Strictly correct usage would be to pass the PF_xxxxx constants as the first
 argument when creating a Socket, while the AF_xxxxx constants should be
 used as addrFamily values with getAddrInfo.  For now only the AF_xxxxx
 constants are provided.
Some of the defined patterns may be unsupported on some systems:
 see isSupportedFamily.
Bundled Patterns
| pattern AF_UNSPEC :: Family | unspecified | 
| pattern AF_UNIX :: Family | UNIX-domain | 
| pattern AF_INET :: Family | Internet Protocol version 4 | 
| pattern AF_INET6 :: Family | Internet Protocol version 6 | 
| pattern AF_IMPLINK :: Family | Arpanet imp addresses | 
| pattern AF_PUP :: Family | pup protocols: e.g. BSP | 
| pattern AF_CHAOS :: Family | mit CHAOS protocols | 
| pattern AF_NS :: Family | XEROX NS protocols | 
| pattern AF_NBS :: Family | nbs protocols | 
| pattern AF_ECMA :: Family | european computer manufacturers | 
| pattern AF_DATAKIT :: Family | datakit protocols | 
| pattern AF_CCITT :: Family | CCITT protocols, X.25 etc | 
| pattern AF_SNA :: Family | IBM SNA | 
| pattern AF_DECnet :: Family | DECnet | 
| pattern AF_DLI :: Family | Direct data link interface | 
| pattern AF_LAT :: Family | LAT | 
| pattern AF_HYLINK :: Family | NSC Hyperchannel | 
| pattern AF_APPLETALK :: Family | Apple Talk | 
| pattern AF_ROUTE :: Family | Internal Routing Protocol (aka AF_NETLINK) | 
| pattern AF_NETBIOS :: Family | NetBios-style addresses | 
| pattern AF_NIT :: Family | Network Interface Tap | 
| pattern AF_802 :: Family | IEEE 802.2, also ISO 8802 | 
| pattern AF_ISO :: Family | ISO protocols | 
| pattern AF_OSI :: Family | umbrella of all families used by OSI | 
| pattern AF_NETMAN :: Family | DNA Network Management | 
| pattern AF_X25 :: Family | CCITT X.25 | 
| pattern AF_AX25 :: Family | AX25 | 
| pattern AF_OSINET :: Family | AFI | 
| pattern AF_GOSSIP :: Family | US Government OSI | 
| pattern AF_IPX :: Family | Novell Internet Protocol | 
| pattern Pseudo_AF_XTP :: Family | eXpress Transfer Protocol (no AF) | 
| pattern AF_CTF :: Family | Common Trace Facility | 
| pattern AF_WAN :: Family | Wide Area Network protocols | 
| pattern AF_SDL :: Family | SGI Data Link for DLPI | 
| pattern AF_NETWARE :: Family | Netware | 
| pattern AF_NDD :: Family | NDD | 
| pattern AF_INTF :: Family | Debugging use only | 
| pattern AF_COIP :: Family | connection-oriented IP, aka ST II | 
| pattern AF_CNT :: Family | Computer Network Technology | 
| pattern Pseudo_AF_RTIP :: Family | Help Identify RTIP packets | 
| pattern Pseudo_AF_PIP :: Family | Help Identify PIP packets | 
| pattern AF_SIP :: Family | Simple Internet Protocol | 
| pattern AF_ISDN :: Family | Integrated Services Digital Network | 
| pattern Pseudo_AF_KEY :: Family | Internal key-management function | 
| pattern AF_NATM :: Family | native ATM access | 
| pattern AF_ARP :: Family | ARP (RFC 826) | 
| pattern Pseudo_AF_HDRCMPLT :: Family | Used by BPF to not rewrite hdrs in iface output | 
| pattern AF_ENCAP :: Family | ENCAP | 
| pattern AF_LINK :: Family | Link layer interface | 
| pattern AF_RAW :: Family | Link layer interface | 
| pattern AF_RIF :: Family | raw interface | 
| pattern AF_NETROM :: Family | Amateur radio NetROM | 
| pattern AF_BRIDGE :: Family | multiprotocol bridge | 
| pattern AF_ATMPVC :: Family | ATM PVCs | 
| pattern AF_ROSE :: Family | Amateur Radio X.25 PLP | 
| pattern AF_NETBEUI :: Family | Netbeui 802.2LLC | 
| pattern AF_SECURITY :: Family | Security callback pseudo AF | 
| pattern AF_PACKET :: Family | Packet family | 
| pattern AF_ASH :: Family | Ash | 
| pattern AF_ECONET :: Family | Acorn Econet | 
| pattern AF_ATMSVC :: Family | ATM SVCs | 
| pattern AF_IRDA :: Family | IRDA sockets | 
| pattern AF_PPPOX :: Family | PPPoX sockets | 
| pattern AF_WANPIPE :: Family | Wanpipe API sockets | 
| pattern AF_BLUETOOTH :: Family | bluetooth sockets | 
| pattern AF_CAN :: Family | Controller Area Network | 
getHostName :: IO HostName #
Calling getHostName returns the standard host name for the current
 processor, as set at boot time.
gethostname(2).
Representation of the POSIX hostent structure defined in netdb.h.
Constructors
| HostEntry | |
| Fields 
 | |
Instances
| NFData HostEntry # | Since: 2.8.1.0 | 
| Defined in Network.BSD | |
| Storable HostEntry # | |
| Defined in Network.BSD | |
| Read HostEntry # | |
| Show HostEntry # | |
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 #
Low level functionality
setHostEntry :: Bool -> IO () #
sethostent(3).
getHostEntry :: IO HostEntry #
gethostent(3).
endHostEntry :: IO () #
endhostent(3).
Service names
data ServiceEntry #
Representation of the POSIX servent structure defined in netdb.h.
Constructors
| ServiceEntry | |
| Fields 
 | |
Instances
| NFData ServiceEntry # | Since: 2.8.1.0 | 
| Defined in Network.BSD Methods rnf :: ServiceEntry -> () # | |
| Storable ServiceEntry # | |
| Defined in Network.BSD Methods sizeOf :: ServiceEntry -> Int # alignment :: ServiceEntry -> Int # peekElemOff :: Ptr ServiceEntry -> Int -> IO ServiceEntry # pokeElemOff :: Ptr ServiceEntry -> Int -> ServiceEntry -> IO () # peekByteOff :: Ptr b -> Int -> IO ServiceEntry # pokeByteOff :: Ptr b -> Int -> ServiceEntry -> IO () # peek :: Ptr ServiceEntry -> IO ServiceEntry # poke :: Ptr ServiceEntry -> ServiceEntry -> IO () # | |
| Show ServiceEntry # | |
| Defined in Network.BSD Methods showsPrec :: Int -> ServiceEntry -> ShowS # show :: ServiceEntry -> String # showList :: [ServiceEntry] -> ShowS # | |
type ServiceName = String #
Either a service name e.g., "http" or a numeric port number.
data PortNumber #
Port number.
   Use the Num instance (i.e. use a literal) to create a
   PortNumber value.
>>>1 :: PortNumber1>>>read "1" :: PortNumber1>>>show (12345 :: PortNumber)"12345">>>50000 < (51000 :: PortNumber)True>>>50000 < (52000 :: PortNumber)True>>>50000 + (10000 :: PortNumber)60000
Instances
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] #
Retrieve list of all ServiceEntry via getservent(3).
Low level functionality
getServiceEntry :: IO ServiceEntry #
getservent(3).
setServiceEntry :: Bool -> IO () #
setservent(3).
endServiceEntry :: IO () #
endservent(3).
Protocol names
type ProtocolName = String #
type ProtocolNumber = CInt #
Protocol number.
data ProtocolEntry #
Representation of the POSIX protoent structure defined in netdb.h.
Constructors
| ProtocolEntry | |
| Fields 
 | |
Instances
| NFData ProtocolEntry # | Since: 2.8.1.0 | 
| Defined in Network.BSD Methods rnf :: ProtocolEntry -> () # | |
| Storable ProtocolEntry # | |
| Defined in Network.BSD Methods sizeOf :: ProtocolEntry -> Int # alignment :: ProtocolEntry -> Int # peekElemOff :: Ptr ProtocolEntry -> Int -> IO ProtocolEntry # pokeElemOff :: Ptr ProtocolEntry -> Int -> ProtocolEntry -> IO () # peekByteOff :: Ptr b -> Int -> IO ProtocolEntry # pokeByteOff :: Ptr b -> Int -> ProtocolEntry -> IO () # peek :: Ptr ProtocolEntry -> IO ProtocolEntry # poke :: Ptr ProtocolEntry -> ProtocolEntry -> IO () # | |
| Read ProtocolEntry # | |
| Defined in Network.BSD Methods readsPrec :: Int -> ReadS ProtocolEntry # readList :: ReadS [ProtocolEntry] # | |
| Show ProtocolEntry # | |
| Defined in Network.BSD Methods showsPrec :: Int -> ProtocolEntry -> ShowS # show :: ProtocolEntry -> String # showList :: [ProtocolEntry] -> ShowS # | |
getProtocolByName :: ProtocolName -> IO ProtocolEntry #
getprotobyname(3).
getProtocolByNumber :: ProtocolNumber -> IO ProtocolEntry #
getprotobynumber(3).
getProtocolNumber :: ProtocolName -> IO ProtocolNumber #
getprotobyname(3).
defaultProtocol :: ProtocolNumber #
This is the default protocol for a given service.
>>>defaultProtocol0
getProtocolEntries :: Bool -> IO [ProtocolEntry] #
Retrieve list of all ProtocolEntry via getprotoent(3).
Low level functionality
setProtocolEntry :: Bool -> IO () #
setprotoent(3).
getProtocolEntry :: IO ProtocolEntry #
getprotoent(3).
endProtocolEntry :: IO () #
endprotoent(3).
Network names
type NetworkName = String #
type NetworkAddr = CULong #
data NetworkEntry #
Representation of the POSIX netent structure defined in netdb.h.
Constructors
| NetworkEntry | |
| Fields 
 | |
Instances
| NFData NetworkEntry # | Since: 2.8.1.0 | 
| Defined in Network.BSD Methods rnf :: NetworkEntry -> () # | |
| Storable NetworkEntry # | |
| Defined in Network.BSD Methods sizeOf :: NetworkEntry -> Int # alignment :: NetworkEntry -> Int # peekElemOff :: Ptr NetworkEntry -> Int -> IO NetworkEntry # pokeElemOff :: Ptr NetworkEntry -> Int -> NetworkEntry -> IO () # peekByteOff :: Ptr b -> Int -> IO NetworkEntry # pokeByteOff :: Ptr b -> Int -> NetworkEntry -> IO () # peek :: Ptr NetworkEntry -> IO NetworkEntry # poke :: Ptr NetworkEntry -> NetworkEntry -> IO () # | |
| Read NetworkEntry # | |
| Defined in Network.BSD Methods readsPrec :: Int -> ReadS NetworkEntry # readList :: ReadS [NetworkEntry] # | |
| Show NetworkEntry # | |
| Defined in Network.BSD Methods showsPrec :: Int -> NetworkEntry -> ShowS # show :: NetworkEntry -> String # showList :: [NetworkEntry] -> ShowS # | |
getNetworkByName :: NetworkName -> IO NetworkEntry #
getnetbyname(3).
getNetworkByAddr :: NetworkAddr -> Family -> IO NetworkEntry #
getnetbyaddr(3).
getNetworkEntries :: Bool -> IO [NetworkEntry] #
Get the list of network entries via getnetent(3).
Low level functionality
setNetworkEntry :: Bool -> IO () #
Open the network name database. The parameter specifies whether a connection is maintained open between various networkEntry calls
setnetent(3).
getNetworkEntry :: IO NetworkEntry #
getnetent(3).
endNetworkEntry :: IO () #
Close the connection to the network name database.
endnetent(3).