]> gitweb.michael.orlitzky.com - hath.git/commitdiff
Enumerated all possible values (Zero through ThirtyTwo) for Maskbits.
authorMichael Orlitzky <michael@orlitzky.com>
Sat, 8 May 2010 15:26:18 +0000 (11:26 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Sat, 8 May 2010 15:26:18 +0000 (11:26 -0400)
Updated the Cidr module to use the new Maskbits values.

src/Cidr.hs
src/Maskbits.hs

index ab1ef51cce7af37bb5e3bdbec269a512ca59976f..12d9689df71a7cbe955f4be1edb74c934263ef65 100644 (file)
@@ -85,9 +85,9 @@ contains _ (Cidr IPv4Address.None _) = False
 -- address and see if the result is the same as cidr1's mask applied
 -- to cidr1's address.
 --
-contains (Cidr addr1 (Maskbits mbits1)) (Cidr addr2 (Maskbits mbits2))
+contains (Cidr addr1 mbits1) (Cidr addr2 mbits2)
     | mbits1 > mbits2 = False
     | otherwise = addr1masked == addr2masked
     where
-      addr1masked = apply_mask addr1 (Maskbits mbits1)
-      addr2masked = apply_mask addr2 (Maskbits mbits1)
+      addr1masked = apply_mask addr1 mbits1
+      addr2masked = apply_mask addr2 mbits1
index cb4ab8986b2bcd343540baa56dbda4a11e7d9dc6..cbd4dbe86fd0d76efa15ea349dfd353d06e62985 100644 (file)
@@ -4,15 +4,80 @@ module Maskbits
 ) where
 
 -- A type representing the number of bits in a CIDR netmask.
-data Maskbits = None | Maskbits Int
-              deriving (Eq, Show)
+data Maskbits = None
+              | Zero
+              | One
+              | Two
+              | Three
+              | Four
+              | Five
+              | Six
+              | Seven
+              | Eight
+              | Nine
+              | Ten
+              | Eleven
+              | Twelve
+              | Thirteen
+              | Fourteen
+              | Fifteen
+              | Sixteen
+              | Seventeen
+              | Eighteen
+              | Nineteen
+              | Twenty
+              | TwentyOne
+              | TwentyTwo
+              | TwentyThree
+              | TwentyFour
+              | TwentyFive
+              | TwentySix
+              | TwentySeven
+              | TwentyEight
+              | TwentyNine
+              | Thirty
+              | ThirtyOne
+              | ThirtyTwo
+              deriving (Eq, Ord, Show)
 
 
 -- There are only 32 bits in an IPv4 address, so there
 -- can't be more bits than that in the mask.
 maskbits_from_int :: Int -> Maskbits
-maskbits_from_int x | (x < 0) || (x > 32) = None
-                    | otherwise = Maskbits x
+maskbits_from_int 0  = Zero
+maskbits_from_int 1  = One
+maskbits_from_int 2  = Two
+maskbits_from_int 3  = Three
+maskbits_from_int 4  = Four
+maskbits_from_int 5  = Five
+maskbits_from_int 6  = Six
+maskbits_from_int 7  = Seven
+maskbits_from_int 8  = Eight
+maskbits_from_int 9  = Nine
+maskbits_from_int 10 = Ten
+maskbits_from_int 11 = Eleven
+maskbits_from_int 12 = Twelve
+maskbits_from_int 13 = Thirteen
+maskbits_from_int 14 = Fourteen
+maskbits_from_int 15 = Fifteen
+maskbits_from_int 16 = Sixteen
+maskbits_from_int 17 = Seventeen
+maskbits_from_int 18 = Eighteen
+maskbits_from_int 19 = Nineteen
+maskbits_from_int 20 = Twenty
+maskbits_from_int 21 = TwentyOne
+maskbits_from_int 22 = TwentyTwo
+maskbits_from_int 23 = TwentyThree
+maskbits_from_int 24 = TwentyFour
+maskbits_from_int 25 = TwentyFive
+maskbits_from_int 26 = TwentySix
+maskbits_from_int 27 = TwentySeven
+maskbits_from_int 28 = TwentyEight
+maskbits_from_int 29 = TwentyNine
+maskbits_from_int 30 = Thirty
+maskbits_from_int 31 = ThirtyOne
+maskbits_from_int 32 = ThirtyTwo
+maskbits_from_int _ = None
 
 
 maskbits_from_string :: String -> Maskbits