Class: Aio::Module::Cmd::H3C::DisplayIpRouting

Inherits:
Aio::Module::Cmd::H3C show all
Includes:
Aio::Module
Defined in:
lib/modules/cmd/h3c/display_ip_routing.rb

Instance Attribute Summary

Attributes inherited from Aio::Module::Cmd

#cmd_info, #context, #device_info, #ext_info, #useful, #warning_klass

Instance Method Summary collapse

Methods inherited from Aio::Module::Cmd

#author, #benchmark, #clear_useful, #cmd_full, #cmd_short, #description, #division, #key_stand, #license, #platform, #ranking, #set_defaults, #type

Methods included from Ui::Verbose

#clear_line, #print_error, #print_good, #progress_bar

Constructor Details

#initializeDisplayIpRouting

Returns a new instance of DisplayIpRouting.



8
9
10
11
12
13
14
15
16
17
18
# File 'lib/modules/cmd/h3c/display_ip_routing.rb', line 8

def initialize
  super({
    :cmd_full   => "display ip routing-table",
    :cmd_short  => "dis ip rout",
    :author     => "Elin",
    :ranking    => Ranking_2,
    :description  => "This is H3C Command# display ip routing-table",
    :platform   => "all",
    :benchmark  => {}
  })
end

Instance Method Details

#parseObject



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/modules/cmd/h3c/display_ip_routing.rb', line 20

def parse
  cont = self.context.dup
  routing = {}
  useful[:routing] = routing
  
  cont.readline_match_block(/Destinations : (?<destinations>\d+) Routes : (?<routes>\d+)/) do |block|
    block.update(routing, :destinations)
    block.update(routing, :routes)
  end
  cont.readline_match_block(//)
  cont.readline_match_block(/Destination\/Mask Proto Pre Cost NextHop Interface/)
  cont.readline_match_block(//)
  loop do 
    cont.readline_range_if(/^\d+/, /^\s+/) do |cont_layer|
      parse_routing(cont_layer)
    end
  end
end

#parse_routing(context) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/modules/cmd/h3c/display_ip_routing.rb', line 39

def parse_routing(context)
  router = nil
  context.readline_match_block(/(?<dest>[^\s]*) (?<proto>[^\s]*) (?<pre>\d+) (?<cost>\d+) (?<next_hop>.*) (?<iface>.*)/) do |block|
    route = {}
    router = block[:dest]
    useful[:routing][router] = {}
    useful[:routing][router][:first] = route
    block.update(useful[:routing][router], :dest)
    block.update(route, :proto) 
    block.update(route, :pre)
    block.update(route, :cost)
    block.update(route, :next_hop)
    block.update(route, :iface)
  end

  if context.size == 2
    context.readline_match_block(/ (?<proto>.*) (?<pre>\d+) (?<cost>\d+) (?<next_hop>.*) (?<iface>.*)/) do |block|
      route = {}
      router = block[:dest]
      useful[:routing][router][:secend] = route
      block.update(route, :proto)
      block.update(route, :pre)
      block.update(route, :cost)
      block.update(route, :next_hop)
      block.update(route, :iface)
    end
  end
end