class AdjacentNicTool
Determine closest NICs to target addresses and provide a default NIC
Constants
- AWS_INSTANCE_METADATA_ADDRESS
As good as any address for adjacent NIC address test
Public Class Methods
adjacent_local(addr)
click to toggle source
Find closest NIC address to target if we have multiple NICs (reliable local NIC determination) Note: UDP Sockets do NOT send anything on connect
but DO work out what source address will be used so the port number is irrelevant to this mechanism.
# File lib/facter/ipaddress_primary.rb, line 32 def self.adjacent_local(addr) dummy_sock = UDPSocket.new dummy_sock.connect(addr, 1) _fam, _port, _name, addr = dummy_sock.addr addr end
default_nic()
click to toggle source
# File lib/facter/ipaddress_primary.rb, line 22 def self.default_nic nic_translation[default_nic_address] end
default_nic_address()
click to toggle source
The main NIC determined adjacent to the meta address
# File lib/facter/ipaddress_primary.rb, line 10 def self.default_nic_address adjacent_local(AWS_INSTANCE_METADATA_ADDRESS) end
nic_translation()
click to toggle source
# File lib/facter/ipaddress_primary.rb, line 14 def self.nic_translation nictable = Socket.getifaddrs.map do |nic| next unless nic.addr.ipv4? [nic.addr.ip_address, nic.name] end Hash[nictable.compact] end