ipadmin 0.1.3.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
#=====================================#
|