ipadmin 0.4.0 → 0.4.1
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 +166 -446
- data/lib/cidr.rb +132 -241
- data/lib/eui.rb +6 -40
- data/lib/methods.rb +28 -99
- data/lib/tree.rb +23 -144
- data/tests/cidr_test.rb +28 -17
- data/tests/tree_test.rb +2 -1
- metadata +4 -4
data/lib/tree.rb
CHANGED
@@ -22,11 +22,6 @@ class Tree
|
|
22
22
|
@root = NetStruct.new(nil, nil, [])
|
23
23
|
end
|
24
24
|
|
25
|
-
#======================================#
|
26
|
-
#
|
27
|
-
#======================================#
|
28
|
-
|
29
|
-
|
30
25
|
#==============================================================================#
|
31
26
|
# add!()
|
32
27
|
#==============================================================================#
|
@@ -34,13 +29,15 @@ class Tree
|
|
34
29
|
# Add a CIDR address or IPAdmin::CIDR object to the tree.
|
35
30
|
#
|
36
31
|
# - Arguments:
|
37
|
-
# *
|
32
|
+
# * String or IPAdmin::CIDR object
|
38
33
|
#
|
39
34
|
# - Returns:
|
40
|
-
# *
|
35
|
+
# * nil
|
41
36
|
#
|
42
37
|
# Examples:
|
43
38
|
# tree.add!('192.168.1.0/24')
|
39
|
+
# cidr = IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24', :Tag => {:title => 'test net'}
|
40
|
+
# tree.add!(cidr)
|
44
41
|
#
|
45
42
|
def add!(new)
|
46
43
|
duplicate = false
|
@@ -54,10 +51,7 @@ class Tree
|
|
54
51
|
"errors: #{error}"
|
55
52
|
end
|
56
53
|
else
|
57
|
-
cidr =
|
58
|
-
:PackedNetmask => new.packed_netmask,
|
59
|
-
:Version => new.version,
|
60
|
-
:Tag => new.tag)
|
54
|
+
cidr = new.dup
|
61
55
|
end
|
62
56
|
|
63
57
|
version = cidr.version
|
@@ -89,14 +83,9 @@ class Tree
|
|
89
83
|
add_to_parent(new_entry,new_entry.parent)
|
90
84
|
end
|
91
85
|
|
92
|
-
return()
|
86
|
+
return(nil)
|
93
87
|
end
|
94
88
|
|
95
|
-
#======================================#
|
96
|
-
#
|
97
|
-
#======================================#
|
98
|
-
|
99
|
-
|
100
89
|
#==============================================================================#
|
101
90
|
# ancestors()
|
102
91
|
#==============================================================================#
|
@@ -104,7 +93,7 @@ class Tree
|
|
104
93
|
# Returns all the ancestors of the provided CIDR addresses.
|
105
94
|
#
|
106
95
|
# - Arguments:
|
107
|
-
# *
|
96
|
+
# * String or IPAdmin::CIDR object
|
108
97
|
#
|
109
98
|
# - Returns:
|
110
99
|
# * Array of IPAdmin::CIDR objects
|
@@ -134,11 +123,6 @@ class Tree
|
|
134
123
|
return(list)
|
135
124
|
end
|
136
125
|
|
137
|
-
#======================================#
|
138
|
-
#
|
139
|
-
#======================================#
|
140
|
-
|
141
|
-
|
142
126
|
#==============================================================================#
|
143
127
|
# children()
|
144
128
|
#==============================================================================#
|
@@ -146,7 +130,7 @@ class Tree
|
|
146
130
|
# Returns all the immediate children of the provided CIDR addresses.
|
147
131
|
#
|
148
132
|
# - Arguments:
|
149
|
-
# *
|
133
|
+
# * String or IPAdmin::CIDR object
|
150
134
|
#
|
151
135
|
# - Returns:
|
152
136
|
# * Array of IPAdmin::CIDR objects
|
@@ -173,11 +157,6 @@ class Tree
|
|
173
157
|
return(list)
|
174
158
|
end
|
175
159
|
|
176
|
-
#======================================#
|
177
|
-
#
|
178
|
-
#======================================#
|
179
|
-
|
180
|
-
|
181
160
|
#==============================================================================#
|
182
161
|
# descendants
|
183
162
|
#==============================================================================#
|
@@ -185,7 +164,7 @@ class Tree
|
|
185
164
|
# Return all descendants of the provided CIDR address.
|
186
165
|
#
|
187
166
|
# - Arguments:
|
188
|
-
# *
|
167
|
+
# * String or IPAdmin::CIDR object
|
189
168
|
#
|
190
169
|
# - Returns:
|
191
170
|
# * Array of IPAdmin::CIDR objects
|
@@ -212,11 +191,6 @@ class Tree
|
|
212
191
|
return(list)
|
213
192
|
end
|
214
193
|
|
215
|
-
#======================================#
|
216
|
-
#
|
217
|
-
#======================================#
|
218
|
-
|
219
|
-
|
220
194
|
#==============================================================================#
|
221
195
|
# delete!()
|
222
196
|
#==============================================================================#
|
@@ -224,7 +198,7 @@ class Tree
|
|
224
198
|
# Remove the provided CIDR address from the tree.
|
225
199
|
#
|
226
200
|
# - Arguments:
|
227
|
-
# *
|
201
|
+
# * String or IPAdmin::CIDR object
|
228
202
|
#
|
229
203
|
# - Returns:
|
230
204
|
# * true on success or false on fail
|
@@ -260,11 +234,6 @@ class Tree
|
|
260
234
|
return(removed)
|
261
235
|
end
|
262
236
|
|
263
|
-
#======================================#
|
264
|
-
#
|
265
|
-
#======================================#
|
266
|
-
|
267
|
-
|
268
237
|
#==============================================================================#
|
269
238
|
# dump
|
270
239
|
#==============================================================================#
|
@@ -294,11 +263,6 @@ class Tree
|
|
294
263
|
return(list)
|
295
264
|
end
|
296
265
|
|
297
|
-
#======================================#
|
298
|
-
#
|
299
|
-
#======================================#
|
300
|
-
|
301
|
-
|
302
266
|
#==============================================================================#
|
303
267
|
# exists?()
|
304
268
|
#==============================================================================#
|
@@ -306,7 +270,7 @@ class Tree
|
|
306
270
|
# Has a CIDR address already been added to the tree?
|
307
271
|
#
|
308
272
|
# - Arguments:
|
309
|
-
# *
|
273
|
+
# * String or IPAdmin::CIDR object
|
310
274
|
#
|
311
275
|
# - Returns:
|
312
276
|
# * true or false
|
@@ -331,11 +295,6 @@ class Tree
|
|
331
295
|
return(found)
|
332
296
|
end
|
333
297
|
|
334
|
-
#======================================#
|
335
|
-
#
|
336
|
-
#======================================#
|
337
|
-
|
338
|
-
|
339
298
|
#==============================================================================#
|
340
299
|
# fill_in!()
|
341
300
|
#==============================================================================#
|
@@ -343,7 +302,7 @@ class Tree
|
|
343
302
|
# Fill in the missing subnets of a particular CIDR.
|
344
303
|
#
|
345
304
|
# - Arguments:
|
346
|
-
# *
|
305
|
+
# * String or IPAdmin::CIDR object
|
347
306
|
#
|
348
307
|
# - Returns:
|
349
308
|
# * true or false
|
@@ -376,11 +335,6 @@ class Tree
|
|
376
335
|
return(filled)
|
377
336
|
end
|
378
337
|
|
379
|
-
#======================================#
|
380
|
-
#
|
381
|
-
#======================================#
|
382
|
-
|
383
|
-
|
384
338
|
#==============================================================================#
|
385
339
|
# find()
|
386
340
|
#==============================================================================#
|
@@ -388,7 +342,7 @@ class Tree
|
|
388
342
|
# Find and return a CIDR from within the tree.
|
389
343
|
#
|
390
344
|
# - Arguments:
|
391
|
-
# *
|
345
|
+
# * String or IPAdmin::CIDR object
|
392
346
|
#
|
393
347
|
# - Returns:
|
394
348
|
# * IPAdmin::CIDR object, or nil
|
@@ -409,11 +363,6 @@ class Tree
|
|
409
363
|
return(find_me(cidr).cidr)
|
410
364
|
end
|
411
365
|
|
412
|
-
#======================================#
|
413
|
-
#
|
414
|
-
#======================================#
|
415
|
-
|
416
|
-
|
417
366
|
#==============================================================================#
|
418
367
|
# find_space()
|
419
368
|
#==============================================================================#
|
@@ -487,11 +436,6 @@ class Tree
|
|
487
436
|
return(list)
|
488
437
|
end
|
489
438
|
|
490
|
-
#======================================#
|
491
|
-
#
|
492
|
-
#======================================#
|
493
|
-
|
494
|
-
|
495
439
|
#==============================================================================#
|
496
440
|
# longest_match()
|
497
441
|
#==============================================================================#
|
@@ -500,7 +444,7 @@ class Tree
|
|
500
444
|
# CIDR address belongs. Useful for performing 'routing table' style lookups.
|
501
445
|
#
|
502
446
|
# - Arguments:
|
503
|
-
# *
|
447
|
+
# * String or IPAdmin::CIDR object
|
504
448
|
#
|
505
449
|
# - Returns:
|
506
450
|
# * IPAdmin::CIDR object, or nil
|
@@ -510,7 +454,7 @@ class Tree
|
|
510
454
|
#
|
511
455
|
def longest_match(cidr)
|
512
456
|
if ( !cidr.kind_of?(IPAdmin::CIDR) )
|
513
|
-
begin
|
457
|
+
begin
|
514
458
|
cidr = IPAdmin::CIDR.new(:CIDR => cidr)
|
515
459
|
rescue Exception => error
|
516
460
|
raise ArgumentError, "Provided argument raised the following " +
|
@@ -524,11 +468,6 @@ class Tree
|
|
524
468
|
return(found.cidr)
|
525
469
|
end
|
526
470
|
|
527
|
-
#======================================#
|
528
|
-
#
|
529
|
-
#======================================#
|
530
|
-
|
531
|
-
|
532
471
|
#==============================================================================#
|
533
472
|
# merge_subnets!()
|
534
473
|
#==============================================================================#
|
@@ -536,7 +475,7 @@ class Tree
|
|
536
475
|
# Merge (summarize) all subnets of the provided CIDR address.
|
537
476
|
#
|
538
477
|
# - Arguments:
|
539
|
-
# *
|
478
|
+
# * String or IPAdmin::CIDR object
|
540
479
|
#
|
541
480
|
# - Returns:
|
542
481
|
# * true on success or false on fail
|
@@ -571,11 +510,6 @@ class Tree
|
|
571
510
|
return(merged)
|
572
511
|
end
|
573
512
|
|
574
|
-
#======================================#
|
575
|
-
#
|
576
|
-
#======================================#
|
577
|
-
|
578
|
-
|
579
513
|
#==============================================================================#
|
580
514
|
# prune!()
|
581
515
|
#==============================================================================#
|
@@ -583,7 +517,7 @@ class Tree
|
|
583
517
|
# Remove all subnets of the provided CIDR address.
|
584
518
|
#
|
585
519
|
# - Arguments:
|
586
|
-
# *
|
520
|
+
# * String or IPAdmin::CIDR object
|
587
521
|
#
|
588
522
|
# - Returns:
|
589
523
|
# * true on success or false on fail
|
@@ -614,11 +548,6 @@ class Tree
|
|
614
548
|
return(pruned)
|
615
549
|
end
|
616
550
|
|
617
|
-
#======================================#
|
618
|
-
#
|
619
|
-
#======================================#
|
620
|
-
|
621
|
-
|
622
551
|
#==============================================================================#
|
623
552
|
# remove!()
|
624
553
|
#==============================================================================#
|
@@ -626,7 +555,7 @@ class Tree
|
|
626
555
|
# Remove the provided CIDR address, and all of its subnets from the tree.
|
627
556
|
#
|
628
557
|
# - Arguments:
|
629
|
-
# *
|
558
|
+
# * String or IPAdmin::CIDR object
|
630
559
|
#
|
631
560
|
# - Returns:
|
632
561
|
# * true on success or false on fail
|
@@ -659,11 +588,6 @@ class Tree
|
|
659
588
|
return(removed)
|
660
589
|
end
|
661
590
|
|
662
|
-
#======================================#
|
663
|
-
#
|
664
|
-
#======================================#
|
665
|
-
|
666
|
-
|
667
591
|
#==============================================================================#
|
668
592
|
# resize!()
|
669
593
|
#==============================================================================#
|
@@ -671,7 +595,7 @@ class Tree
|
|
671
595
|
# Resize the provided CIDR address.
|
672
596
|
#
|
673
597
|
# - Arguments:
|
674
|
-
# *
|
598
|
+
# * String or IPAdmin::CIDR object
|
675
599
|
# * Integer representing the bits of the new netmask
|
676
600
|
#
|
677
601
|
# - Returns:
|
@@ -705,11 +629,6 @@ class Tree
|
|
705
629
|
return(resized)
|
706
630
|
end
|
707
631
|
|
708
|
-
#======================================#
|
709
|
-
#
|
710
|
-
#======================================#
|
711
|
-
|
712
|
-
|
713
632
|
#==============================================================================#
|
714
633
|
# root()
|
715
634
|
#==============================================================================#
|
@@ -717,7 +636,7 @@ class Tree
|
|
717
636
|
# Returns the root of the provided CIDR address.
|
718
637
|
#
|
719
638
|
# - Arguments:
|
720
|
-
# *
|
639
|
+
# * String or IPAdmin::CIDR object
|
721
640
|
#
|
722
641
|
# - Returns:
|
723
642
|
# * IPAdmin::CIDR object
|
@@ -747,11 +666,6 @@ class Tree
|
|
747
666
|
return(parent.cidr)
|
748
667
|
end
|
749
668
|
|
750
|
-
#======================================#
|
751
|
-
#
|
752
|
-
#======================================#
|
753
|
-
|
754
|
-
|
755
669
|
#==============================================================================#
|
756
670
|
# show()
|
757
671
|
#==============================================================================#
|
@@ -762,7 +676,7 @@ class Tree
|
|
762
676
|
# * none
|
763
677
|
#
|
764
678
|
# - Returns:
|
765
|
-
# * String
|
679
|
+
# * String
|
766
680
|
#
|
767
681
|
# Examples:
|
768
682
|
# puts tree.show()
|
@@ -787,11 +701,6 @@ class Tree
|
|
787
701
|
return(printed)
|
788
702
|
end
|
789
703
|
|
790
|
-
#======================================#
|
791
|
-
#
|
792
|
-
#======================================#
|
793
|
-
|
794
|
-
|
795
704
|
#==============================================================================#
|
796
705
|
# siblings()
|
797
706
|
#==============================================================================#
|
@@ -799,7 +708,7 @@ class Tree
|
|
799
708
|
# Return list of the sibling CIDRs of the provided CIDR address.
|
800
709
|
#
|
801
710
|
# - Arguments:
|
802
|
-
# *
|
711
|
+
# * String or IPAdmin::CIDR object
|
803
712
|
#
|
804
713
|
# - Returns:
|
805
714
|
# * Array of IPAdmin::CIDR objects
|
@@ -828,11 +737,6 @@ class Tree
|
|
828
737
|
return(list)
|
829
738
|
end
|
830
739
|
|
831
|
-
#======================================#
|
832
|
-
#
|
833
|
-
#======================================#
|
834
|
-
|
835
|
-
|
836
740
|
#==============================================================================#
|
837
741
|
# supernets()
|
838
742
|
#==============================================================================#
|
@@ -854,12 +758,6 @@ class Tree
|
|
854
758
|
return (supernets)
|
855
759
|
end
|
856
760
|
|
857
|
-
#======================================#
|
858
|
-
#
|
859
|
-
#======================================#
|
860
|
-
|
861
|
-
|
862
|
-
|
863
761
|
|
864
762
|
# PRIVATE INSTANCE METHODS
|
865
763
|
private
|
@@ -884,11 +782,6 @@ private
|
|
884
782
|
return()
|
885
783
|
end
|
886
784
|
|
887
|
-
#======================================#
|
888
|
-
#
|
889
|
-
#======================================#
|
890
|
-
|
891
|
-
|
892
785
|
#==============================================================================#
|
893
786
|
# dump_children() private
|
894
787
|
#==============================================================================#
|
@@ -910,11 +803,6 @@ private
|
|
910
803
|
return(list)
|
911
804
|
end
|
912
805
|
|
913
|
-
#======================================#
|
914
|
-
#
|
915
|
-
#======================================#
|
916
|
-
|
917
|
-
|
918
806
|
#==============================================================================#
|
919
807
|
# find_me() private
|
920
808
|
#==============================================================================#
|
@@ -938,11 +826,6 @@ private
|
|
938
826
|
return(me)
|
939
827
|
end
|
940
828
|
|
941
|
-
#======================================#
|
942
|
-
#
|
943
|
-
#======================================#
|
944
|
-
|
945
|
-
|
946
829
|
#==============================================================================#
|
947
830
|
# find_parent() private
|
948
831
|
#==============================================================================#
|
@@ -967,11 +850,7 @@ private
|
|
967
850
|
return(parent)
|
968
851
|
end
|
969
852
|
|
970
|
-
|
971
|
-
#
|
972
|
-
#======================================#
|
973
|
-
|
974
|
-
end
|
853
|
+
end # class Tree
|
975
854
|
|
976
855
|
end # module IPAdmin
|
977
856
|
__END__
|
data/tests/cidr_test.rb
CHANGED
@@ -8,34 +8,45 @@ require 'test/unit'
|
|
8
8
|
class TestCIDR < Test::Unit::TestCase
|
9
9
|
|
10
10
|
def test_new
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
cidr = IPAdmin::CIDR.new(:CIDR => '
|
23
|
-
assert_equal(
|
11
|
+
assert_nothing_raised(Exception){IPAdmin::CIDR.new('192.168.1.0/24')}
|
12
|
+
assert_nothing_raised(Exception){IPAdmin::CIDR.new(:CIDR => '192.168.1.0/24') }
|
13
|
+
assert_nothing_raised(Exception){IPAdmin::CIDR.new(:CIDR => '192.168.1.0 255.255.255.0')}
|
14
|
+
assert_nothing_raised(Exception){IPAdmin::CIDR.new(:CIDR => '192.168.1.1') }
|
15
|
+
assert_nothing_raised(Exception){IPAdmin::CIDR.new(:CIDR => '192.168.1.1 ') }
|
16
|
+
assert_nothing_raised(Exception){IPAdmin::CIDR.new(:CIDR => 'fec0::/64') }
|
17
|
+
assert_nothing_raised(Exception){IPAdmin::CIDR.new(:CIDR => '192.168.1.1/24 255.255.0.0')}
|
18
|
+
assert_nothing_raised(Exception){IPAdmin::CIDR.new(:CIDR => 'fec0::1/64')}
|
19
|
+
assert_nothing_raised(Exception){IPAdmin::CIDR.new('fec0::1/64')}
|
20
|
+
assert_nothing_raised(Exception){IPAdmin::CIDR.new(:PackedIP => 0x0a0a0a0a, :PackedNetmask => 0xffffffff)}
|
21
|
+
|
22
|
+
cidr = IPAdmin::CIDR.new(:CIDR => '192.168.1.1 255.255.0.0')
|
23
|
+
assert_equal(16, cidr.bits )
|
24
|
+
assert_equal(4, cidr.version )
|
25
|
+
|
26
|
+
cidr = IPAdmin::CIDR.new(:CIDR => '192.168.1.1/24 255.255.0.0')
|
27
|
+
assert_equal(24, cidr.bits )
|
28
|
+
assert_equal(4, cidr.version )
|
24
29
|
|
25
|
-
cidr = IPAdmin::CIDR.new(:CIDR => 'fec0::1/
|
26
|
-
assert_equal(
|
30
|
+
cidr = IPAdmin::CIDR.new(:CIDR => 'fec0::1/64')
|
31
|
+
assert_equal(64, cidr.bits )
|
32
|
+
assert_equal(6, cidr.version )
|
27
33
|
|
28
34
|
cidr = IPAdmin::CIDR.new(:CIDR => '10.10.10.10', :PackedIP => 0x0a0000000)
|
29
35
|
assert_equal(0x0a0000000, cidr.packed_ip )
|
36
|
+
assert_equal(4, cidr.version )
|
30
37
|
|
31
|
-
cidr = IPAdmin::CIDR.new(:CIDR => '10.10.10.10/32'
|
38
|
+
cidr = IPAdmin::CIDR.new(:CIDR => '10.10.10.10/32 255.255.255.0')
|
32
39
|
assert_equal(32, cidr.bits )
|
40
|
+
assert_equal(4, cidr.version )
|
33
41
|
|
34
42
|
cidr = IPAdmin::CIDR.new(:CIDR => '10.10.10.10/32', :PackedNetmask => 0xffffff00)
|
35
43
|
assert_equal(24, cidr.bits )
|
44
|
+
assert_equal(4, cidr.version )
|
36
45
|
|
37
46
|
assert_raise(ArgumentError){ IPAdmin::CIDR.new(1) }
|
38
|
-
assert_raise(ArgumentError){ IPAdmin::CIDR.new(:Version => 4
|
47
|
+
assert_raise(ArgumentError){ IPAdmin::CIDR.new(:Version => 4) }
|
48
|
+
assert_raise(ArgumentError){ IPAdmin::CIDR.new('fec0::1/64 255.255.255.0') }
|
49
|
+
assert_raise(RuntimeError){ IPAdmin::CIDR.new(:CIDR => '192.168.1.0 a') }
|
39
50
|
end
|
40
51
|
|
41
52
|
|