ipadmin 0.1.3.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +199 -215
- data/lib/ip_admin.rb +1916 -2302
- data/tests/cidr_test.rb +162 -38
- data/tests/functions_test.rb +117 -53
- data/tests/tree_test.rb +39 -24
- metadata +2 -3
- data/tests/ipaddr_test.rb +0 -56
data/README
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
|
2
|
-
Copyright (c) 2006 Dustin Spinhirne <dspinhir
|
2
|
+
Copyright (c) 2006 Dustin Spinhirne <dspinhir at yahoo.com>
|
3
3
|
Licensed under the same terms as Ruby, No Warranty is provided.
|
4
4
|
|
5
5
|
|
@@ -14,178 +14,167 @@
|
|
14
14
|
|
15
15
|
=Examples:
|
16
16
|
|
17
|
-
|
17
|
+
|
18
18
|
#!/usr/bin/ruby
|
19
19
|
|
20
20
|
require 'rubygems'
|
21
21
|
require_gem 'ipadmin'
|
22
22
|
|
23
|
-
#============================================================================#
|
24
|
-
# IPAdmin::IPAddr
|
25
|
-
#============================================================================#
|
26
|
-
puts "IPAdmin::IPAddr"
|
27
|
-
print "\n"
|
28
|
-
|
29
|
-
# new
|
30
|
-
ip4 = IPAdmin::IPAddr.new(:IPAddr => '192.168.1.1/24')
|
31
|
-
ip4 = IPAdmin::IPAddr.new(:IPAddr => '192.168.1.1',
|
32
|
-
:Netmask => '255.255.255.0',
|
33
|
-
:Tag => {'test' => 'ip4 tag'})
|
34
|
-
ip6 = IPAdmin::IPAddr.new(:IPAddr => 'fec0::1/64')
|
35
|
-
|
36
|
-
# reader/writer
|
37
|
-
puts "TEST 1"
|
38
|
-
puts "ip4 tag '#{ip4.tag['test']}'"
|
39
|
-
ip4.tag['test'] = 'modified ip4 tag'
|
40
|
-
puts "updated ip4 tag '#{ip4.tag['test']}'"
|
41
|
-
puts "ip4 version #{ip4.version}"
|
42
|
-
print "\n"
|
43
|
-
|
44
|
-
# base
|
45
|
-
puts "TEST 2"
|
46
|
-
puts "ip4 base addr #{ip4.base()}"
|
47
|
-
puts "ip6 base addr #{ip6.base()}"
|
48
|
-
print "\n"
|
49
|
-
|
50
|
-
# broadcast
|
51
|
-
puts "TEST 3"
|
52
|
-
puts "ip4 bcast addr #{ip4.broadcast()}"
|
53
|
-
print "\n"
|
54
|
-
|
55
|
-
# desc
|
56
|
-
puts "TEST 4"
|
57
|
-
puts "ip4 description #{ip4.desc()}"
|
58
|
-
puts "ip6 description #{ip6.desc()}"
|
59
|
-
print "\n"
|
60
|
-
|
61
|
-
# extended masks
|
62
|
-
puts "TEST 5"
|
63
|
-
puts "ip4 extended hostmask #{ip4.hostmask_ext()}"
|
64
|
-
puts "ip4 extended netmask #{ip4.netmask_ext()}"
|
65
|
-
print "\n"
|
66
|
-
|
67
|
-
# ip
|
68
|
-
puts "TEST 6"
|
69
|
-
puts "ip4 ip addr #{ip4.ip()}"
|
70
|
-
puts "ip6 ip addr #{ip6.ip()}"
|
71
|
-
print "\n"
|
72
|
-
|
73
|
-
# netmask
|
74
|
-
puts "TEST 7"
|
75
|
-
puts "ip4 netmask in CIDR format #{ip4.netmask()}"
|
76
|
-
puts "ip6 netmask in CIDR format #{ip6.netmask()}"
|
77
|
-
print "\n"
|
78
|
-
|
79
|
-
# bits
|
80
|
-
puts "TEST 8"
|
81
|
-
puts "ip4 netmask in bits #{ip4.bits()}"
|
82
|
-
puts "ip6 netmask in bits #{ip6.bits()}"
|
83
|
-
|
84
|
-
print "\n\n\n"
|
85
|
-
#=====================================#
|
86
|
-
#
|
87
|
-
#=====================================#
|
88
|
-
|
89
23
|
#============================================================================#
|
90
24
|
# IPAdmin::CIDR
|
91
25
|
#============================================================================#
|
92
26
|
puts "IPAdmin::CIDR"
|
93
27
|
print "\n"
|
94
|
-
|
95
|
-
ip4 = IPAdmin::IPAddr.new(:IPAddr => '192.168.1.1/24')
|
96
|
-
ip6 = IPAdmin::IPAddr.new(:IPAddr => 'fec0::1/64')
|
97
28
|
|
98
29
|
# new
|
99
30
|
cidr4 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
|
100
|
-
cidr4 = IPAdmin::CIDR.new(:CIDR => '192.168.1.
|
31
|
+
cidr4 = IPAdmin::CIDR.new(:CIDR => '192.168.1.1',
|
101
32
|
:Netmask => '255.255.255.0',
|
102
33
|
:Tag => {'test' => 'cidr4 tag'})
|
103
|
-
cidr6 = IPAdmin::CIDR.new(:CIDR => 'fec0::
|
34
|
+
cidr6 = IPAdmin::CIDR.new(:CIDR => 'fec0::1/64')
|
35
|
+
|
36
|
+
cidr4_2 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/26')
|
37
|
+
cidr6_2 = IPAdmin::CIDR.new(:CIDR => 'fec0::0/96')
|
104
38
|
|
105
39
|
# reader/writer
|
106
|
-
puts "
|
40
|
+
puts "reader/writer"
|
107
41
|
puts "cidr4 tag '#{cidr4.tag['test']}'"
|
108
42
|
cidr4.tag['test'] = 'modified cidr4 tag'
|
109
43
|
puts "updated cidr4 tag '#{cidr4.tag['test']}'"
|
110
44
|
puts "cidr4 version #{cidr4.version}"
|
111
45
|
print "\n"
|
112
|
-
|
46
|
+
|
47
|
+
# bits
|
48
|
+
puts "bits"
|
49
|
+
puts "cidr4 netmask in bits #{cidr4.bits()}"
|
50
|
+
puts "cidr6 netmask in bits #{cidr6.bits()}"
|
51
|
+
print "\n"
|
52
|
+
|
113
53
|
# contains
|
114
|
-
puts "
|
115
|
-
puts "#{cidr4.desc} contains #{
|
116
|
-
puts "#{cidr6.desc} contains #{
|
54
|
+
puts "contains"
|
55
|
+
puts "#{cidr4.desc} contains #{cidr4_2.desc}" if ( cidr4.contains(cidr4_2) )
|
56
|
+
puts "#{cidr6.desc} contains #{cidr6_2.desc}" if ( cidr6.contains(cidr6_2) )
|
117
57
|
print "\n"
|
118
58
|
|
119
59
|
# desc
|
120
|
-
puts "
|
60
|
+
puts "desc"
|
121
61
|
puts "cidr4 description #{cidr4.desc()}"
|
122
62
|
puts "cidr6 description #{cidr6.desc()}"
|
63
|
+
puts "cidr6 short-hand description #{cidr6.desc(:Short => 1)}"
|
64
|
+
print "\n"
|
65
|
+
|
66
|
+
# enumerate
|
67
|
+
puts "enumerate"
|
68
|
+
puts "first 4 cidr4 addresses (bitstep 32)"
|
69
|
+
cidr4.enumerate(:Limit => 4, :Bitstep => 32).each {|x| puts " #{x}"}
|
70
|
+
|
71
|
+
puts "first 4 cidr6 addresses (bitstep 32)"
|
72
|
+
cidr6.enumerate(:Limit => 4, :Bitstep => 32, :Objectify => 1).each {|x| puts " #{x.desc}"}
|
123
73
|
print "\n"
|
124
74
|
|
125
|
-
#
|
126
|
-
puts "
|
75
|
+
# hostmask_ext
|
76
|
+
puts "hostmask_ext"
|
127
77
|
puts "cidr4 extended hostmask #{cidr4.hostmask_ext()}"
|
128
|
-
|
78
|
+
print "\n"
|
79
|
+
|
80
|
+
# ip
|
81
|
+
puts "ip"
|
82
|
+
puts "cidr4 ip #{cidr4.ip()}"
|
83
|
+
puts "cidr6 short-hand ip #{cidr6.ip(:Short => 1)}"
|
84
|
+
print "\n"
|
85
|
+
|
86
|
+
# last
|
87
|
+
puts "last"
|
88
|
+
puts "cidr4 last ip #{cidr4.last()}"
|
89
|
+
puts "cidr6 last ip #{cidr6.last(:Short => 1)}"
|
129
90
|
print "\n"
|
130
91
|
|
131
92
|
# netmask
|
132
|
-
puts "
|
93
|
+
puts "netmask"
|
133
94
|
puts "cidr4 netmask in CIDR format #{cidr4.netmask()}"
|
134
95
|
puts "cidr6 netmask in CIDR format #{cidr6.netmask()}"
|
135
96
|
print "\n"
|
136
97
|
|
137
|
-
#
|
138
|
-
puts "
|
139
|
-
puts "cidr4 netmask
|
140
|
-
puts "cidr6 netmask in bits #{cidr6.bits()}"
|
98
|
+
# netmask_ext
|
99
|
+
puts "netmask_ext"
|
100
|
+
puts "cidr4 extended netmask #{cidr4.netmask_ext()}"
|
141
101
|
print "\n"
|
142
102
|
|
143
103
|
# network
|
144
|
-
puts "
|
104
|
+
puts "network"
|
145
105
|
puts "cidr4 network address #{cidr4.network()}"
|
146
|
-
puts "cidr6 network address #{cidr6.network()}"
|
106
|
+
puts "cidr6 network address #{cidr6.network(:Short => 1)}"
|
107
|
+
print "\n"
|
108
|
+
|
109
|
+
# next_ip
|
110
|
+
puts "next_ip"
|
111
|
+
puts "cidr4 next ip #{cidr4.next_ip()}"
|
112
|
+
puts "cidr6 next ip #{cidr6.next_ip(:Short => 1)}"
|
113
|
+
print "\n"
|
114
|
+
|
115
|
+
# next_subnet
|
116
|
+
puts "next_subnet"
|
117
|
+
puts "cidr4 next subnet #{cidr4.next_subnet()}"
|
118
|
+
puts "cidr6 next subnet #{cidr6.next_subnet(:Short => 1)}"
|
147
119
|
print "\n"
|
148
120
|
|
149
121
|
# nth
|
150
|
-
puts "
|
122
|
+
puts "nth"
|
151
123
|
puts "cidr4 1st ip is #{cidr4.nth(:Index => 1)}"
|
152
|
-
puts "cidr6 1st ip is #{(cidr6.nth(:Index => 1, :Objectify => 1)).
|
124
|
+
puts "cidr6 1st ip is #{(cidr6.nth(:Index => 1, :Objectify => 1)).base}"
|
125
|
+
print "\n"
|
126
|
+
|
127
|
+
# packed_hostmask
|
128
|
+
puts "packed_hostmask"
|
129
|
+
puts "cidr4 packed_hostmask is #{cidr4.packed_hostmask.to_s(16)}"
|
130
|
+
puts "cidr6 packed_hostmask is #{cidr6.packed_hostmask.to_s(16)}"
|
131
|
+
print "\n"
|
132
|
+
|
133
|
+
# packed_netmask
|
134
|
+
puts "packed_netmask"
|
135
|
+
puts "cidr4 packed_netmask is #{cidr4.packed_netmask.to_s(16)}"
|
136
|
+
puts "cidr6 packed_netmask is #{cidr6.packed_netmask.to_s(16)}"
|
137
|
+
print "\n"
|
138
|
+
|
139
|
+
# packed_network
|
140
|
+
puts "packed_network"
|
141
|
+
puts "cidr4 packed_network is #{cidr4.packed_network.to_s(16)}"
|
142
|
+
puts "cidr6 packed_network is #{cidr6.packed_network.to_s(16)}"
|
143
|
+
print "\n"
|
144
|
+
|
145
|
+
# range
|
146
|
+
puts "range"
|
147
|
+
cidr4.range(:Indexes => [20,0], :Bitstep => 5).each {|x| puts x}
|
148
|
+
cidr6.range(:Indexes => [20,0], :Bitstep => 5).each {|x| puts x}
|
149
|
+
print "\n"
|
150
|
+
|
151
|
+
# remainder
|
152
|
+
puts "remainder"
|
153
|
+
cidr4_2 = IPAdmin::CIDR.new(:CIDR => '192.168.1.64/26')
|
154
|
+
cidr4.remainder(:Exclude => cidr4_2).each {|x| puts x}
|
155
|
+
print "\n"
|
156
|
+
|
157
|
+
# resize!
|
158
|
+
puts "resize!"
|
159
|
+
cidr4.resize!(:Subnet => 25)
|
160
|
+
cidr6.resize!(:Subnet => 65)
|
161
|
+
puts "cidr4 resized is #{cidr4.desc}"
|
162
|
+
puts "cidr6 resized is #{cidr6.desc}"
|
153
163
|
print "\n"
|
154
164
|
|
155
165
|
# size
|
156
|
-
puts "
|
166
|
+
puts "size"
|
157
167
|
puts "cidr4 size is #{cidr4.size()}"
|
158
168
|
puts "cidr6 size is #{cidr6.size()}"
|
159
169
|
print "\n"
|
160
170
|
|
161
|
-
# enumerate
|
162
|
-
puts "TEST 10"
|
163
|
-
puts "first 4 cidr4 addresses (bitstep 32)"
|
164
|
-
list4 = cidr4.enumerate(:Limit => 4, :Bitstep => 32)
|
165
|
-
list4.each do |addr|
|
166
|
-
puts " #{addr}"
|
167
|
-
end
|
168
|
-
|
169
|
-
puts "first 4 cidr6 addresses (bitstep 32)"
|
170
|
-
list6 = cidr6.enumerate(:Limit => 4, :Bitstep => 32, :Objectify => 1)
|
171
|
-
list6.each do |addr|
|
172
|
-
puts " #{addr.desc}"
|
173
|
-
end
|
174
|
-
print "\n"
|
175
|
-
|
176
171
|
# subnet
|
177
|
-
puts "
|
178
|
-
puts "cidr4 subnetted into at least 3 /28 ranges"
|
179
|
-
|
180
|
-
sn4.each do |cidr|
|
181
|
-
puts " #{cidr.desc()}"
|
182
|
-
end
|
172
|
+
puts "subnet"
|
173
|
+
puts "#{cidr4.desc} subnetted into at least 3 /28 ranges"
|
174
|
+
cidr4.subnet(:Subnet => 28, :MinCount => 3).each {|x| puts " #{x}"}
|
183
175
|
|
184
|
-
puts "cidr6 subnetted into at least 4 /
|
185
|
-
|
186
|
-
sn6.each do |cidr|
|
187
|
-
puts " #{cidr.desc()}"
|
188
|
-
end
|
176
|
+
puts "#{cidr6.desc(:Short => 1)} subnetted into at least 4 /67 ranges"
|
177
|
+
cidr6.subnet(:Subnet => 67, :MinCount => 4, :Short => 1).each {|x| puts " #{x}"}
|
189
178
|
|
190
179
|
print "\n\n\n"
|
191
180
|
#=====================================#
|
@@ -199,100 +188,44 @@
|
|
199
188
|
puts "IPAdmin::Tree"
|
200
189
|
print "\n"
|
201
190
|
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
191
|
+
cidr4 = [IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24'),
|
192
|
+
IPAdmin::CIDR.new(:CIDR => '192.168.1.0/26'),
|
193
|
+
IPAdmin::CIDR.new(:CIDR => '192.168.1.64/26'),
|
194
|
+
IPAdmin::CIDR.new(:CIDR => '192.168.1.128/26'),
|
195
|
+
IPAdmin::CIDR.new(:CIDR => '192.168.1.192/26'),
|
196
|
+
IPAdmin::CIDR.new(:CIDR => '192.168.1.0/27'),
|
197
|
+
IPAdmin::CIDR.new(:CIDR => '192.168.1.0/28'),
|
198
|
+
IPAdmin::CIDR.new(:CIDR => '192.168.1.16/28'),
|
199
|
+
IPAdmin::CIDR.new(:CIDR => '192.168.1.16/29'),
|
200
|
+
IPAdmin::CIDR.new(:CIDR => '192.168.1.32/27')]
|
209
201
|
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
202
|
+
cidr6 = [IPAdmin::CIDR.new(:CIDR => 'fec0::/64'),
|
203
|
+
IPAdmin::CIDR.new(:CIDR => 'fec0::/66'),
|
204
|
+
IPAdmin::CIDR.new(:CIDR => 'fec0::4000:0:0:0/66'),
|
205
|
+
IPAdmin::CIDR.new(:CIDR => 'fec0::8000:0:0:0/66'),
|
206
|
+
IPAdmin::CIDR.new(:CIDR => 'fec0::c000:0:0:0/66'),
|
207
|
+
IPAdmin::CIDR.new(:CIDR => 'fec0::c000:0:0:0/67'),
|
208
|
+
IPAdmin::CIDR.new(:CIDR => 'fec0::/67'),
|
209
|
+
IPAdmin::CIDR.new(:CIDR => 'fec0::2000:0:0:0/67')]
|
217
210
|
|
218
211
|
# new
|
219
212
|
tree4 = IPAdmin::Tree.new(:Version => 4)
|
220
213
|
tree6 = IPAdmin::Tree.new(:Version => 6)
|
221
214
|
|
222
215
|
# add
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
tree4.add(cidr4_5)
|
228
|
-
tree4.add(cidr4_6)
|
229
|
-
tree4.add(cidr4_7)
|
230
|
-
|
231
|
-
tree6.add(cidr6_1)
|
232
|
-
tree6.add(cidr6_2)
|
233
|
-
tree6.add(cidr6_3)
|
234
|
-
tree6.add(cidr6_4)
|
235
|
-
tree6.add(cidr6_5)
|
236
|
-
tree6.add(cidr6_6)
|
237
|
-
tree6.add(cidr6_7)
|
238
|
-
|
239
|
-
# show
|
240
|
-
puts "TEST 1"
|
241
|
-
puts "tree4 is..."
|
242
|
-
puts tree4.show()
|
243
|
-
print "\n"
|
244
|
-
puts "tree6 is..."
|
245
|
-
puts tree6.show()
|
246
|
-
print "\n"
|
247
|
-
|
248
|
-
# collapse
|
249
|
-
puts "TEST 2"
|
250
|
-
puts "collapsed tree4 is..."
|
251
|
-
new_tree4 = tree4.collapse()
|
252
|
-
puts new_tree4.show()
|
253
|
-
print "\n"
|
254
|
-
puts "collapsed tree6 is..."
|
255
|
-
new_tree6 = tree6.collapse()
|
256
|
-
puts new_tree6.show()
|
257
|
-
print "\n"
|
258
|
-
|
259
|
-
# find space
|
260
|
-
puts "TEST 3"
|
261
|
-
puts "available /27 space"
|
262
|
-
space = tree4.find_space(:Size => 27)
|
263
|
-
space.each do |obj|
|
264
|
-
puts " #{obj.desc}"
|
216
|
+
puts "add"
|
217
|
+
cidr4.each do |x|
|
218
|
+
puts "adding #{x.desc}..."
|
219
|
+
tree4.add(x)
|
265
220
|
end
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
space.each do |obj|
|
270
|
-
puts " #{obj.desc}"
|
221
|
+
cidr6.each do |x|
|
222
|
+
puts "adding #{x.desc}..."
|
223
|
+
tree6.add(x)
|
271
224
|
end
|
272
225
|
print "\n"
|
273
226
|
|
274
|
-
|
275
|
-
puts "
|
276
|
-
puts "removing #{cidr4_4.desc}"
|
277
|
-
tree4.remove(cidr4_4)
|
278
|
-
puts tree4.show()
|
279
|
-
print "\n"
|
280
|
-
puts "removing #{cidr6_4.desc}"
|
281
|
-
tree6.remove(cidr6_4)
|
282
|
-
puts tree6.show()
|
283
|
-
print "\n"
|
284
|
-
|
285
|
-
# prune
|
286
|
-
puts "TEST 5"
|
287
|
-
puts "pruning #{cidr4_2.desc}"
|
288
|
-
tree4.prune(cidr4_2)
|
289
|
-
|
290
|
-
puts "pruning #{cidr6_2.desc}"
|
291
|
-
tree6.prune(cidr6_2)
|
292
|
-
print "\n"
|
293
|
-
|
294
|
-
# dump
|
295
|
-
puts "TEST 6"
|
227
|
+
# dump
|
228
|
+
puts "dump"
|
296
229
|
puts "dumping & printing tree4"
|
297
230
|
dumped = tree4.dump()
|
298
231
|
dumped.each do |val|
|
@@ -318,6 +251,54 @@
|
|
318
251
|
puts obj.desc()
|
319
252
|
end
|
320
253
|
end
|
254
|
+
print "\n"
|
255
|
+
|
256
|
+
# find space
|
257
|
+
puts "find_space with at least 28 IP's in it"
|
258
|
+
puts "available space with at least 28 IPs"
|
259
|
+
space = tree4.find_space(:IPCount => 28)
|
260
|
+
space.each do |obj|
|
261
|
+
puts " #{obj.desc}"
|
262
|
+
end
|
263
|
+
print "\n"
|
264
|
+
puts "available /67 space"
|
265
|
+
space = tree6.find_space(:Subnet => 67)
|
266
|
+
space.each do |obj|
|
267
|
+
puts " #{obj.desc}"
|
268
|
+
end
|
269
|
+
print "\n"
|
270
|
+
|
271
|
+
# remove
|
272
|
+
puts "remove"
|
273
|
+
puts "removing #{cidr4[8].desc}"
|
274
|
+
tree4.remove(cidr4[8])
|
275
|
+
puts tree4.show()
|
276
|
+
print "\n"
|
277
|
+
puts "removing #{cidr6[5].desc}"
|
278
|
+
tree6.remove(cidr6[5])
|
279
|
+
puts tree6.show()
|
280
|
+
print "\n"
|
281
|
+
|
282
|
+
# prune
|
283
|
+
puts "prune"
|
284
|
+
puts "pruning #{cidr4[4].desc}"
|
285
|
+
tree4.prune(cidr4[4])
|
286
|
+
puts tree4.show()
|
287
|
+
print "\n"
|
288
|
+
puts "pruning #{cidr6[1].desc}"
|
289
|
+
tree6.prune(cidr6[1])
|
290
|
+
puts tree6.show()
|
291
|
+
print "\n"
|
292
|
+
|
293
|
+
# collapse
|
294
|
+
puts "collapse"
|
295
|
+
puts "collapsed tree4 is..."
|
296
|
+
new_tree4 = tree4.collapse()
|
297
|
+
puts new_tree4.show()
|
298
|
+
print "\n"
|
299
|
+
puts "collapsed tree6 is..."
|
300
|
+
new_tree6 = tree6.collapse()
|
301
|
+
puts new_tree6.show()
|
321
302
|
|
322
303
|
print "\n\n\n"
|
323
304
|
#=====================================#
|
@@ -328,27 +309,29 @@
|
|
328
309
|
# IPAdmin Methods
|
329
310
|
#============================================================================#
|
330
311
|
puts "IPAdmin Methods"
|
331
|
-
|
312
|
+
print "\n"
|
313
|
+
|
332
314
|
# validate ip
|
333
|
-
puts "
|
315
|
+
puts "validate ip"
|
334
316
|
puts "192.168.1.0 is valid" if ( IPAdmin.validate_ipv4_addr('192.168.1.0') )
|
335
|
-
puts "
|
317
|
+
puts "fec0::0 is valid" if ( IPAdmin.validate_ipv6_addr('fec0::0') )
|
336
318
|
print "\n"
|
337
319
|
|
338
320
|
# validate netmask
|
339
|
-
puts "
|
321
|
+
puts "validate netmask"
|
340
322
|
puts "255.255.255.0 is valid" if (IPAdmin.validate_ipv4_netmask('255.255.255.0') )
|
341
323
|
puts "/24 is valid" if ( IPAdmin.validate_ipv4_netmask(24) )
|
342
324
|
puts "/64 is valid" if ( IPAdmin.validate_ipv6_netmask(64) )
|
343
325
|
|
344
326
|
cidr4_1 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
|
345
327
|
cidr4_2 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/25')
|
328
|
+
cidr4_3 = IPAdmin::CIDR.new(:CIDR => '192.168.1.50')
|
346
329
|
cidr6_1 = IPAdmin::CIDR.new(:CIDR => 'fec0::0/10')
|
347
330
|
cidr6_2 = IPAdmin::CIDR.new(:CIDR => 'fec0::0/64')
|
348
331
|
print "\n"
|
349
332
|
|
350
333
|
# compare
|
351
|
-
puts "
|
334
|
+
puts "compare"
|
352
335
|
comp1 = IPAdmin.compare(cidr4_1,cidr4_2)
|
353
336
|
comp2 = IPAdmin.compare(cidr6_1,cidr6_2)
|
354
337
|
puts "#{(comp1[0]).desc} is the supernet of #{(comp1[1]).desc}"
|
@@ -358,31 +341,32 @@
|
|
358
341
|
cidr4_2 = IPAdmin::CIDR.new(:CIDR => '192.168.0.0/24')
|
359
342
|
cidr6_1 = IPAdmin::CIDR.new(:CIDR => 'fec0::0/128')
|
360
343
|
cidr6_2 = IPAdmin::CIDR.new(:CIDR => 'fec0::1/128')
|
361
|
-
|
362
|
-
ip1 = IPAdmin::IPAddr.new(:IPAddr => '192.168.1.0')
|
363
|
-
ip2 = IPAdmin::IPAddr.new(:IPAddr => '192.168.1.50')
|
364
344
|
print "\n"
|
365
345
|
|
366
346
|
# range
|
367
|
-
puts "
|
368
|
-
list = IPAdmin.range(:Boundaries => [
|
369
|
-
puts "ip's between #{
|
347
|
+
puts "range"
|
348
|
+
list = IPAdmin.range(:Boundaries => [cidr4_1,cidr4_3], :Bitstep => 20 )
|
349
|
+
puts "ip's between #{cidr4_1.base} and #{cidr4_3.base} (bitstep of 20)"
|
370
350
|
list.each do |x|
|
371
351
|
puts " #{x}"
|
372
352
|
end
|
373
353
|
print "\n"
|
374
354
|
|
375
355
|
# arpa
|
376
|
-
puts "
|
356
|
+
puts "arpa"
|
377
357
|
puts "arpa for #{cidr4_1.desc()} is #{IPAdmin.arpa(cidr4_1)}"
|
378
358
|
puts "arpa for #{cidr6_1.desc()} is #{IPAdmin.arpa(cidr6_1)}"
|
379
359
|
print "\n"
|
380
360
|
|
381
361
|
# shorten
|
382
|
-
puts "
|
362
|
+
puts "shorten"
|
383
363
|
puts "shorthand notation for #{cidr6_1.network()} is #{IPAdmin.shorten(cidr6_1.network)}"
|
364
|
+
print "\n"
|
365
|
+
|
366
|
+
# unshorten
|
367
|
+
puts "unshorten"
|
368
|
+
puts "expanded notation for fec0:: is #{IPAdmin.unshorten('fec0::')}"
|
384
369
|
|
385
|
-
print "\n\n\n"
|
386
370
|
#=====================================#
|
387
371
|
#
|
388
372
|
#=====================================#
|