module MQTT::Homie::Network
Public Instance Methods
default_interface()
click to toggle source
# File lib/mqtt/homie/network.rb, line 15 def default_interface @default_interface ||= interfaces.values.find { |i| i[:default] } end
default_localip()
click to toggle source
# File lib/mqtt/homie/network.rb, line 6 def default_localip addr = default_interface[:addresses][0] if default_interface addr ? addr.ip_address : nil end
default_mac()
click to toggle source
# File lib/mqtt/homie/network.rb, line 11 def default_mac (default_interface ? default_interface[:hwaddr] : nil) || Mac.addr end
interfaces()
click to toggle source
# File lib/mqtt/homie/network.rb, line 19 def interfaces @interfaces ||= begin interfaces = {} found = false Socket.getifaddrs.each do |ifaddr| ifname = ifaddr.name data = interfaces[ifname] ||= { addresses: [] } next unless addr = ifaddr.addr data[:addresses].push addr if (addr.ipv4? || addr.ipv6?) && usable_address?(addr) data[:hwaddr] = $1 if addr.inspect.match(/hwaddr=([0-9a-fA-F:]+)/) # doesn't work on windows data[:default] = true unless found data[:name] = ifname found = true end interfaces end end
usable_address?(addr)
click to toggle source
# File lib/mqtt/homie/network.rb, line 37 def usable_address?(addr) !(addr.ipv4_loopback? || addr.ipv6_loopback? || addr.ipv4_multicast? || addr.ipv6_linklocal?) end