bgp4r 0.0.11 → 0.0.12
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/bgp/common.rb +14 -13
 - data/bgp/iana.rb +26 -1
 - data/bgp/messages/capability.rb +3 -2
 - data/bgp/messages/message.rb +3 -2
 - data/bgp/messages/open.rb +2 -1
 - data/bgp/messages/update.rb +80 -30
 - data/bgp/neighbor/add_path_cap.rb +125 -0
 - data/bgp/{neighbor.rb → neighbor/neighbor.rb} +64 -68
 - data/bgp/nlris/nlri.rb +289 -15
 - data/bgp/nlris/prefix.rb +3 -2
 - data/bgp/nlris/vpn.rb +1 -8
 - data/bgp/optional_parameters/add_path.rb +160 -0
 - data/bgp/optional_parameters/capabilities.rb +1 -0
 - data/bgp/optional_parameters/capability.rb +6 -0
 - data/bgp/optional_parameters/graceful_restart.rb +6 -6
 - data/bgp/optional_parameters/optional_parameter.rb +1 -0
 - data/bgp/path_attributes/as_path.rb +1 -1
 - data/bgp/path_attributes/attribute.rb +12 -5
 - data/bgp/path_attributes/mp_reach.rb +142 -96
 - data/bgp/path_attributes/mp_unreach.rb +73 -20
 - data/bgp/path_attributes/path_attribute.rb +28 -5
 - data/bgp4r.gemspec +21 -6
 - data/bgp4r.rb +1 -1
 - data/examples/unit-testing/malformed_update.rb +2 -1
 - data/examples/unit-testing/test.rb +82 -0
 - data/examples/unit-testing/test1.rb +82 -0
 - data/examples/unit-testing/test2.rb +44 -0
 - data/test/common_test.rb +7 -0
 - data/test/helpers/server.rb +20 -0
 - data/test/iana_test.rb +43 -0
 - data/test/messages/open_test.rb +7 -2
 - data/test/messages/update_test.rb +133 -36
 - data/test/neighbor/add_path_cap_test.rb +54 -0
 - data/test/neighbor/neighbor_test.rb +161 -0
 - data/test/nlris/ext_nlri_test.rb +25 -60
 - data/test/nlris/nlri_test.rb +93 -115
 - data/test/optional_parameters/add_path_test.rb +53 -0
 - data/test/optional_parameters/capability_test.rb +10 -0
 - data/test/optional_parameters/graceful_restart_test.rb +1 -0
 - data/test/path_attributes/mp_reach_test.rb +206 -8
 - data/test/path_attributes/mp_unreach_test.rb +113 -5
 - data/test/path_attributes/path_attribute_test.rb +34 -2
 - metadata +20 -7
 - data/test/neighbor_test.rb +0 -62
 
| 
         @@ -26,36 +26,48 @@ require 'test/unit' 
     | 
|
| 
       26 
26 
     | 
    
         
             
            class Mp_unreach_Test < Test::Unit::TestCase
         
     | 
| 
       27 
27 
     | 
    
         
             
              include BGP
         
     | 
| 
       28 
28 
     | 
    
         
             
              def test_1
         
     | 
| 
       29 
     | 
    
         
            -
                mpur = Mp_unreach.new(:safi=>1, : 
     | 
| 
      
 29 
     | 
    
         
            +
                mpur = Mp_unreach.new(:safi=>1, :nlris=>['10.0.0.0/16', '10.1.0.0/16'])
         
     | 
| 
       30 
30 
     | 
    
         
             
                assert_raise(ArgumentError) { Mp_unreach.new }
         
     | 
| 
       31 
31 
     | 
    
         
             
              end
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
       33 
33 
     | 
    
         
             
              def test_2
         
     | 
| 
       34 
     | 
    
         
            -
                mpur = Mp_unreach.new(:safi=>2, : 
     | 
| 
      
 34 
     | 
    
         
            +
                mpur = Mp_unreach.new(:safi=>2, :nlris=>['192.168.1.0/24', '192.168.2.0/24'])
         
     | 
| 
       35 
35 
     | 
    
         
             
                assert_equal('800f0b00010218c0a80118c0a802', mpur.to_shex)
         
     | 
| 
       36 
36 
     | 
    
         | 
| 
       37 
     | 
    
         
            -
                 mpur = Mp_unreach.new(:safi=>2, : 
     | 
| 
      
 37 
     | 
    
         
            +
                 mpur = Mp_unreach.new(:safi=>2, :nlris=>['2007:1::/64', '2007:2::/64','2007:3::/64'])
         
     | 
| 
       38 
38 
     | 
    
         
             
                 assert_equal('800f1e000202402007000100000000402007000200000000402007000300000000', mpur.to_shex)
         
     | 
| 
       39 
39 
     | 
    
         | 
| 
       40 
40 
     | 
    
         
             
                 #mpur = Mp_unreach.new(:safi=>2, :prefix=>['2007:1::/64, 101', '2007:2::/64,102','2007:3::/64, 103'])
         
     | 
| 
       41 
     | 
    
         
            -
                 mpur = Mp_unreach.new(:safi=>4, : 
     | 
| 
      
 41 
     | 
    
         
            +
                 mpur = Mp_unreach.new(:safi=>4, :nlris=> [
         
     | 
| 
       42 
42 
     | 
    
         
             
                   {:prefix=>'2007:1::/64', :label=> 101},
         
     | 
| 
       43 
43 
     | 
    
         
             
                   {:prefix=>'2007:2::/64', :label=> 102},
         
     | 
| 
       44 
44 
     | 
    
         
             
                   {:prefix=>'2007:3::/64', :label=> 103},])
         
     | 
| 
      
 45 
     | 
    
         
            +
                   
         
     | 
| 
      
 46 
     | 
    
         
            +
                
         
     | 
| 
       45 
47 
     | 
    
         
             
                assert_equal('800f27000204580006512007000100000000580006612007000200000000580006712007000300000000', mpur.to_shex)
         
     | 
| 
       46 
48 
     | 
    
         
             
                assert_match(/^800f..000204/,mpur.to_shex)
         
     | 
| 
       47 
49 
     | 
    
         
             
                assert_match(/58000651200700010000000058/,mpur.to_shex)
         
     | 
| 
       48 
50 
     | 
    
         
             
                assert_match(/58000661200700020000000058/,mpur.to_shex)
         
     | 
| 
       49 
51 
     | 
    
         
             
                assert_match(/580006712007000300000000$/,mpur.to_shex)
         
     | 
| 
       50 
52 
     | 
    
         | 
| 
       51 
     | 
    
         
            -
                mpur = Mp_unreach.new(:safi=>128, : 
     | 
| 
      
 53 
     | 
    
         
            +
                mpur = Mp_unreach.new(:safi=>128, :nlris=> [
         
     | 
| 
       52 
54 
     | 
    
         
             
                  {:rd=> Rd.new(100,100), :prefix=> Prefix.new('192.168.1.0/24'), :label=>101},
         
     | 
| 
       53 
55 
     | 
    
         
             
                  {:rd=> Rd.new(100,100), :prefix=> Prefix.new('192.168.2.0/24'), :label=>102},
         
     | 
| 
       54 
56 
     | 
    
         
             
                  {:rd=> Rd.new(100,100), :prefix=> Prefix.new('192.168.3.0/24'), :label=>103},])
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
       55 
59 
     | 
    
         
             
                assert_match(/^800f..000180/,mpur.to_shex)
         
     | 
| 
       56 
60 
     | 
    
         
             
                assert_equal("700006510000006400000064c0a801",mpur.nlris[0].to_shex)
         
     | 
| 
       57 
61 
     | 
    
         
             
                assert_equal("700006610000006400000064c0a802",mpur.nlris[1].to_shex)
         
     | 
| 
       58 
62 
     | 
    
         | 
| 
      
 63 
     | 
    
         
            +
                mpur = Mp_unreach.new(:safi=>128, :nlris=> [
         
     | 
| 
      
 64 
     | 
    
         
            +
                  {:rd=> Rd.new(100,100), :prefix=> '192.168.1.0/24', :label=>101},
         
     | 
| 
      
 65 
     | 
    
         
            +
                  {:rd=> Rd.new(100,100), :prefix=> '192.168.2.0/24', :label=>102},
         
     | 
| 
      
 66 
     | 
    
         
            +
                  {:rd=> Rd.new(100,100), :prefix=> '192.168.3.0/24', :label=>103},])
         
     | 
| 
      
 67 
     | 
    
         
            +
                  assert_match(/^800f..000180/,mpur.to_shex)
         
     | 
| 
      
 68 
     | 
    
         
            +
                  assert_equal("700006510000006400000064c0a801",mpur.nlris[0].to_shex)
         
     | 
| 
      
 69 
     | 
    
         
            +
                  assert_equal("700006610000006400000064c0a802",mpur.nlris[1].to_shex)
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
       59 
71 
     | 
    
         
             
              end
         
     | 
| 
       60 
72 
     | 
    
         | 
| 
       61 
73 
     | 
    
         
             
              def test_3
         
     | 
| 
         @@ -64,4 +76,100 @@ class Mp_unreach_Test < Test::Unit::TestCase 
     | 
|
| 
       64 
76 
     | 
    
         
             
                assert_equal '800f03000102', Mp_unreach.new(:afi=>1, :safi=>2).to_shex
         
     | 
| 
       65 
77 
     | 
    
         
             
              end
         
     | 
| 
       66 
78 
     | 
    
         | 
| 
      
 79 
     | 
    
         
            +
              def test_afi_1
         
     | 
| 
      
 80 
     | 
    
         
            +
                mpr1 =  Mp_unreach.new(:safi=>1, :nlris=> '192.168.1.0/24')
         
     | 
| 
      
 81 
     | 
    
         
            +
                mpr2 =  Mp_unreach.new(:safi=>1, :nlris=> '192.168.1.0/24', :path_id=>100)
         
     | 
| 
      
 82 
     | 
    
         
            +
                mpr3 =  Mp_unreach.new(:safi=>2, :nlris=> ['192.168.1.0/24','192.168.2.0/24'])
         
     | 
| 
      
 83 
     | 
    
         
            +
                mpr4 =  Mp_unreach.new(:safi=>2, :nlris=> ['192.168.1.0/24','192.168.2.0/24'], :path_id=>100)
         
     | 
| 
      
 84 
     | 
    
         
            +
                mpr5 =  Mp_unreach.new(:safi=>1, :nlris=> [
         
     | 
| 
      
 85 
     | 
    
         
            +
                  {:prefix=> '192.168.1.0/24', :path_id=> 100},
         
     | 
| 
      
 86 
     | 
    
         
            +
                  {:prefix=> '192.168.2.0/24', :path_id=> 101},
         
     | 
| 
      
 87 
     | 
    
         
            +
                  {:prefix=> '192.168.2.0/24', :path_id=> 102},
         
     | 
| 
      
 88 
     | 
    
         
            +
                ])
         
     | 
| 
      
 89 
     | 
    
         
            +
                
         
     | 
| 
      
 90 
     | 
    
         
            +
                
         
     | 
| 
      
 91 
     | 
    
         
            +
                # 
         
     | 
| 
      
 92 
     | 
    
         
            +
                # puts mpr1
         
     | 
| 
      
 93 
     | 
    
         
            +
                # puts mpr2
         
     | 
| 
      
 94 
     | 
    
         
            +
                # puts mpr3
         
     | 
| 
      
 95 
     | 
    
         
            +
                # puts mpr4
         
     | 
| 
      
 96 
     | 
    
         
            +
                # puts mpr5
         
     | 
| 
      
 97 
     | 
    
         
            +
                # 
         
     | 
| 
      
 98 
     | 
    
         
            +
                assert_equal('800f0700010118c0a801', mpr1.to_shex)
         
     | 
| 
      
 99 
     | 
    
         
            +
                assert_equal('800f0b0001010000006418c0a801', mpr2.to_shex)
         
     | 
| 
      
 100 
     | 
    
         
            +
                assert_equal attr_len(mpr1)+4, attr_len(mpr2)
         
     | 
| 
      
 101 
     | 
    
         
            +
                
         
     | 
| 
      
 102 
     | 
    
         
            +
                assert_equal('800f0b00010218c0a80118c0a802', mpr3.to_shex)
         
     | 
| 
      
 103 
     | 
    
         
            +
                assert_equal('800f130001020000006418c0a8010000006418c0a802', mpr4.to_shex)
         
     | 
| 
      
 104 
     | 
    
         
            +
                assert_equal attr_len(mpr3)+8, attr_len(mpr4)
         
     | 
| 
      
 105 
     | 
    
         
            +
                
         
     | 
| 
      
 106 
     | 
    
         
            +
                assert_equal('800f1b0001010000006418c0a8010000006518c0a8020000006618c0a802', mpr5.to_shex)
         
     | 
| 
      
 107 
     | 
    
         
            +
                
         
     | 
| 
      
 108 
     | 
    
         
            +
              end
         
     | 
| 
      
 109 
     | 
    
         
            +
              
         
     | 
| 
      
 110 
     | 
    
         
            +
              def test_safi_2_afi_2
         
     | 
| 
      
 111 
     | 
    
         
            +
                unreach1 = Mp_unreach.new( :safi=>2, :nlris=> [
         
     | 
| 
      
 112 
     | 
    
         
            +
                  {:prefix=> '2007:1::/64'}, 
         
     | 
| 
      
 113 
     | 
    
         
            +
                  {:prefix=> '2007:2::/64'}, 
         
     | 
| 
      
 114 
     | 
    
         
            +
                  {:prefix=> '2007:3::/64'} 
         
     | 
| 
      
 115 
     | 
    
         
            +
                ]
         
     | 
| 
      
 116 
     | 
    
         
            +
                )
         
     | 
| 
      
 117 
     | 
    
         
            +
                assert_equal(3, unreach1.nlris.size)
         
     | 
| 
      
 118 
     | 
    
         
            +
                assert_equal(2,unreach1.afi)
         
     | 
| 
      
 119 
     | 
    
         
            +
                assert_equal(2,unreach1.safi)
         
     | 
| 
      
 120 
     | 
    
         
            +
             
     | 
| 
      
 121 
     | 
    
         
            +
                unreach2 = Mp_unreach.new( :safi=>2, :nlris=> [
         
     | 
| 
      
 122 
     | 
    
         
            +
                  {:prefix=> '2007:1::/64', :path_id=> 101}, 
         
     | 
| 
      
 123 
     | 
    
         
            +
                  {:prefix=> '2007:2::/64', :path_id=> 102}, 
         
     | 
| 
      
 124 
     | 
    
         
            +
                  {:prefix=> '2007:3::/64', :path_id=> 103} 
         
     | 
| 
      
 125 
     | 
    
         
            +
                ]
         
     | 
| 
      
 126 
     | 
    
         
            +
                )
         
     | 
| 
      
 127 
     | 
    
         
            +
                
         
     | 
| 
      
 128 
     | 
    
         
            +
                s1 = '80 0f 1e 0002 02          40 2007000100000000          40 2007000200000000          40 2007000300000000'
         
     | 
| 
      
 129 
     | 
    
         
            +
                s2 = '80 0f 2a 0002 02 00000065 40 2007000100000000 00000066 40 2007000200000000 00000067 40 2007000300000000'
         
     | 
| 
      
 130 
     | 
    
         
            +
                assert_equal(s1.split.join,unreach1.to_shex)
         
     | 
| 
      
 131 
     | 
    
         
            +
                assert_equal(s2.split.join,unreach2.to_shex)
         
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
                assert_equal(s1.split.join, Mp_unreach.new(unreach1.encode).to_shex)
         
     | 
| 
      
 134 
     | 
    
         
            +
                assert_equal(s2.split.join, Mp_unreach.new(unreach2.encode,true).to_shex)
         
     | 
| 
      
 135 
     | 
    
         
            +
              
         
     | 
| 
      
 136 
     | 
    
         
            +
              end
         
     | 
| 
      
 137 
     | 
    
         
            +
              
         
     | 
| 
      
 138 
     | 
    
         
            +
              def test_safi_128
         
     | 
| 
      
 139 
     | 
    
         
            +
                
         
     | 
| 
      
 140 
     | 
    
         
            +
                # ffff ffff ffff ffff ffff ffff ffff ffff
         
     | 
| 
      
 141 
     | 
    
         
            +
                # 0031 0200 0000 1a
         
     | 
| 
      
 142 
     | 
    
         
            +
                # 90 0f 0016 0001 80 00000001 70 800000 00000001000000010a0101
         
     | 
| 
      
 143 
     | 
    
         
            +
                # 80 0f 12   0001 80          70 03e801 00000001000000010a0101
         
     | 
| 
      
 144 
     | 
    
         
            +
                # 80 0f 16   0001 80 00000001 70 03e801 00000001000000010a0101
         
     | 
| 
      
 145 
     | 
    
         
            +
                
         
     | 
| 
      
 146 
     | 
    
         
            +
                # Mp Reach (14), length: 9216, Flags [OE]: 
         
     | 
| 
      
 147 
     | 
    
         
            +
                #   AFI IPv4 (1), SAFI Labeled VPN Unicast (128)
         
     | 
| 
      
 148 
     | 
    
         
            +
                #   nexthop: 1.1.1.1
         
     | 
| 
      
 149 
     | 
    
         
            +
                #     ID=1, Label Stack=16000 (bottom) RD=1:1, IPv4=10.1.1.0/24
         
     | 
| 
      
 150 
     | 
    
         
            +
                #  0x0000:  0180 0c00 0000 0000 0000 0001 0101 0100
         
     | 
| 
      
 151 
     | 
    
         
            +
                #  0x0001:  0000 0001 7003 e801 0000 0001 0000 0001
         
     | 
| 
      
 152 
     | 
    
         
            +
                #  0x0002:  0a01 01
         
     | 
| 
      
 153 
     | 
    
         
            +
                
         
     | 
| 
      
 154 
     | 
    
         
            +
                unreach1 = Mp_unreach.new( :safi=> 128, :nlris => [{:rd=> Rd.new(1,1), :prefix=> '10.1.1.0/24', :label=>16000},])
         
     | 
| 
      
 155 
     | 
    
         
            +
                unreach2 = Mp_unreach.new( :safi=> 128, :nlris => [{:rd=> Rd.new(1,1), :prefix=> '10.1.1.0/24', :label=>16000, :path_id=> 1},])
         
     | 
| 
      
 156 
     | 
    
         
            +
                
         
     | 
| 
      
 157 
     | 
    
         
            +
                assert_equal(16000,  Label.new(['03e801'].pack('H*')).to_hash[:label])
         
     | 
| 
      
 158 
     | 
    
         
            +
                assert_equal(524288, Label.new(['800000'].pack('H*')).to_hash[:label])
         
     | 
| 
      
 159 
     | 
    
         
            +
                
         
     | 
| 
      
 160 
     | 
    
         
            +
                s1 = '80 0f 12 0001 80 70 03e801 000000010000000 10a0101'.split.join
         
     | 
| 
      
 161 
     | 
    
         
            +
                s2 = '80 0f 16   0001 80 00000001 70 03e801 00000001000000010a0101'.split.join
         
     | 
| 
      
 162 
     | 
    
         
            +
                assert_equal(s1, unreach1.to_shex)
         
     | 
| 
      
 163 
     | 
    
         
            +
                assert_equal(s1, Mp_unreach.new(unreach1.encode).to_shex)
         
     | 
| 
      
 164 
     | 
    
         
            +
                assert_equal(s2, unreach2.to_shex)
         
     | 
| 
      
 165 
     | 
    
         
            +
                assert_equal(s2, Mp_unreach.new(unreach2.encode,true).to_shex)
         
     | 
| 
      
 166 
     | 
    
         
            +
                
         
     | 
| 
      
 167 
     | 
    
         
            +
              end
         
     | 
| 
      
 168 
     | 
    
         
            +
              
         
     | 
| 
      
 169 
     | 
    
         
            +
              private
         
     | 
| 
      
 170 
     | 
    
         
            +
              
         
     | 
| 
      
 171 
     | 
    
         
            +
               def attr_len(attr)
         
     | 
| 
      
 172 
     | 
    
         
            +
                 attr.encode[2,1].unpack('C')[0]
         
     | 
| 
      
 173 
     | 
    
         
            +
               end
         
     | 
| 
      
 174 
     | 
    
         
            +
              
         
     | 
| 
       67 
175 
     | 
    
         
             
            end
         
     | 
| 
         @@ -22,6 +22,7 @@ 
     | 
|
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
            require 'test/unit'
         
     | 
| 
       24 
24 
     | 
    
         
             
            require 'bgp/path_attributes/path_attribute'
         
     | 
| 
      
 25 
     | 
    
         
            +
            require 'bgp/path_attributes/attributes'
         
     | 
| 
       25 
26 
     | 
    
         | 
| 
       26 
27 
     | 
    
         
             
            class Path_attribute_Test < Test::Unit::TestCase # :nodoc:
         
     | 
| 
       27 
28 
     | 
    
         
             
              include BGP
         
     | 
| 
         @@ -141,5 +142,36 @@ class Path_attribute_Test < Test::Unit::TestCase # :nodoc: 
     | 
|
| 
       141 
142 
     | 
    
         
             
                assert @pa.has_a_local_pref_attr?
         
     | 
| 
       142 
143 
     | 
    
         
             
                assert ! @pa.has_a_aggregator_attr?
         
     | 
| 
       143 
144 
     | 
    
         
             
                assert ! @pa.has_a_mp_unreach_attr?
         
     | 
| 
       144 
     | 
    
         
            -
              end 
     | 
| 
       145 
     | 
    
         
            -
             
     | 
| 
      
 145 
     | 
    
         
            +
              end
         
     | 
| 
      
 146 
     | 
    
         
            +
             
     | 
| 
      
 147 
     | 
    
         
            +
              def test_7
         
     | 
| 
      
 148 
     | 
    
         
            +
                s =   '800e1000010404ffffffff0030000651c0a800'
         
     | 
| 
      
 149 
     | 
    
         
            +
                sbin = [s].pack('H*')
         
     | 
| 
      
 150 
     | 
    
         
            +
                assert_equal(BGP::Mp_reach, Attr.factory(sbin, :path_id=>false).class)
         
     | 
| 
      
 151 
     | 
    
         
            +
                s = '800e1400010404ffffffff000000006430000651c0a800'
         
     | 
| 
      
 152 
     | 
    
         
            +
                sbin = [s].pack('H*')
         
     | 
| 
      
 153 
     | 
    
         
            +
                assert_equal(BGP::Mp_reach, Attr.factory(sbin, :path_id=>true).class)
         
     | 
| 
      
 154 
     | 
    
         
            +
              end
         
     | 
| 
      
 155 
     | 
    
         
            +
              
         
     | 
| 
      
 156 
     | 
    
         
            +
              def test_path_attribute_path_id_true_and_as4byte_false
         
     | 
| 
      
 157 
     | 
    
         
            +
                path_attr = Path_attribute.new
         
     | 
| 
      
 158 
     | 
    
         
            +
                path_attr.insert(
         
     | 
| 
      
 159 
     | 
    
         
            +
                Origin.new,
         
     | 
| 
      
 160 
     | 
    
         
            +
                As_path.new(100),
         
     | 
| 
      
 161 
     | 
    
         
            +
                Mp_reach.new( :safi=>128, :nexthop=> ['10.0.0.1'], :path_id=> 100, :nlris=> [
         
     | 
| 
      
 162 
     | 
    
         
            +
                  {:rd=> [100,100], :prefix=> '192.168.0.0/24', :label=>101},
         
     | 
| 
      
 163 
     | 
    
         
            +
                  {:rd=> [100,100], :prefix=> '192.168.1.0/24', :label=>102},
         
     | 
| 
      
 164 
     | 
    
         
            +
                  {:rd=> [100,100], :prefix=> '192.168.2.0/24', :label=>103},
         
     | 
| 
      
 165 
     | 
    
         
            +
                ])
         
     | 
| 
      
 166 
     | 
    
         
            +
                )
         
     | 
| 
      
 167 
     | 
    
         
            +
                assert_match(/ID=100, Label Stack=101/, path_attr.to_s)
         
     | 
| 
      
 168 
     | 
    
         
            +
                path_attr_new = Path_attribute.new(path_attr.encode(true), :as4byte=> true, :path_id=>true)
         
     | 
| 
      
 169 
     | 
    
         
            +
                assert_equal(path_attr.to_shex, path_attr_new.to_shex)
         
     | 
| 
      
 170 
     | 
    
         
            +
                
         
     | 
| 
      
 171 
     | 
    
         
            +
                # TODO: UT: a path attr with mp_reach w path_id and ! as4
         
     | 
| 
      
 172 
     | 
    
         
            +
                # TODO: UT: a path attr with mp_unreach w path_id
         
     | 
| 
      
 173 
     | 
    
         
            +
                # TODO: UT: a path attr with mp_reach w path_id and as4
         
     | 
| 
      
 174 
     | 
    
         
            +
                
         
     | 
| 
      
 175 
     | 
    
         
            +
              end
         
     | 
| 
      
 176 
     | 
    
         
            +
              
         
     | 
| 
      
 177 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version 
     | 
|
| 
       5 
5 
     | 
    
         
             
              segments: 
         
     | 
| 
       6 
6 
     | 
    
         
             
              - 0
         
     | 
| 
       7 
7 
     | 
    
         
             
              - 0
         
     | 
| 
       8 
     | 
    
         
            -
              -  
     | 
| 
       9 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 8 
     | 
    
         
            +
              - 12
         
     | 
| 
      
 9 
     | 
    
         
            +
              version: 0.0.12
         
     | 
| 
       10 
10 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       11 
11 
     | 
    
         
             
            authors: 
         
     | 
| 
       12 
12 
     | 
    
         
             
            - Jean-Michel Esnault
         
     | 
| 
         @@ -14,12 +14,12 @@ autorequire: 
     | 
|
| 
       14 
14 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       15 
15 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
            date: 2011- 
     | 
| 
      
 17 
     | 
    
         
            +
            date: 2011-02-13 00:00:00 -08:00
         
     | 
| 
       18 
18 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       19 
19 
     | 
    
         
             
            dependencies: []
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
            description: BGP4R is a BGP-4 ruby library to create,  send, and receive  BGP messages in an  object oriented manner
         
     | 
| 
       22 
     | 
    
         
            -
            email:  
     | 
| 
      
 22 
     | 
    
         
            +
            email: bgp4r@esnault.org
         
     | 
| 
       23 
23 
     | 
    
         
             
            executables: []
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
25 
     | 
    
         
             
            extensions: []
         
     | 
| 
         @@ -44,7 +44,8 @@ files: 
     | 
|
| 
       44 
44 
     | 
    
         
             
            - bgp/messages/route_refresh.rb
         
     | 
| 
       45 
45 
     | 
    
         
             
            - bgp/messages/update.rb
         
     | 
| 
       46 
46 
     | 
    
         
             
            - bgp/misc/live_feed.rb
         
     | 
| 
       47 
     | 
    
         
            -
            - bgp/neighbor.rb
         
     | 
| 
      
 47 
     | 
    
         
            +
            - bgp/neighbor/add_path_cap.rb
         
     | 
| 
      
 48 
     | 
    
         
            +
            - bgp/neighbor/neighbor.rb
         
     | 
| 
       48 
49 
     | 
    
         
             
            - bgp/nlris/inet.rb
         
     | 
| 
       49 
50 
     | 
    
         
             
            - bgp/nlris/label.rb
         
     | 
| 
       50 
51 
     | 
    
         
             
            - bgp/nlris/labeled.rb
         
     | 
| 
         @@ -53,6 +54,7 @@ files: 
     | 
|
| 
       53 
54 
     | 
    
         
             
            - bgp/nlris/prefix.rb
         
     | 
| 
       54 
55 
     | 
    
         
             
            - bgp/nlris/rd.rb
         
     | 
| 
       55 
56 
     | 
    
         
             
            - bgp/nlris/vpn.rb
         
     | 
| 
      
 57 
     | 
    
         
            +
            - bgp/optional_parameters/add_path.rb
         
     | 
| 
       56 
58 
     | 
    
         
             
            - bgp/optional_parameters/as4.rb
         
     | 
| 
       57 
59 
     | 
    
         
             
            - bgp/optional_parameters/capabilities.rb
         
     | 
| 
       58 
60 
     | 
    
         
             
            - bgp/optional_parameters/capability.rb
         
     | 
| 
         @@ -90,8 +92,13 @@ files: 
     | 
|
| 
       90 
92 
     | 
    
         
             
            - examples/unit-testing/malformed_update.rb
         
     | 
| 
       91 
93 
     | 
    
         
             
            - examples/unit-testing/no_export.rb
         
     | 
| 
       92 
94 
     | 
    
         
             
            - examples/unit-testing/prepend_aspath.rb
         
     | 
| 
      
 95 
     | 
    
         
            +
            - examples/unit-testing/test.rb
         
     | 
| 
      
 96 
     | 
    
         
            +
            - examples/unit-testing/test1.rb
         
     | 
| 
      
 97 
     | 
    
         
            +
            - examples/unit-testing/test2.rb
         
     | 
| 
       93 
98 
     | 
    
         
             
            - examples/unit-testing/unknown_transitive_attr.rb
         
     | 
| 
       94 
99 
     | 
    
         
             
            - test/common_test.rb
         
     | 
| 
      
 100 
     | 
    
         
            +
            - test/helpers/server.rb
         
     | 
| 
      
 101 
     | 
    
         
            +
            - test/iana_test.rb
         
     | 
| 
       95 
102 
     | 
    
         
             
            - test/messages/capability_test.rb
         
     | 
| 
       96 
103 
     | 
    
         
             
            - test/messages/keepalive_test.rb
         
     | 
| 
       97 
104 
     | 
    
         
             
            - test/messages/markers_test.rb
         
     | 
| 
         @@ -102,12 +109,14 @@ files: 
     | 
|
| 
       102 
109 
     | 
    
         
             
            - test/messages/update_test.rb
         
     | 
| 
       103 
110 
     | 
    
         
             
            - test/misc/live_feed_test.rb
         
     | 
| 
       104 
111 
     | 
    
         
             
            - test/misc/misc.rb
         
     | 
| 
       105 
     | 
    
         
            -
            - test/ 
     | 
| 
      
 112 
     | 
    
         
            +
            - test/neighbor/add_path_cap_test.rb
         
     | 
| 
      
 113 
     | 
    
         
            +
            - test/neighbor/neighbor_test.rb
         
     | 
| 
       106 
114 
     | 
    
         
             
            - test/nlris/ext_nlri_test.rb
         
     | 
| 
       107 
115 
     | 
    
         
             
            - test/nlris/inet_test.rb
         
     | 
| 
       108 
116 
     | 
    
         
             
            - test/nlris/labeled_test.rb
         
     | 
| 
       109 
117 
     | 
    
         
             
            - test/nlris/nlri_test.rb
         
     | 
| 
       110 
118 
     | 
    
         
             
            - test/nlris/rd_test.rb
         
     | 
| 
      
 119 
     | 
    
         
            +
            - test/optional_parameters/add_path_test.rb
         
     | 
| 
       111 
120 
     | 
    
         
             
            - test/optional_parameters/as4_test.rb
         
     | 
| 
       112 
121 
     | 
    
         
             
            - test/optional_parameters/capability_test.rb
         
     | 
| 
       113 
122 
     | 
    
         
             
            - test/optional_parameters/dynamic_test.rb
         
     | 
| 
         @@ -167,6 +176,8 @@ specification_version: 3 
     | 
|
| 
       167 
176 
     | 
    
         
             
            summary: A BGP-4 Ruby Library
         
     | 
| 
       168 
177 
     | 
    
         
             
            test_files: 
         
     | 
| 
       169 
178 
     | 
    
         
             
            - test/common_test.rb
         
     | 
| 
      
 179 
     | 
    
         
            +
            - test/helpers/server.rb
         
     | 
| 
      
 180 
     | 
    
         
            +
            - test/iana_test.rb
         
     | 
| 
       170 
181 
     | 
    
         
             
            - test/messages/capability_test.rb
         
     | 
| 
       171 
182 
     | 
    
         
             
            - test/messages/keepalive_test.rb
         
     | 
| 
       172 
183 
     | 
    
         
             
            - test/messages/markers_test.rb
         
     | 
| 
         @@ -177,12 +188,14 @@ test_files: 
     | 
|
| 
       177 
188 
     | 
    
         
             
            - test/messages/update_test.rb
         
     | 
| 
       178 
189 
     | 
    
         
             
            - test/misc/live_feed_test.rb
         
     | 
| 
       179 
190 
     | 
    
         
             
            - test/misc/misc.rb
         
     | 
| 
       180 
     | 
    
         
            -
            - test/ 
     | 
| 
      
 191 
     | 
    
         
            +
            - test/neighbor/add_path_cap_test.rb
         
     | 
| 
      
 192 
     | 
    
         
            +
            - test/neighbor/neighbor_test.rb
         
     | 
| 
       181 
193 
     | 
    
         
             
            - test/nlris/ext_nlri_test.rb
         
     | 
| 
       182 
194 
     | 
    
         
             
            - test/nlris/inet_test.rb
         
     | 
| 
       183 
195 
     | 
    
         
             
            - test/nlris/labeled_test.rb
         
     | 
| 
       184 
196 
     | 
    
         
             
            - test/nlris/nlri_test.rb
         
     | 
| 
       185 
197 
     | 
    
         
             
            - test/nlris/rd_test.rb
         
     | 
| 
      
 198 
     | 
    
         
            +
            - test/optional_parameters/add_path_test.rb
         
     | 
| 
       186 
199 
     | 
    
         
             
            - test/optional_parameters/as4_test.rb
         
     | 
| 
       187 
200 
     | 
    
         
             
            - test/optional_parameters/capability_test.rb
         
     | 
| 
       188 
201 
     | 
    
         
             
            - test/optional_parameters/dynamic_test.rb
         
     | 
    
        data/test/neighbor_test.rb
    DELETED
    
    | 
         @@ -1,62 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            #--
         
     | 
| 
       2 
     | 
    
         
            -
            # Copyright 2008, 2009 Jean-Michel Esnault.
         
     | 
| 
       3 
     | 
    
         
            -
            # All rights reserved.
         
     | 
| 
       4 
     | 
    
         
            -
            # See LICENSE.txt for permissions.
         
     | 
| 
       5 
     | 
    
         
            -
            #
         
     | 
| 
       6 
     | 
    
         
            -
            #
         
     | 
| 
       7 
     | 
    
         
            -
            # This file is part of BGP4R.
         
     | 
| 
       8 
     | 
    
         
            -
            # 
         
     | 
| 
       9 
     | 
    
         
            -
            # BGP4R is free software: you can redistribute it and/or modify
         
     | 
| 
       10 
     | 
    
         
            -
            # it under the terms of the GNU General Public License as published by
         
     | 
| 
       11 
     | 
    
         
            -
            # the Free Software Foundation, either version 3 of the License, or
         
     | 
| 
       12 
     | 
    
         
            -
            # (at your option) any later version.
         
     | 
| 
       13 
     | 
    
         
            -
            # 
         
     | 
| 
       14 
     | 
    
         
            -
            # BGP4R is distributed in the hope that it will be useful,
         
     | 
| 
       15 
     | 
    
         
            -
            # but WITHOUT ANY WARRANTY; without even the implied warranty of
         
     | 
| 
       16 
     | 
    
         
            -
            # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
         
     | 
| 
       17 
     | 
    
         
            -
            # GNU General Public License for more details.
         
     | 
| 
       18 
     | 
    
         
            -
            #
         
     | 
| 
       19 
     | 
    
         
            -
            # You should have received a copy of the GNU General Public License
         
     | 
| 
       20 
     | 
    
         
            -
            # along with BGP4R.  If not, see <http://www.gnu.org/licenses/>.
         
     | 
| 
       21 
     | 
    
         
            -
            #++
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
            require "test/unit"
         
     | 
| 
       24 
     | 
    
         
            -
            require 'bgp4r'
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
            class TestBgpNeighbor < Test::Unit::TestCase
         
     | 
| 
       27 
     | 
    
         
            -
              include BGP
         
     | 
| 
       28 
     | 
    
         
            -
              include BGP::OPT_PARM::CAP
         
     | 
| 
       29 
     | 
    
         
            -
              def test_open_msg
         
     | 
| 
       30 
     | 
    
         
            -
                neighbor = Neighbor.new \
         
     | 
| 
       31 
     | 
    
         
            -
                  :version=> 4, 
         
     | 
| 
       32 
     | 
    
         
            -
                  :my_as=> 100, 
         
     | 
| 
       33 
     | 
    
         
            -
                  :remote_addr => '192.168.1.200',
         
     | 
| 
       34 
     | 
    
         
            -
                  :local_addr => '192.168.1.5', 
         
     | 
| 
       35 
     | 
    
         
            -
                  :id=> '1.1.1.1', 
         
     | 
| 
       36 
     | 
    
         
            -
                  :holdtime=> 20
         
     | 
| 
       37 
     | 
    
         
            -
                neighbor.capability Mbgp.ipv4_unicast
         
     | 
| 
       38 
     | 
    
         
            -
                neighbor.capability Mbgp.ipv4_multicast
         
     | 
| 
       39 
     | 
    
         
            -
                neighbor.capability Route_refresh.new
         
     | 
| 
       40 
     | 
    
         
            -
                neighbor.capability Route_refresh.new 128
         
     | 
| 
       41 
     | 
    
         
            -
                neighbor.capability As4.new(100)
         
     | 
| 
       42 
     | 
    
         
            -
                open_msg = neighbor.open
         
     | 
| 
       43 
     | 
    
         
            -
                assert_equal(5,open_msg.opt_parms.size)
         
     | 
| 
       44 
     | 
    
         
            -
                assert_equal(4,open_msg.version)
         
     | 
| 
       45 
     | 
    
         
            -
                assert_equal(20,open_msg.holdtime)
         
     | 
| 
       46 
     | 
    
         
            -
                assert_equal(100,open_msg.local_as)
         
     | 
| 
       47 
     | 
    
         
            -
                # puts neighbor
         
     | 
| 
       48 
     | 
    
         
            -
              end
         
     | 
| 
       49 
     | 
    
         
            -
              def test_states
         
     | 
| 
       50 
     | 
    
         
            -
                neighbor = Neighbor.new \
         
     | 
| 
       51 
     | 
    
         
            -
                  :version=> 4, 
         
     | 
| 
       52 
     | 
    
         
            -
                  :my_as=> 100, 
         
     | 
| 
       53 
     | 
    
         
            -
                  :remote_addr => '192.168.1.200', 
         
     | 
| 
       54 
     | 
    
         
            -
                  :local_addr => '192.168.1.5', 
         
     | 
| 
       55 
     | 
    
         
            -
                  :id=> '1.1.1.1', 
         
     | 
| 
       56 
     | 
    
         
            -
                  :holdtime=> 20
         
     | 
| 
       57 
     | 
    
         
            -
                  assert neighbor.is_idle?
         
     | 
| 
       58 
     | 
    
         
            -
                  assert ! neighbor.is_established?
         
     | 
| 
       59 
     | 
    
         
            -
                  assert ! neighbor.is_openrecv?
         
     | 
| 
       60 
     | 
    
         
            -
                  assert ! neighbor.is_openconfirm?  
         
     | 
| 
       61 
     | 
    
         
            -
              end
         
     | 
| 
       62 
     | 
    
         
            -
            end
         
     |