6 -- A type representing the number of bits in a CIDR netmask.
44 instance Show Maskbits where
69 show TwentyThree = "23"
70 show TwentyFour = "24"
71 show TwentyFive = "25"
73 show TwentySeven = "27"
74 show TwentyEight = "28"
75 show TwentyNine = "29"
82 -- There are only 32 bits in an IPv4 address, so there
83 -- can't be more bits than that in the mask.
84 maskbits_from_int :: Int -> Maskbits
85 maskbits_from_int 0 = Zero
86 maskbits_from_int 1 = One
87 maskbits_from_int 2 = Two
88 maskbits_from_int 3 = Three
89 maskbits_from_int 4 = Four
90 maskbits_from_int 5 = Five
91 maskbits_from_int 6 = Six
92 maskbits_from_int 7 = Seven
93 maskbits_from_int 8 = Eight
94 maskbits_from_int 9 = Nine
95 maskbits_from_int 10 = Ten
96 maskbits_from_int 11 = Eleven
97 maskbits_from_int 12 = Twelve
98 maskbits_from_int 13 = Thirteen
99 maskbits_from_int 14 = Fourteen
100 maskbits_from_int 15 = Fifteen
101 maskbits_from_int 16 = Sixteen
102 maskbits_from_int 17 = Seventeen
103 maskbits_from_int 18 = Eighteen
104 maskbits_from_int 19 = Nineteen
105 maskbits_from_int 20 = Twenty
106 maskbits_from_int 21 = TwentyOne
107 maskbits_from_int 22 = TwentyTwo
108 maskbits_from_int 23 = TwentyThree
109 maskbits_from_int 24 = TwentyFour
110 maskbits_from_int 25 = TwentyFive
111 maskbits_from_int 26 = TwentySix
112 maskbits_from_int 27 = TwentySeven
113 maskbits_from_int 28 = TwentyEight
114 maskbits_from_int 29 = TwentyNine
115 maskbits_from_int 30 = Thirty
116 maskbits_from_int 31 = ThirtyOne
117 maskbits_from_int 32 = ThirtyTwo
118 maskbits_from_int _ = None
121 maskbits_from_string :: String -> Maskbits
122 maskbits_from_string s =
123 case (reads s :: [(Int, String)]) of
125 x:_ -> maskbits_from_int (fst x)