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 CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- Copyright (c) 2006 Dustin Spinhirne <dspinhir@yahoo.com>
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.0',
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::0/64')
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 "TEST 1"
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 "TEST 2"
115
- puts "#{cidr4.desc} contains #{ip4.desc}" if ( cidr4.contains(ip4) )
116
- puts "#{cidr6.desc} contains #{ip6.desc}" if ( cidr6.contains(ip6) )
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 "TEST 3"
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
- # extended masks
126
- puts "TEST 4"
75
+ # hostmask_ext
76
+ puts "hostmask_ext"
127
77
  puts "cidr4 extended hostmask #{cidr4.hostmask_ext()}"
128
- puts "cidr4 extended netmask #{cidr4.netmask_ext()}"
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 "TEST 5"
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
- # bits
138
- puts "TEST 6"
139
- puts "cidr4 netmask in bits #{cidr4.bits()}"
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 "TEST 7"
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 "TEST 8"
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)).desc}"
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 "TEST 9"
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 "TEST 11"
178
- puts "cidr4 subnetted into at least 3 /28 ranges"
179
- sn4 = cidr4.subnet(:Subnet => 28, :MinCount => 3)
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 /66 ranges"
185
- sn6 = cidr6.subnet(:Subnet => 66, :MinCount => 4)
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
- cidr4_1 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24')
203
- cidr4_2 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/26')
204
- cidr4_3 = IPAdmin::CIDR.new(:CIDR => '192.168.1.64/26')
205
- cidr4_4 = IPAdmin::CIDR.new(:CIDR => '192.168.1.128/26')
206
- cidr4_5 = IPAdmin::CIDR.new(:CIDR => '192.168.1.192/26')
207
- cidr4_6 = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/27')
208
- cidr4_7 = IPAdmin::CIDR.new(:CIDR => '192.168.1.32/27')
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
- cidr6_1 = IPAdmin::CIDR.new(:CIDR => 'fec0::/64')
211
- cidr6_2 = IPAdmin::CIDR.new(:CIDR => 'fec0::/66')
212
- cidr6_3 = IPAdmin::CIDR.new(:CIDR => 'fec0::4000:0:0:0/66')
213
- cidr6_4 = IPAdmin::CIDR.new(:CIDR => 'fec0::8000:0:0:0/66')
214
- cidr6_5 = IPAdmin::CIDR.new(:CIDR => 'fec0::c000:0:0:0/66')
215
- cidr6_6 = IPAdmin::CIDR.new(:CIDR => 'fec0::/67')
216
- cidr6_7 = IPAdmin::CIDR.new(:CIDR => 'fec0::2000:0:0:0/67')
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
- tree4.add(cidr4_1)
224
- tree4.add(cidr4_2)
225
- tree4.add(cidr4_3)
226
- tree4.add(cidr4_4)
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
- print "\n"
267
- puts "available /67 space"
268
- space = tree6.find_space(:Size => 67)
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
- # remove
275
- puts "TEST 4"
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 "TEST 1"
315
+ puts "validate ip"
334
316
  puts "192.168.1.0 is valid" if ( IPAdmin.validate_ipv4_addr('192.168.1.0') )
335
- puts "192.168.1.0 is valid" if ( IPAdmin.validate_ipv6_addr('fec0::0') )
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 "TEST 2"
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 "TEST 3"
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 "TEST 4"
368
- list = IPAdmin.range(:Boundaries => [ip1,ip2], :Bitstep => 20 )
369
- puts "ip's between #{ip1.desc} and #{ip2.desc} (bitstep of 20)"
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 "TEST 5"
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 "TEST 6"
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
  #=====================================#