Merge pull request #372 from ghostplant/add_udp
add UDP4 mapping for iptables
This commit is contained in:
commit
1fbb401862
|
@ -430,6 +430,10 @@ class portcontrol(object):
|
||||||
ports_lock.release()
|
ports_lock.release()
|
||||||
try:
|
try:
|
||||||
subprocess.run(['iptables','-t','nat','-A','PREROUTING','-p','tcp','--dport',str(free_port),"-j","DNAT",'--to-destination','%s:%s'%(container_ip,container_port)], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=False, check=True)
|
subprocess.run(['iptables','-t','nat','-A','PREROUTING','-p','tcp','--dport',str(free_port),"-j","DNAT",'--to-destination','%s:%s'%(container_ip,container_port)], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=False, check=True)
|
||||||
|
except subprocess.CalledProcessError as suberror:
|
||||||
|
return [False, "set port mapping failed : %s" % suberror.stdout.decode('utf-8')]
|
||||||
|
try:
|
||||||
|
subprocess.run(['iptables','-t','nat','-A','PREROUTING','-p','udp','--dport',str(free_port),"-j","DNAT",'--to-destination','%s:%s'%(container_ip,container_port)], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=False, check=True)
|
||||||
return [True, str(free_port)]
|
return [True, str(free_port)]
|
||||||
except subprocess.CalledProcessError as suberror:
|
except subprocess.CalledProcessError as suberror:
|
||||||
return [False, "set port mapping failed : %s" % suberror.stdout.decode('utf-8')]
|
return [False, "set port mapping failed : %s" % suberror.stdout.decode('utf-8')]
|
||||||
|
@ -447,6 +451,10 @@ class portcontrol(object):
|
||||||
subprocess.run(['iptables','-t','nat','-D','PREROUTING','-p','tcp','--dport',str(free_port),"-j","DNAT",'--to-destination','%s:%s'%(container_ip,container_port)], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=False, check=True)
|
subprocess.run(['iptables','-t','nat','-D','PREROUTING','-p','tcp','--dport',str(free_port),"-j","DNAT",'--to-destination','%s:%s'%(container_ip,container_port)], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=False, check=True)
|
||||||
except subprocess.CalledProcessError as suberror:
|
except subprocess.CalledProcessError as suberror:
|
||||||
return [False, "release port mapping failed : %s" % suberror.stdout.decode('utf-8')]
|
return [False, "release port mapping failed : %s" % suberror.stdout.decode('utf-8')]
|
||||||
|
try:
|
||||||
|
subprocess.run(['iptables','-t','nat','-D','PREROUTING','-p','udp','--dport',str(free_port),"-j","DNAT",'--to-destination','%s:%s'%(container_ip,container_port)], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=False, check=True)
|
||||||
|
except subprocess.CalledProcessError as suberror:
|
||||||
|
return [False, "release port mapping failed : %s" % suberror.stdout.decode('utf-8')]
|
||||||
ports_lock.acquire()
|
ports_lock.acquire()
|
||||||
free_ports[free_port] = True
|
free_ports[free_port] = True
|
||||||
allocated_ports[container_name].pop(container_port)
|
allocated_ports[container_name].pop(container_port)
|
||||||
|
|
Loading…
Reference in New Issue