iproute 1.7.3 → 1.7.4
raw patch · 4 files changed
+29/−17 lines, 4 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ Data.IP: fromSockAddr :: SockAddr -> Maybe (IP, PortNumber)
- Data.IP.RouteTable: findMatch :: MonadPlus m => Routable k => AddrRange k -> IPRTable k a -> m (AddrRange k, a)
+ Data.IP.RouteTable: findMatch :: Alternative m => Routable k => AddrRange k -> IPRTable k a -> m (AddrRange k, a)
Files
- Data/IP.hs +9/−5
- Data/IP/Addr.hs +9/−0
- Data/IP/RouteTable/Internal.hs +10/−11
- iproute.cabal +1/−1
Data/IP.hs view
@@ -2,18 +2,22 @@ Data structures to express IPv4, IPv6 and IP range. -} module Data.IP (- -- * Documentation- -- ** IP data+ -- * IP data IP (..)+ -- ** IPv4 , IPv4, toIPv4, fromIPv4, fromHostAddress, toHostAddress+ -- ** IPv6 , IPv6, toIPv6, toIPv6b, fromIPv6, fromIPv6b, fromHostAddress6, toHostAddress6- -- ** IP range data+ -- ** Converters+ , ipv4ToIPv6+ , fromSockAddr+ -- * IP range data , IPRange (..) , AddrRange (addr, mask, mlen)- -- ** Address class+ -- * Address class , Addr (..) , makeAddrRange, (>:>), isMatchedTo, addrRangePair- , ipv4RangeToIPv6, ipv4ToIPv6+ , ipv4RangeToIPv6 ) where import Data.IP.Addr
Data/IP/Addr.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-}+ module Data.IP.Addr where import Control.Monad@@ -520,3 +521,11 @@ ipv4ToIPv6 ip = toIPv6b [0,0,0,0,0,0,0,0,0,0,0xff,0xff,i1,i2,i3,i4] where [i1,i2,i3,i4] = fromIPv4 ip++-- | Convert 'SockAddr' to 'IP'.+--+-- Since: 1.7.4.+fromSockAddr :: SockAddr -> Maybe (IP, PortNumber)+fromSockAddr (SockAddrInet pn ha) = Just (IPv4 (fromHostAddress ha), pn)+fromSockAddr (SockAddrInet6 pn _ ha6 _) = Just (IPv6 (fromHostAddress6 ha6), pn)+fromSockAddr _ = Nothing
Data/IP/RouteTable/Internal.hs view
@@ -10,9 +10,8 @@ -} module Data.IP.RouteTable.Internal where -#if __GLASGOW_HASKELL__ < 709-import Control.Applicative ((<$>),(<*>),pure)-#endif+import Control.Applicative hiding (empty)+import qualified Control.Applicative as A (empty) import Control.Monad import Data.Bits import Data.Foldable (Foldable(..))@@ -266,16 +265,16 @@ [(133.4.0.0/16,()),(133.5.0.0/16,()),(133.5.16.0/24,()),(133.5.23.0/24,())] -} -findMatch :: MonadPlus m => Routable k => AddrRange k -> IPRTable k a -> m (AddrRange k, a)-findMatch _ Nil = mzero+findMatch :: Alternative m => Routable k => AddrRange k -> IPRTable k a -> m (AddrRange k, a)+findMatch _ Nil = A.empty findMatch k1 (Node k2 _ Nothing l r)- | k1 >:> k2 = findMatch k1 l `mplus` findMatch k1 r- | k2 >:> k1 = findMatch k1 l `mplus` findMatch k1 r- | otherwise = mzero+ | k1 >:> k2 = findMatch k1 l <|> findMatch k1 r+ | k2 >:> k1 = findMatch k1 l <|> findMatch k1 r+ | otherwise = A.empty findMatch k1 (Node k2 _ (Just vl) l r)- | k1 >:> k2 = return (k2, vl) `mplus` findMatch k1 l `mplus` findMatch k1 r- | k2 >:> k1 = findMatch k1 l `mplus` findMatch k1 r- | otherwise = mzero+ | k1 >:> k2 = pure (k2, vl) <|> findMatch k1 l <|> findMatch k1 r+ | k2 >:> k1 = findMatch k1 l <|> findMatch k1 r+ | otherwise = A.empty ----------------------------------------------------------------
iproute.cabal view
@@ -1,5 +1,5 @@ Name: iproute-Version: 1.7.3+Version: 1.7.4 Author: Kazu Yamamoto <kazu@iij.ad.jp> Maintainer: Kazu Yamamoto <kazu@iij.ad.jp> License: BSD3