initial changes for forwarding port modifications

This commit is contained in:
crypt1d 2014-10-10 13:01:04 +02:00
parent 31c77bed37
commit ca1456ff82
3 changed files with 13 additions and 11 deletions

View File

@ -92,6 +92,7 @@ module Vagrant
with_forwarded_ports(env) do |options| with_forwarded_ports(env) do |options|
guest_port = options[:guest] guest_port = options[:guest]
host_port = options[:host] host_port = options[:host]
host_ip = options[:host_ip]
if options[:protocol] && options[:protocol] != "tcp" if options[:protocol] && options[:protocol] != "tcp"
@logger.debug("Skipping #{host_port} because UDP protocol.") @logger.debug("Skipping #{host_port} because UDP protocol.")
@ -105,8 +106,8 @@ module Vagrant
end end
# If the port is open (listening for TCP connections) # If the port is open (listening for TCP connections)
in_use = extra_in_use.include?(host_port) || in_use = extra_in_use.include?([host_ip,host_port]) ||
port_checker[host_port] || port_checker[host_ip,host_port] ||
lease_check(host_port) lease_check(host_port)
if in_use if in_use
if !repair || !options[:auto_correct] if !repair || !options[:auto_correct]
@ -205,8 +206,8 @@ module Vagrant
end end
end end
def port_check(port) def port_check(host="127.0.0.1",port)
is_port_open?("127.0.0.1", port) is_port_open?(host, port)
end end
def with_forwarded_ports(env) def with_forwarded_ports(env)

View File

@ -14,7 +14,7 @@ module VagrantPlugins
# Build the remap for any existing collision detections # Build the remap for any existing collision detections
remap = {} remap = {}
env[:port_collision_remap] = remap env[:port_collision_remap] = remap
env[:machine].provider.driver.read_forwarded_ports.each do |_nic, name, hostport, _guestport| env[:machine].provider.driver.read_forwarded_ports.each do |_nic, name, hostaddr, hostport, _guestport|
env[:machine].config.vm.networks.each do |type, options| env[:machine].config.vm.networks.each do |type, options|
next if type != :forwarded_port next if type != :forwarded_port

View File

@ -18,7 +18,7 @@ module VagrantPlugins
def clear_forwarded_ports def clear_forwarded_ports
args = [] args = []
read_forwarded_ports(@uuid).each do |nic, name, _, _| read_forwarded_ports(@uuid).each do |nic, name, _, _, _|
args.concat(["--natpf#{nic}", "delete", name]) args.concat(["--natpf#{nic}", "delete", name])
end end
@ -261,8 +261,9 @@ module VagrantPlugins
end end
# Parse out the forwarded port information # Parse out the forwarded port information
if line =~ /^Forwarding.+?="(.+?),.+?,.*?,(.+?),.*?,(.+?)"$/ if line =~ /^Forwarding.+?="(.+?),.*?,.(.+?),(.+?),.*?,(.+?)"$/
result = [current_nic, $1.to_s, $2.to_i, $3.to_i] result = [current_nic, $1.to_s, $2.to_s, $3.to_i, $4.to_i]
#[["nat", "ssh", "127.0.0.1", 2222, 22]]
@logger.debug(" - #{result.inspect}") @logger.debug(" - #{result.inspect}")
results << result results << result
end end
@ -449,8 +450,8 @@ module VagrantPlugins
# Ignore our own used ports # Ignore our own used ports
next if uuid == @uuid next if uuid == @uuid
read_forwarded_ports(uuid, true).each do |_, _, hostport, _| read_forwarded_ports(uuid, true).each do |_, _, hostaddr, hostport, _|
ports << hostport ports << [hostaddr, hostport]
end end
end end
end end
@ -497,7 +498,7 @@ module VagrantPlugins
@logger.debug("Searching for SSH port: #{expected_port.inspect}") @logger.debug("Searching for SSH port: #{expected_port.inspect}")
# Look for the forwarded port only by comparing the guest port # Look for the forwarded port only by comparing the guest port
read_forwarded_ports.each do |_, _, hostport, guestport| read_forwarded_ports.each do |_, _, _, hostport, guestport|
return hostport if guestport == expected_port return hostport if guestport == expected_port
end end