Network.BSD

network-bsd-2.8.1.0: POSIX network database (<netdb.h>) API

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

Contents

- Host names and network addresses
  - Low level functionality
- Service names
  - Low level functionality
- Protocol names
  - Low level functionality
- Network names
  - Low level functionality
- Interface names

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 {
  - serviceName :: ServiceName
  - serviceAliases :: [ServiceName]
  - servicePort :: PortNumber
  - serviceProtocol :: ProtocolName
  }
- 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 {
  - protoName :: ProtocolName
  - protoAliases :: [ProtocolName]
  - protoNumber :: ProtocolNumber
  }
- 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 {
  - networkName :: NetworkName
  - networkAliases :: [NetworkName]
  - networkFamily :: Family
  - networkAddress :: NetworkAddr
  }
- 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

type HostName = String #

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`.

data Family where #

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

#### Instances

Instances details

Read Family |
Instance details Defined in Network.Socket.Types Methods readsPrec :: Int -> ReadS Family # readList :: ReadS [Family] # readPrec :: ReadPrec Family # readListPrec :: ReadPrec [Family] #
Show Family |
Instance details Defined in Network.Socket.Types Methods showsPrec :: Int -> Family -> ShowS # show :: Family -> String # showList :: [Family] -> ShowS #
Eq Family |
Instance details Defined in Network.Socket.Types Methods (==) :: Family -> Family -> Bool # (/=) :: Family -> Family -> Bool #
Ord Family |
Instance details Defined in Network.Socket.Types Methods compare :: Family -> Family -> Ordering # (<) :: Family -> Family -> Bool # (<=) :: Family -> Family -> Bool # (>) :: Family -> Family -> Bool # (>=) :: Family -> Family -> Bool # max :: Family -> Family -> Family # min :: Family -> Family -> Family #

getHostName :: IO HostName #

Calling `getHostName` returns the standard host name for the current processor, as set at boot time.

`gethostname(2)`.

data HostEntry #

Representation of the POSIX `hostent` structure defined in netdb.h.

Constructors

HostEntry |
Fields hostName :: HostName Official name of the host hostAliases :: [HostName] Alternative names of the host hostFamily :: Family Address type (currently `AF_INET`) hostAddresses :: [HostAddress] Set of network addresses for the host

#### Instances

Instances details

NFData HostEntry # | Since: 2.8.1.0
Instance details Defined in Network.BSD Methods rnf :: HostEntry -> () #
Storable HostEntry # |
Instance details Defined in Network.BSD Methods sizeOf :: HostEntry -> Int # alignment :: HostEntry -> Int # peekElemOff :: Ptr HostEntry -> Int -> IO HostEntry # pokeElemOff :: Ptr HostEntry -> Int -> HostEntry -> IO () # peekByteOff :: Ptr b -> Int -> IO HostEntry # pokeByteOff :: Ptr b -> Int -> HostEntry -> IO () # peek :: Ptr HostEntry -> IO HostEntry # poke :: Ptr HostEntry -> HostEntry -> IO () #
Read HostEntry # |
Instance details Defined in Network.BSD Methods readsPrec :: Int -> ReadS HostEntry # readList :: ReadS [HostEntry] # readPrec :: ReadPrec HostEntry # readListPrec :: ReadPrec [HostEntry] #
Show HostEntry # |
Instance details Defined in Network.BSD Methods showsPrec :: Int -> HostEntry -> ShowS # show :: HostEntry -> String # showList :: [HostEntry] -> ShowS #

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 #

Convenience function extracting one address in a `HostEntry`. Returns `error` if `HostEntry` contains no addresses.

getHostEntries :: Bool -> IO [HostEntry] #

Retrieve list of all `HostEntry` via `gethostent(3)`.

## 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 serviceName :: ServiceName Official service name serviceAliases :: [ServiceName] aliases servicePort :: PortNumber Port Number serviceProtocol :: ProtocolName Protocol to use

#### Instances

Instances details

NFData ServiceEntry # | Since: 2.8.1.0
Instance details Defined in Network.BSD Methods rnf :: ServiceEntry -> () #
Storable ServiceEntry # |
Instance details 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 # |
Instance details 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 :: PortNumber
    1
    >>> read "1" :: PortNumber
    1
    >>> show (12345 :: PortNumber)
    "12345"
    >>> 50000 < (51000 :: PortNumber)
    True
    >>> 50000 < (52000 :: PortNumber)
    True
    >>> 50000 + (10000 :: PortNumber)
    60000

#### Instances

Instances details

Bounded PortNumber |
Instance details Defined in Network.Socket.Types Methods minBound :: PortNumber # maxBound :: PortNumber #
Enum PortNumber |
Instance details Defined in Network.Socket.Types Methods succ :: PortNumber -> PortNumber # pred :: PortNumber -> PortNumber # toEnum :: Int -> PortNumber # fromEnum :: PortNumber -> Int # enumFrom :: PortNumber -> [PortNumber] # enumFromThen :: PortNumber -> PortNumber -> [PortNumber] # enumFromTo :: PortNumber -> PortNumber -> [PortNumber] # enumFromThenTo :: PortNumber -> PortNumber -> PortNumber -> [PortNumber] #
Storable PortNumber |
Instance details Defined in Network.Socket.Types Methods sizeOf :: PortNumber -> Int # alignment :: PortNumber -> Int # peekElemOff :: Ptr PortNumber -> Int -> IO PortNumber # pokeElemOff :: Ptr PortNumber -> Int -> PortNumber -> IO () # peekByteOff :: Ptr b -> Int -> IO PortNumber # pokeByteOff :: Ptr b -> Int -> PortNumber -> IO () # peek :: Ptr PortNumber -> IO PortNumber # poke :: Ptr PortNumber -> PortNumber -> IO () #
Num PortNumber |
Instance details Defined in Network.Socket.Types Methods (+) :: PortNumber -> PortNumber -> PortNumber # (-) :: PortNumber -> PortNumber -> PortNumber # (*) :: PortNumber -> PortNumber -> PortNumber # negate :: PortNumber -> PortNumber # abs :: PortNumber -> PortNumber # signum :: PortNumber -> PortNumber # fromInteger :: Integer -> PortNumber #
Read PortNumber |
Instance details Defined in Network.Socket.Types Methods readsPrec :: Int -> ReadS PortNumber # readList :: ReadS [PortNumber] # readPrec :: ReadPrec PortNumber # readListPrec :: ReadPrec [PortNumber] #
Integral PortNumber |
Instance details Defined in Network.Socket.Types Methods quot :: PortNumber -> PortNumber -> PortNumber # rem :: PortNumber -> PortNumber -> PortNumber # div :: PortNumber -> PortNumber -> PortNumber # mod :: PortNumber -> PortNumber -> PortNumber # quotRem :: PortNumber -> PortNumber -> (PortNumber, PortNumber) # divMod :: PortNumber -> PortNumber -> (PortNumber, PortNumber) # toInteger :: PortNumber -> Integer #
Real PortNumber |
Instance details Defined in Network.Socket.Types Methods toRational :: PortNumber -> Rational #
Show PortNumber |
Instance details Defined in Network.Socket.Types Methods showsPrec :: Int -> PortNumber -> ShowS # show :: PortNumber -> String # showList :: [PortNumber] -> ShowS #
Eq PortNumber |
Instance details Defined in Network.Socket.Types Methods (==) :: PortNumber -> PortNumber -> Bool # (/=) :: PortNumber -> PortNumber -> Bool #
Ord PortNumber |
Instance details Defined in Network.Socket.Types Methods compare :: PortNumber -> PortNumber -> Ordering # (<) :: PortNumber -> PortNumber -> Bool # (<=) :: PortNumber -> PortNumber -> Bool # (>) :: PortNumber -> PortNumber -> Bool # (>=) :: PortNumber -> PortNumber -> Bool # max :: PortNumber -> PortNumber -> PortNumber # min :: PortNumber -> PortNumber -> PortNumber #

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 protoName :: ProtocolName Official name protoAliases :: [ProtocolName] aliases protoNumber :: ProtocolNumber Protocol number

#### Instances

Instances details

NFData ProtocolEntry # | Since: 2.8.1.0
Instance details Defined in Network.BSD Methods rnf :: ProtocolEntry -> () #
Storable ProtocolEntry # |
Instance details 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 # |
Instance details Defined in Network.BSD Methods readsPrec :: Int -> ReadS ProtocolEntry # readList :: ReadS [ProtocolEntry] # readPrec :: ReadPrec ProtocolEntry # readListPrec :: ReadPrec [ProtocolEntry] #
Show ProtocolEntry # |
Instance details 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.

    >>> defaultProtocol
    0

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 networkName :: NetworkName Official network name networkAliases :: [NetworkName] aliases networkFamily :: Family Network address type networkAddress :: NetworkAddr Network number

#### Instances

Instances details

NFData NetworkEntry # | Since: 2.8.1.0
Instance details Defined in Network.BSD Methods rnf :: NetworkEntry -> () #
Storable NetworkEntry # |
Instance details 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 # |
Instance details Defined in Network.BSD Methods readsPrec :: Int -> ReadS NetworkEntry # readList :: ReadS [NetworkEntry] # readPrec :: ReadPrec NetworkEntry # readListPrec :: ReadPrec [NetworkEntry] #
Show NetworkEntry # |
Instance details 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)`.

# Interface names

ifNameToIndex :: String -> IO (Maybe Int) #

Returns the index corresponding to the interface name.

Since 2.7.0.0.