]> gitweb.michael.orlitzky.com - hath.git/commitdiff
Updated the IPv4Address module to use the new Maskbits values.
authorMichael Orlitzky <michael@orlitzky.com>
Sat, 8 May 2010 15:30:03 +0000 (11:30 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Sat, 8 May 2010 15:30:03 +0000 (11:30 -0400)
src/IPv4Address.hs

index 01bf36e63126ef51ebb8aae4aec301a8db97c43b..8c5d4837853cb3511f59c38049d98d29e5d144fb 100644 (file)
@@ -16,7 +16,7 @@ module IPv4Address
 )
   where
 
-import Bit
+import qualified Bit as B
 import Maskbits
 import Octet
 
@@ -41,41 +41,42 @@ ipv4address_from_octets oct1 oct2 oct3 oct4
 
 
 min_address :: IPv4Address -> Maskbits -> IPv4Address
+min_address IPv4Address.None _ = IPv4Address.None
 min_address _ Maskbits.None = IPv4Address.None
-min_address addr (Maskbits mask)
-    | mask == 32 = IPv4Address oct1 oct2 oct3 oct4
-    | mask == 31 = IPv4Address oct1 oct2 oct3 (Octet a25 a26 a27 a28 a29 a30 a31 Zero)
-    | mask == 30 = IPv4Address oct1 oct2 oct3 (Octet a25 a26 a27 a28 a29 a30 Zero Zero)
-    | mask == 29 = IPv4Address oct1 oct2 oct3 (Octet a25 a26 a27 a28 a29 Zero Zero Zero)
-    | mask == 28 = IPv4Address oct1 oct2 oct3 (Octet a25 a26 a27 a28 Zero Zero Zero Zero)
-    | mask == 27 = IPv4Address oct1 oct2 oct3 (Octet a25 a26 a27 Zero Zero Zero Zero Zero)
-    | mask == 26 = IPv4Address oct1 oct2 oct3 (Octet a25 a26 Zero Zero Zero Zero Zero Zero)
-    | mask == 25 = IPv4Address oct1 oct2 oct3 (Octet a25 Zero Zero Zero Zero Zero Zero Zero)
-    | mask == 24 = IPv4Address oct1 oct2 oct3 (min_octet)
-    | mask == 23 = IPv4Address oct1 oct2 (Octet a17 a18 a19 a20 a21 a22 a23 Zero) (min_octet)
-    | mask == 22 = IPv4Address oct1 oct2 (Octet a17 a18 a19 a20 a21 a22 Zero Zero) (min_octet)
-    | mask == 21 = IPv4Address oct1 oct2 (Octet a17 a18 a19 a20 a21 Zero Zero Zero) (min_octet)
-    | mask == 20 = IPv4Address oct1 oct2 (Octet a17 a18 a19 a20 Zero Zero Zero Zero) (min_octet)
-    | mask == 19 = IPv4Address oct1 oct2 (Octet a17 a18 a19 Zero Zero Zero Zero Zero) (min_octet)
-    | mask == 18 = IPv4Address oct1 oct2 (Octet a17 a18 Zero Zero Zero Zero Zero Zero) (min_octet)
-    | mask == 17 = IPv4Address oct1 oct2 (Octet a17 Zero Zero Zero Zero Zero Zero Zero) (min_octet)
-    | mask == 16 = IPv4Address oct1 oct2 (min_octet) (min_octet)
-    | mask == 15 = IPv4Address oct1 (Octet a9 a10 a11 a12 a13 a14 a15 Zero) (min_octet) (min_octet)
-    | mask == 14 = IPv4Address oct1 (Octet a9 a10 a11 a12 a13 a14 Zero Zero) (min_octet) (min_octet)
-    | mask == 13 = IPv4Address oct1 (Octet a9 a10 a11 a12 a13 Zero Zero Zero) (min_octet) (min_octet)
-    | mask == 12 = IPv4Address oct1 (Octet a9 a10 a11 a12 Zero Zero Zero Zero) (min_octet) (min_octet)
-    | mask == 11 = IPv4Address oct1 (Octet a9 a10 a11 Zero Zero Zero Zero Zero) (min_octet) (min_octet)
-    | mask == 10 = IPv4Address oct1 (Octet a9 a10 Zero Zero Zero Zero Zero Zero) (min_octet) (min_octet)
-    | mask == 9 = IPv4Address oct1 (Octet a9 Zero Zero Zero Zero Zero Zero Zero) (min_octet) (min_octet)
-    | mask == 8 = IPv4Address oct1 (min_octet) (min_octet) (min_octet)
-    | mask == 7 = IPv4Address (Octet a1 a2 a3 a4 a5 a6 a7 Zero) (min_octet) (min_octet) (min_octet)
-    | mask == 6 = IPv4Address (Octet a1 a2 a3 a4 a5 a6 Zero Zero) (min_octet) (min_octet) (min_octet)
-    | mask == 5 = IPv4Address (Octet a1 a2 a3 a4 a5 Zero Zero Zero) (min_octet) (min_octet) (min_octet)
-    | mask == 4 = IPv4Address (Octet a1 a2 a3 a4 Zero Zero Zero Zero) (min_octet) (min_octet) (min_octet)
-    | mask == 3 = IPv4Address (Octet a1 a2 a3 Zero Zero Zero Zero Zero) (min_octet) (min_octet) (min_octet)
-    | mask == 2 = IPv4Address (Octet a1 a2 Zero Zero Zero Zero Zero Zero) (min_octet) (min_octet) (min_octet)
-    | mask == 1 = IPv4Address (Octet a1 Zero Zero Zero Zero Zero Zero Zero) (min_octet) (min_octet) (min_octet)
-    | mask == 0 = IPv4Address (min_octet) (min_octet) (min_octet) (min_octet)
+min_address addr mask
+    | mask == ThirtyTwo = IPv4Address oct1 oct2 oct3 oct4
+    | mask == ThirtyOne = IPv4Address oct1 oct2 oct3 (Octet a25 a26 a27 a28 a29 a30 a31 B.Zero)
+    | mask == Thirty = IPv4Address oct1 oct2 oct3 (Octet a25 a26 a27 a28 a29 a30 B.Zero B.Zero)
+    | mask == TwentyNine = IPv4Address oct1 oct2 oct3 (Octet a25 a26 a27 a28 a29 B.Zero B.Zero B.Zero)
+    | mask == TwentyEight = IPv4Address oct1 oct2 oct3 (Octet a25 a26 a27 a28 B.Zero B.Zero B.Zero B.Zero)
+    | mask == TwentySeven = IPv4Address oct1 oct2 oct3 (Octet a25 a26 a27 B.Zero B.Zero B.Zero B.Zero B.Zero)
+    | mask == TwentySix = IPv4Address oct1 oct2 oct3 (Octet a25 a26 B.Zero B.Zero B.Zero B.Zero B.Zero B.Zero)
+    | mask == TwentyFive = IPv4Address oct1 oct2 oct3 (Octet a25 B.Zero B.Zero B.Zero B.Zero B.Zero B.Zero B.Zero)
+    | mask == TwentyFour = IPv4Address oct1 oct2 oct3 (min_octet)
+    | mask == TwentyThree = IPv4Address oct1 oct2 (Octet a17 a18 a19 a20 a21 a22 a23 B.Zero) (min_octet)
+    | mask == TwentyTwo = IPv4Address oct1 oct2 (Octet a17 a18 a19 a20 a21 a22 B.Zero B.Zero) (min_octet)
+    | mask == TwentyOne = IPv4Address oct1 oct2 (Octet a17 a18 a19 a20 a21 B.Zero B.Zero B.Zero) (min_octet)
+    | mask == Twenty = IPv4Address oct1 oct2 (Octet a17 a18 a19 a20 B.Zero B.Zero B.Zero B.Zero) (min_octet)
+    | mask == Nineteen = IPv4Address oct1 oct2 (Octet a17 a18 a19 B.Zero B.Zero B.Zero B.Zero B.Zero) (min_octet)
+    | mask == Eighteen = IPv4Address oct1 oct2 (Octet a17 a18 B.Zero B.Zero B.Zero B.Zero B.Zero B.Zero) (min_octet)
+    | mask == Seventeen = IPv4Address oct1 oct2 (Octet a17 B.Zero B.Zero B.Zero B.Zero B.Zero B.Zero B.Zero) (min_octet)
+    | mask == Sixteen = IPv4Address oct1 oct2 (min_octet) (min_octet)
+    | mask == Fifteen = IPv4Address oct1 (Octet a9 a10 a11 a12 a13 a14 a15 B.Zero) (min_octet) (min_octet)
+    | mask == Fourteen = IPv4Address oct1 (Octet a9 a10 a11 a12 a13 a14 B.Zero B.Zero) (min_octet) (min_octet)
+    | mask == Thirteen = IPv4Address oct1 (Octet a9 a10 a11 a12 a13 B.Zero B.Zero B.Zero) (min_octet) (min_octet)
+    | mask == Twelve = IPv4Address oct1 (Octet a9 a10 a11 a12 B.Zero B.Zero B.Zero B.Zero) (min_octet) (min_octet)
+    | mask == Eleven = IPv4Address oct1 (Octet a9 a10 a11 B.Zero B.Zero B.Zero B.Zero B.Zero) (min_octet) (min_octet)
+    | mask == Ten = IPv4Address oct1 (Octet a9 a10 B.Zero B.Zero B.Zero B.Zero B.Zero B.Zero) (min_octet) (min_octet)
+    | mask == Nine = IPv4Address oct1 (Octet a9 B.Zero B.Zero B.Zero B.Zero B.Zero B.Zero B.Zero) (min_octet) (min_octet)
+    | mask == Eight = IPv4Address oct1 (min_octet) (min_octet) (min_octet)
+    | mask == Seven = IPv4Address (Octet a1 a2 a3 a4 a5 a6 a7 B.Zero) (min_octet) (min_octet) (min_octet)
+    | mask == Six = IPv4Address (Octet a1 a2 a3 a4 a5 a6 B.Zero B.Zero) (min_octet) (min_octet) (min_octet)
+    | mask == Five = IPv4Address (Octet a1 a2 a3 a4 a5 B.Zero B.Zero B.Zero) (min_octet) (min_octet) (min_octet)
+    | mask == Four = IPv4Address (Octet a1 a2 a3 a4 B.Zero B.Zero B.Zero B.Zero) (min_octet) (min_octet) (min_octet)
+    | mask == Three = IPv4Address (Octet a1 a2 a3 B.Zero B.Zero B.Zero B.Zero B.Zero) (min_octet) (min_octet) (min_octet)
+    | mask == Two = IPv4Address (Octet a1 a2 B.Zero B.Zero B.Zero B.Zero B.Zero B.Zero) (min_octet) (min_octet) (min_octet)
+    | mask == One = IPv4Address (Octet a1 B.Zero B.Zero B.Zero B.Zero B.Zero B.Zero B.Zero) (min_octet) (min_octet) (min_octet)
+    | mask == Zero = IPv4Address (min_octet) (min_octet) (min_octet) (min_octet)
     | otherwise = addr
     where
       a1  = (b1 oct1)
@@ -114,41 +115,42 @@ min_address addr (Maskbits mask)
 
 
 max_address :: IPv4Address -> Maskbits -> IPv4Address
+max_address IPv4Address.None _ = IPv4Address.None
 max_address _ Maskbits.None = IPv4Address.None
-max_address addr (Maskbits mask)
-    | mask == 32 = IPv4Address oct1 oct2 oct3 oct4
-    | mask == 31 = IPv4Address oct1 oct2 oct3 (Octet a25 a26 a27 a28 a29 a30 a31 One)
-    | mask == 30 = IPv4Address oct1 oct2 oct3 (Octet a25 a26 a27 a28 a29 a30 One One)
-    | mask == 29 = IPv4Address oct1 oct2 oct3 (Octet a25 a26 a27 a28 a29 One One One)
-    | mask == 28 = IPv4Address oct1 oct2 oct3 (Octet a25 a26 a27 a28 One One One One)
-    | mask == 27 = IPv4Address oct1 oct2 oct3 (Octet a25 a26 a27 One One One One One)
-    | mask == 26 = IPv4Address oct1 oct2 oct3 (Octet a25 a26 One One One One One One)
-    | mask == 25 = IPv4Address oct1 oct2 oct3 (Octet a25 One One One One One One One)
-    | mask == 24 = IPv4Address oct1 oct2 oct3 (max_octet)
-    | mask == 23 = IPv4Address oct1 oct2 (Octet a17 a18 a19 a20 a21 a22 a23 One) (max_octet)
-    | mask == 22 = IPv4Address oct1 oct2 (Octet a17 a18 a19 a20 a21 a22 One One) (max_octet)
-    | mask == 21 = IPv4Address oct1 oct2 (Octet a17 a18 a19 a20 a21 One One One) (max_octet)
-    | mask == 20 = IPv4Address oct1 oct2 (Octet a17 a18 a19 a20 One One One One) (max_octet)
-    | mask == 19 = IPv4Address oct1 oct2 (Octet a17 a18 a19 One One One One One) (max_octet)
-    | mask == 18 = IPv4Address oct1 oct2 (Octet a17 a18 One One One One One One) (max_octet)
-    | mask == 17 = IPv4Address oct1 oct2 (Octet a17 One One One One One One One) (max_octet)
-    | mask == 16 = IPv4Address oct1 oct2 (max_octet) (max_octet)
-    | mask == 15 = IPv4Address oct1 (Octet a9 a10 a11 a12 a13 a14 a15 One) (max_octet) (max_octet)
-    | mask == 14 = IPv4Address oct1 (Octet a9 a10 a11 a12 a13 a14 One One) (max_octet) (max_octet)
-    | mask == 13 = IPv4Address oct1 (Octet a9 a10 a11 a12 a13 One One One) (max_octet) (max_octet)
-    | mask == 12 = IPv4Address oct1 (Octet a9 a10 a11 a12 One One One One) (max_octet) (max_octet)
-    | mask == 11 = IPv4Address oct1 (Octet a9 a10 a11 One One One One One) (max_octet) (max_octet)
-    | mask == 10 = IPv4Address oct1 (Octet a9 a10 One One One One One One) (max_octet) (max_octet)
-    | mask == 9 = IPv4Address oct1 (Octet a9 One One One One One One One) (max_octet) (max_octet)
-    | mask == 8 = IPv4Address oct1 (max_octet) (max_octet) (max_octet)
-    | mask == 7 = IPv4Address (Octet a1 a2 a3 a4 a5 a6 a7 One) (max_octet) (max_octet) (max_octet)
-    | mask == 6 = IPv4Address (Octet a1 a2 a3 a4 a5 a6 One One) (max_octet) (max_octet) (max_octet)
-    | mask == 5 = IPv4Address (Octet a1 a2 a3 a4 a5 One One One) (max_octet) (max_octet) (max_octet)
-    | mask == 4 = IPv4Address (Octet a1 a2 a3 a4 One One One One) (max_octet) (max_octet) (max_octet)
-    | mask == 3 = IPv4Address (Octet a1 a2 a3 One One One One One) (max_octet) (max_octet) (max_octet)
-    | mask == 2 = IPv4Address (Octet a1 a2 One One One One One One) (max_octet) (max_octet) (max_octet)
-    | mask == 1 = IPv4Address (Octet a1 One One One One One One One) (max_octet) (max_octet) (max_octet)
-    | mask == 0 = IPv4Address (max_octet) (max_octet) (max_octet) (max_octet)
+max_address addr mask
+    | mask == ThirtyTwo = IPv4Address oct1 oct2 oct3 oct4
+    | mask == ThirtyOne = IPv4Address oct1 oct2 oct3 (Octet a25 a26 a27 a28 a29 a30 a31 B.One)
+    | mask == Thirty = IPv4Address oct1 oct2 oct3 (Octet a25 a26 a27 a28 a29 a30 B.One B.One)
+    | mask == TwentyNine = IPv4Address oct1 oct2 oct3 (Octet a25 a26 a27 a28 a29 B.One B.One B.One)
+    | mask == TwentyEight = IPv4Address oct1 oct2 oct3 (Octet a25 a26 a27 a28 B.One B.One B.One B.One)
+    | mask == TwentySeven = IPv4Address oct1 oct2 oct3 (Octet a25 a26 a27 B.One B.One B.One B.One B.One)
+    | mask == TwentySix = IPv4Address oct1 oct2 oct3 (Octet a25 a26 B.One B.One B.One B.One B.One B.One)
+    | mask == TwentyFive = IPv4Address oct1 oct2 oct3 (Octet a25 B.One B.One B.One B.One B.One B.One B.One)
+    | mask == TwentyFour = IPv4Address oct1 oct2 oct3 (max_octet)
+    | mask == TwentyThree = IPv4Address oct1 oct2 (Octet a17 a18 a19 a20 a21 a22 a23 B.One) (max_octet)
+    | mask == TwentyTwo = IPv4Address oct1 oct2 (Octet a17 a18 a19 a20 a21 a22 B.One B.One) (max_octet)
+    | mask == TwentyOne = IPv4Address oct1 oct2 (Octet a17 a18 a19 a20 a21 B.One B.One B.One) (max_octet)
+    | mask == Twenty = IPv4Address oct1 oct2 (Octet a17 a18 a19 a20 B.One B.One B.One B.One) (max_octet)
+    | mask == Nineteen = IPv4Address oct1 oct2 (Octet a17 a18 a19 B.One B.One B.One B.One B.One) (max_octet)
+    | mask == Eighteen = IPv4Address oct1 oct2 (Octet a17 a18 B.One B.One B.One B.One B.One B.One) (max_octet)
+    | mask == Seventeen = IPv4Address oct1 oct2 (Octet a17 B.One B.One B.One B.One B.One B.One B.One) (max_octet)
+    | mask == Sixteen = IPv4Address oct1 oct2 (max_octet) (max_octet)
+    | mask == Fifteen = IPv4Address oct1 (Octet a9 a10 a11 a12 a13 a14 a15 B.One) (max_octet) (max_octet)
+    | mask == Fourteen = IPv4Address oct1 (Octet a9 a10 a11 a12 a13 a14 B.One B.One) (max_octet) (max_octet)
+    | mask == Thirteen = IPv4Address oct1 (Octet a9 a10 a11 a12 a13 B.One B.One B.One) (max_octet) (max_octet)
+    | mask == Twelve = IPv4Address oct1 (Octet a9 a10 a11 a12 B.One B.One B.One B.One) (max_octet) (max_octet)
+    | mask == Eleven = IPv4Address oct1 (Octet a9 a10 a11 B.One B.One B.One B.One B.One) (max_octet) (max_octet)
+    | mask == Ten = IPv4Address oct1 (Octet a9 a10 B.One B.One B.One B.One B.One B.One) (max_octet) (max_octet)
+    | mask == Nine = IPv4Address oct1 (Octet a9 B.One B.One B.One B.One B.One B.One B.One) (max_octet) (max_octet)
+    | mask == Eight = IPv4Address oct1 (max_octet) (max_octet) (max_octet)
+    | mask == Seven = IPv4Address (Octet a1 a2 a3 a4 a5 a6 a7 B.One) (max_octet) (max_octet) (max_octet)
+    | mask == Six = IPv4Address (Octet a1 a2 a3 a4 a5 a6 B.One B.One) (max_octet) (max_octet) (max_octet)
+    | mask == Five = IPv4Address (Octet a1 a2 a3 a4 a5 B.One B.One B.One) (max_octet) (max_octet) (max_octet)
+    | mask == Four = IPv4Address (Octet a1 a2 a3 a4 B.One B.One B.One B.One) (max_octet) (max_octet) (max_octet)
+    | mask == Three = IPv4Address (Octet a1 a2 a3 B.One B.One B.One B.One B.One) (max_octet) (max_octet) (max_octet)
+    | mask == Two = IPv4Address (Octet a1 a2 B.One B.One B.One B.One B.One B.One) (max_octet) (max_octet) (max_octet)
+    | mask == One = IPv4Address (Octet a1 B.One B.One B.One B.One B.One B.One B.One) (max_octet) (max_octet) (max_octet)
+    | mask == Zero = IPv4Address (max_octet) (max_octet) (max_octet) (max_octet)
     | otherwise = addr
     where
       a1  = (b1 oct1)