-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Obtain the host MAC address on *NIX and Windows.
--   
--   Obtain the host MAC address on *NIX and Windows.
@package maccatcher
@version 2.1.5


-- | A MAC address datatype, representing the six bytes of a MAC address,
--   also known as an OID, IAB or "...Vendor Address, Vendor ID, NIC
--   Address, Ethernet Address and others.", see
--   <a>http://standards.ieee.org/faqs/OUI.html#q4</a>
module Data.MAC
data MAC
MAC :: {-# UNPACK #-} !Word8 -> {-# UNPACK #-} !Word8 -> {-# UNPACK #-} !Word8 -> {-# UNPACK #-} !Word8 -> {-# UNPACK #-} !Word8 -> {-# UNPACK #-} !Word8 -> MAC
instance Eq MAC
instance Ord MAC
instance Bounded MAC
instance Storable MAC
instance Binary MAC
instance Read MAC
instance Show MAC


-- | System specific routines for determing the MAC address and macros to
--   help sort things out at compile time.
module System.Info.MAC.Fetch

-- | Obtain a list containing the name and MAC of all NICs.
fetchNICs :: IO [(String, MAC)]

-- | Run <tt>ifconfig</tt> or <tt>ipconfig</tt>, as appropriate, capturing
--   its output.
i_config :: IO String
parser :: String -> [(String, MAC)]

-- | Parses the output of Linux or BSD <tt>ifconfig</tt>.
ifconfig :: Parser [(String, MAC)]

-- | Parses the output of Windows <tt>ipconfig</tt>.
ipconfig :: Parser [(String, MAC)]
parseNIC_ifconfig :: Parser (Maybe (String, MAC))
parseNIC_ipconfig :: Parser (Maybe (String, MAC))
parseNICs :: Parser (Maybe (String, MAC)) -> Parser [(String, MAC)]
parseMAC :: Char -> ParsecT String u Identity (Maybe MAC)
parse' :: String -> Parser [t] -> String -> [t]
maybeMAC :: String -> Maybe MAC
sepHex :: ParsecT String u Identity sep -> ParsecT String u Identity [[Char]]
manyAnyTill :: Parser Char -> Parser String
skipManyTill :: Parser a -> Parser b -> Parser b
skipManyAnyTill :: Parser a -> Parser a
nl :: ParsecT [Char] u Identity Char


-- | Obtain a MAC address for the host system, on *NIX and Windows.
module System.Info.MAC

-- | Fetch MAC address, using a cached value if it is available.
mac :: IO (Maybe MAC)

-- | Fetch MAC addresses, using a cached value if it is available.
macs :: IO [MAC]

-- | Fetch a name-MAC pair, using a cached value if it is available.
nic :: IO (Maybe (String, MAC))

-- | Fetch name-MAC pairs, using a cached value if it is available.
nics :: IO [(String, MAC)]

-- | Explicitly re-run the MAC reading operation.
refresh :: IO [(String, MAC)]
