| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Net.IPv6
Synopsis
- data IPv6 = IPv6 {}
- ipv6 :: Word16 -> Word16 -> Word16 -> Word16 -> Word16 -> Word16 -> Word16 -> Word16 -> IPv6
- fromOctets :: Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> IPv6
- fromWord16s :: Word16 -> Word16 -> Word16 -> Word16 -> Word16 -> Word16 -> Word16 -> Word16 -> IPv6
- fromWord32s :: Word32 -> Word32 -> Word32 -> Word32 -> IPv6
- fromTupleWord16s :: (Word16, Word16, Word16, Word16, Word16, Word16, Word16, Word16) -> IPv6
- fromTupleWord32s :: (Word32, Word32, Word32, Word32) -> IPv6
- toWord16s :: IPv6 -> (Word16, Word16, Word16, Word16, Word16, Word16, Word16, Word16)
- toWord32s :: IPv6 -> (Word32, Word32, Word32, Word32)
- any :: IPv6
- loopback :: IPv6
- encode :: IPv6 -> Text
- decode :: Text -> Maybe IPv6
- parser :: Parser IPv6
- print :: IPv6 -> IO ()
Types
A 128-bit Internet Protocol version 6 address.
Instances
| Eq IPv6 # | |
| Ord IPv6 # | |
| Read IPv6 # | |
| Show IPv6 # | |
| ToJSON IPv6 # | |
| FromJSON IPv6 # | |
| Prim IPv6 # | |
Defined in Net.IPv6 Methods alignment# :: IPv6 -> Int# # indexByteArray# :: ByteArray# -> Int# -> IPv6 # readByteArray# :: MutableByteArray# s -> Int# -> State# s -> (#State# s, IPv6#) # writeByteArray# :: MutableByteArray# s -> Int# -> IPv6 -> State# s -> State# s # setByteArray# :: MutableByteArray# s -> Int# -> Int# -> IPv6 -> State# s -> State# s # indexOffAddr# :: Addr# -> Int# -> IPv6 # readOffAddr# :: Addr# -> Int# -> State# s -> (#State# s, IPv6#) # writeOffAddr# :: Addr# -> Int# -> IPv6 -> State# s -> State# s # setOffAddr# :: Addr# -> Int# -> Int# -> IPv6 -> State# s -> State# s # | |
Convert
ipv6 :: Word16 -> Word16 -> Word16 -> Word16 -> Word16 -> Word16 -> Word16 -> Word16 -> IPv6 #
Create an IPv6 address from the eight 16-bit fragments that make
it up. This closely resembles the standard IPv6 notation, so
is used for the Show instance. Note that this lacks the formatting
feature for suppress zeroes in an IPv6 address, but it should be
readable enough for hacking in GHCi.
>>>let addr = ipv6 0x3124 0x0 0x0 0xDEAD 0xCAFE 0xFF 0xFE00 0x1>>>addripv6 0x3124 0x0000 0x0000 0xdead 0xcafe 0x00ff 0xfe00 0x0001>>>T.putStrLn (encode addr)3124::dead:cafe:ff:fe00:1
fromOctets :: Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> Word8 -> IPv6 #
fromWord16s :: Word16 -> Word16 -> Word16 -> Word16 -> Word16 -> Word16 -> Word16 -> Word16 -> IPv6 #
An alias for the ipv6 smart constructor.
fromWord32s :: Word32 -> Word32 -> Word32 -> Word32 -> IPv6 #
Build an IPv6 from four 32-bit words. The leftmost argument
is the high word and the rightword is the low word.
fromTupleWord16s :: (Word16, Word16, Word16, Word16, Word16, Word16, Word16, Word16) -> IPv6 #
Uncurried variant of fromWord16s.
fromTupleWord32s :: (Word32, Word32, Word32, Word32) -> IPv6 #
Uncurried variant of fromWord32s.
toWord16s :: IPv6 -> (Word16, Word16, Word16, Word16, Word16, Word16, Word16, Word16) #
Convert an IPv6 to eight 16-bit words.
Special IP Addresses
Textual Conversion
Text
Encodes the IP, using zero-compression on the leftmost-longest string of zeroes in the address. Per RFC 5952 Section 5, this uses mixed notation when encoding an IPv4-mapped IPv6 address:
>>>T.putStrLn $ encode $ fromWord16s 0xDEAD 0xBEEF 0x0 0x0 0x0 0x0 0x0 0x1234dead:beef::1234>>>T.putStrLn $ encode $ fromWord16s 0x0 0x0 0x0 0x0 0x0 0xFFFF 0x6437 0xA5B4::ffff:100.55.165.180>>>T.putStrLn $ encode $ fromWord16s 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0::
decode :: Text -> Maybe IPv6 #
Decode an IPv6 address. This accepts both standard IPv6 notation (with zero compression) and mixed notation for IPv4-mapped IPv6 addresses.