X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FCidr.hs;h=e23ae6c1a55a2ba0e9c9de333cc4c8bbbb369453;hb=942b8ef3bc5830ca0defa62342d55550aea59934;hp=002ec0b849fc08d555a2e6ab221212143c51d160;hpb=e1d16438b44ecd962565756a828c9ed8014cf894;p=hath.git diff --git a/src/Cidr.hs b/src/Cidr.hs index 002ec0b..e23ae6c 100644 --- a/src/Cidr.hs +++ b/src/Cidr.hs @@ -8,6 +8,7 @@ module Cidr combine_all, contains, contains_proper, + enumerate, max_octet1, max_octet2, max_octet3, @@ -22,7 +23,7 @@ module Cidr import Data.List (nubBy) import Data.List.Split (splitOneOf) -import Data.Maybe (catMaybes, fromJust) +import Data.Maybe (catMaybes, fromJust, mapMaybe) import Test.HUnit (assertEqual) import Test.Framework (Test, testGroup) @@ -77,7 +78,7 @@ maskbits_from_cidr_string s -- of its octets (as Ints). octets_from_cidr_string :: String -> [Octet] octets_from_cidr_string s = - catMaybes $ map octet_from_string (take 4 (splitOneOf "./" s)) + mapMaybe octet_from_string (take 4 (splitOneOf "./" s)) -- | Return Nothing if we can't parse both maskbits and octets from @@ -165,7 +166,7 @@ max_octet4 cidr = octet4 (max_host cidr) -- cidr1, then at least mbits1 of an address in cidr2 will match -- cidr1. For example, -- --- cidr1 = 192.168.1.0/23, cidr2 = 192.168.1.100/24 +-- cidr1 = 192.168.1.0\/23, cidr2 = 192.168.1.100\/24 -- -- Here, cidr2 contains all of 192.168.1.0 through -- 192.168.1.255. However, cidr1 contains BOTH 192.168.0.0 through @@ -254,7 +255,8 @@ adjacent cidr1 cidr2 mbits2 = maskbits cidr2 - +enumerate :: Cidr -> [IPv4Address] +enumerate cidr = [(min_host cidr)..(max_host cidr)] -- HUnit Tests