Module: Linux::Ip::Route
- Defined in:
- lib/linux/ip/route.rb
Defined Under Namespace
Classes: IpRoute
Class Method Summary collapse
- .parse ⇒ Object
-
.parse_from_lines(lines) ⇒ Object
23: br202: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether d0:27:88:d1:01:6d brd ff:ff:ff:ff:ff:ff inet 10.10.103.11/22 brd 10.10.103.255 scope global br202 valid_lft forever preferred_lft forever inet6 fe80::84c6:95ff:feb7:d76d/64 scope link valid_lft forever preferred_lft forever.
Class Method Details
.parse ⇒ Object
121 122 123 |
# File 'lib/linux/ip/route.rb', line 121 def self.parse parse_from_lines(IO.popen("ip -4 route show").read.lines.to_a + IO.popen("ip -6 route show").read.lines.to_a) end |
.parse_from_lines(lines) ⇒ Object
23: br202: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether d0:27:88:d1:01:6d brd ff:ff:ff:ff:ff:ff
inet 10.10.103.11/22 brd 10.10.103.255 scope global br202
valid_lft forever preferred_lft forever
inet6 fe80::84c6:95ff:feb7:d76d/64 scope link
valid_lft forever preferred_lft forever
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/linux/ip/route.rb', line 88 def self.parse_from_lines(lines) ip_route = IpRoute.new iface = nil lines.each do |line| line = line.strip.chomp dev_m = /^([0-9a-fA-F\.\:\/]+)\s+dev\s+([a-z0-9\.]+)\s*(.*)$/.match(line) if dev_m #puts "Dev #{dev_m[2]} -> #{dev_m.inspect}" ip_route.add_dev(dev_m[2], dev_m[1], dev_m[3]) else via_m = /^([0-9a-fA-F\.\:\/]+|default)\s+via\s+([a-z0-9\.\:]+)\s+dev\s+([a-z0-9\.]+)\s*(.*)$/.match(line) if via_m #puts "Via #{via_m[3]} -> #{via_m.inspect}" ip_route.add_via(via_m[3], via_m[1], via_m[2], via_m[4]) else direct_m = /^(blackhole)\s+([0-9a-fA-F\.\:\/]+)$/.match(line) if direct_m ip_route.add_via(direct_m[1], direct_m[2], nil, "") else # unreachable 2a04:2f80::/29 dev lo metric 1024 error -101 unreachable_m = /^(unreachable)\s+([0-9a-fA-F\.\:\/]+)\s+dev\s+([a-z0-9\.]+)\s+(.*)$/.match(line) if unreachable_m ip_route.add_dev(unreachable_m[3], unreachable_m[2], unreachable_m[1]+" "+unreachable_m[4]) else puts "> #{line}" end end end end end ip_route end |