module Nettle.Ethernet.EthernetAddress (
EthernetAddress(..)
, isReserved
, getEthernetAddress
, putEthernetAddress
) where
import Data.Word
import Data.Bits
import Data.Binary
data EthernetAddress = EthernetAddress Word8 Word8 Word8 Word8 Word8 Word8
deriving (Show,Read,Eq,Ord)
getEthernetAddress :: Get EthernetAddress
getEthernetAddress =
do a1 <- get
a2 <- get
a3 <- get
a4 <- get
a5 <- get
a6 <- get
return $ EthernetAddress a1 a2 a3 a4 a5 a6
putEthernetAddress :: EthernetAddress -> Put
putEthernetAddress (EthernetAddress a1 a2 a3 a4 a5 a6) = put a1 >> put a2 >> put a3 >> put a4 >> put a5 >> put a6
isReserved :: EthernetAddress -> Bool
isReserved (EthernetAddress a1 a2 a3 a4 a5 a6) =
a1 == 0x01 &&
a2 == 0x80 &&
a3 == 0xc2 &&
a4 == 0 &&
((a5 .&. 0xf0) == 0)