iproute 1.5.0 → 1.6.0
raw patch · 3 files changed
+31/−3 lines, 3 files
Files
- Data/IP/Addr.hs +28/−0
- Data/IP/Range.hs +2/−2
- iproute.cabal +1/−1
Data/IP/Addr.hs view
@@ -168,6 +168,34 @@ enumFromThen ip ip' = fmap integerToIP6 [ip6ToInteger ip, ip6ToInteger ip' ..] enumFromThenTo ip inc fin = fmap integerToIP6 [ip6ToInteger ip, ip6ToInteger inc .. ip6ToInteger fin] +instance Enum IP where+ fromEnum (IPv4 ip) = fromEnum ip+ fromEnum (IPv6 ip) = fromEnum ip++ -- Because Int cannot hold an IPv6 anyway+ toEnum = IPv4 . toEnum++ succ (IPv4 ip) = IPv4 $ succ ip+ succ (IPv6 ip) = IPv6 $ succ ip++ pred (IPv4 ip) = IPv4 $ pred ip+ pred (IPv6 ip) = IPv6 $ pred ip++ enumFrom (IPv4 ip) = fmap IPv4 $ enumFrom ip+ enumFrom (IPv6 ip) = fmap IPv6 $ enumFrom ip++ enumFromTo (IPv4 ip) (IPv4 ip') = fmap IPv4 $ enumFromTo ip ip'+ enumFromTo (IPv6 ip) (IPv6 ip') = fmap IPv6 $ enumFromTo ip ip'+ enumFromTo _ _ = error "enumFromTo: Incompatible IP families"++ enumFromThen (IPv4 ip) (IPv4 ip') = fmap IPv4 $ enumFromThen ip ip'+ enumFromThen (IPv6 ip) (IPv6 ip') = fmap IPv6 $ enumFromThen ip ip'+ enumFromThen _ _ = error "enumFromThen: Incompatible IP families"++ enumFromThenTo (IPv4 ip) (IPv4 inc) (IPv4 fin) = fmap IPv4 $ enumFromThenTo ip inc fin+ enumFromThenTo (IPv6 ip) (IPv6 inc) (IPv6 fin) = fmap IPv6 $ enumFromThenTo ip inc fin+ enumFromThenTo _ _ _ = error "enumFromThenTo: Incompatible IP families"+ ip6ToInteger :: IPv6 -> Integer ip6ToInteger (IP6 (a,b,c,d)) = let a' = word32ToInteger a `shift` 96 b' = word32ToInteger b `shift` 64
Data/IP/Range.hs view
@@ -28,9 +28,9 @@ data IPRange = IPv4Range { ipv4range :: AddrRange IPv4 } | IPv6Range { ipv6range :: AddrRange IPv6 } #ifdef GENERICS- deriving (Eq, Generic)+ deriving (Eq, Ord, Generic) #else- deriving (Eq)+ deriving (Eq, Ord) #endif ----------------------------------------------------------------
iproute.cabal view
@@ -1,5 +1,5 @@ Name: iproute-Version: 1.5.0+Version: 1.6.0 Author: Kazu Yamamoto <kazu@iij.ad.jp> Maintainer: Kazu Yamamoto <kazu@iij.ad.jp> License: BSD3