]> gitweb.michael.orlitzky.com - hath.git/blobdiff - src/IPv4Address.hs
Added a new Maskable typeclass with instances Octet and IPv4Address.
[hath.git] / src / IPv4Address.hs
index 7c5d80deb6d00fd60a324fa82a916aaff233317f..01bf36e63126ef51ebb8aae4aec301a8db97c43b 100644 (file)
@@ -1,7 +1,6 @@
 module IPv4Address
 ( ipv4address_from_octets,
   IPv4Address(None),
-  Maskbits,
   max_octet1,
   max_octet2,
   max_octet3,
@@ -9,15 +8,18 @@ module IPv4Address
   min_octet1,
   min_octet2,
   min_octet3,
-  min_octet4
+  min_octet4,
+  octet1,
+  octet2,
+  octet3,
+  octet4
 )
   where
 
 import Bit
+import Maskbits
 import Octet
 
-type Maskbits = Int
-
 data IPv4Address = None | IPv4Address { octet1 :: Octet,
                                         octet2 :: Octet,
                                         octet3 :: Octet,
@@ -39,7 +41,8 @@ ipv4address_from_octets oct1 oct2 oct3 oct4
 
 
 min_address :: IPv4Address -> Maskbits -> IPv4Address
-min_address addr mask
+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)
@@ -111,7 +114,8 @@ min_address addr mask
 
 
 max_address :: IPv4Address -> Maskbits -> IPv4Address
-max_address addr mask
+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)