X-Git-Url: https://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FIPv4Address.hs;h=01bf36e63126ef51ebb8aae4aec301a8db97c43b;hb=a34db6dec4124cb42473d61d92a59df66b2609da;hp=7c5d80deb6d00fd60a324fa82a916aaff233317f;hpb=0913645a2ad512b0f32338a48c2bc71793be23a8;p=hath.git diff --git a/src/IPv4Address.hs b/src/IPv4Address.hs index 7c5d80d..01bf36e 100644 --- a/src/IPv4Address.hs +++ b/src/IPv4Address.hs @@ -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)