module System.Win32.DHCP.CLIENT_UID
( CLIENT_UID (..)
, clientUid
, macCuid
, macCuidDrop5
, withMac
) where
import Foreign
import System.Win32.Types
import Data.Mac
import System.Win32.DHCP.DhcpStructure
import System.Win32.DHCP.LengthBuffer
newtype CLIENT_UID = CLIENT_UID (LengthBuffer BYTE)
unwrap :: CLIENT_UID -> LengthBuffer BYTE
unwrap (CLIENT_UID uid) = uid
clientUid :: DhcpStructure CLIENT_UID
clientUid = newtypeDhcpStructure CLIENT_UID unwrap
$ lengthBuffer (basicDhcpArray storableDhcpStructure)
macCuidDrop5 :: CLIENT_UID -> Mac
macCuidDrop5 (CLIENT_UID (LengthBuffer _ bytes)) = fromOctets a b c d e f
where
[a, b, c, d, e, f] = drop 5 bytes
macCuid :: CLIENT_UID -> Mac
macCuid (CLIENT_UID (LengthBuffer _ bytes)) = fromOctets a b c d e f
where
[a, b, c, d, e, f] = bytes
fromMac :: Mac -> CLIENT_UID
fromMac mac = CLIENT_UID (LengthBuffer 6 [a, b, c, d, e, f])
where
(a, b, c, d, e, f) = toOctets mac
withMac :: Mac -> (Ptr CLIENT_UID -> IO b) -> IO b
withMac mac f = withDhcp clientUid (fromMac mac) f