Class: Construqt::Bgps::Filter
- Inherits:
-
Object
- Object
- Construqt::Bgps::Filter
- Defined in:
- lib/construqt/bgps.rb
Instance Method Summary collapse
- #accept(cfg) ⇒ Object
- #addr_v_(cfg) ⇒ Object
-
#initialize(name) ⇒ Filter
constructor
A new instance of Filter.
- #list ⇒ Object
- #name ⇒ Object
- #reject(cfg) ⇒ Object
Constructor Details
#initialize(name) ⇒ Filter
Returns a new instance of Filter.
77 78 79 80 |
# File 'lib/construqt/bgps.rb', line 77 def initialize(name) @name = name @list = [] end |
Instance Method Details
#accept(cfg) ⇒ Object
114 115 116 117 118 119 |
# File 'lib/construqt/bgps.rb', line 114 def accept(cfg) cfg = {}.merge(cfg) cfg['rule'] = 'accept' addr_v_(cfg) @list << cfg if cfg['network'] end |
#addr_v_(cfg) ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/construqt/bgps.rb', line 90 def addr_v_(cfg) [OpenStruct.new({:code=>4, :is? => lambda {|i| i.ipv4? }, :max_prefix=>32}), OpenStruct.new({:code=>6, :is? => lambda {|i| i.ipv6? }, :max_prefix=>128})].each do |family| addr = cfg["addr_v#{family.code}"] next unless addr cfg.delete("addr_v#{family.code}") addr_sub_prefix = cfg['addr_sub_prefix'] cfg.delete('addr_sub_prefix') #puts addr.inspect (addr.kind_of?(Construqt::Addresses::Address) ? [addr] : addr).each do |addr| addr.ips.each do |net| next unless family.is?.call(net) network = Construqt::Addresses::Address.new network.add_ip(net.to_string) cfg = { 'network' => network }.merge(cfg) cfg['prefix_length'] = [net.prefix,family.max_prefix] if addr_sub_prefix @list << cfg end end nil end end |
#list ⇒ Object
82 83 84 |
# File 'lib/construqt/bgps.rb', line 82 def list @list end |
#name ⇒ Object
86 87 88 |
# File 'lib/construqt/bgps.rb', line 86 def name @name end |
#reject(cfg) ⇒ Object
121 122 123 124 125 126 |
# File 'lib/construqt/bgps.rb', line 121 def reject(cfg) cfg = {}.merge(cfg) cfg['rule'] = 'reject' addr_v_(cfg) @list << cfg if cfg['network'] end |