[PATCH] virt: Add more flexible way to specify comm ports host -> guest

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When running the virt guest windows tests using the (now default)
autotest private bridge, noticed that some ports needed for host
and guest communication weren't specified. So, add a config file
knob to allow people to specify additional ports to be added to
the default firewall configuration. The config tracks some important
ports used on tests, such as the remote shell ports and remote
shell file transfer ports.

Signed-off-by: Lucas Meneghel Rodrigues <lmr@xxxxxxxxxx>
---
 client/tests/kvm/tests_base.cfg.sample |    3 ++
 client/virt/virt_test_setup.py         |   47 +++++++++++++++++++++----------
 2 files changed, 35 insertions(+), 15 deletions(-)

diff --git a/client/tests/kvm/tests_base.cfg.sample b/client/tests/kvm/tests_base.cfg.sample
index 5313da1..1a86265 100644
--- a/client/tests/kvm/tests_base.cfg.sample
+++ b/client/tests/kvm/tests_base.cfg.sample
@@ -64,6 +64,9 @@ bridge = private
 # be a specific bridge
 # name, such as 'virbr0'
 #bridge = virbr0
+# If you need more ports to be available for comm between host and guest,
+# please add them here
+priv_bridge_ports = 53 67
 run_tcpdump = yes
 
 # Misc
diff --git a/client/virt/virt_test_setup.py b/client/virt/virt_test_setup.py
index 6e2d477..1539cac 100644
--- a/client/virt/virt_test_setup.py
+++ b/client/virt/virt_test_setup.py
@@ -308,21 +308,38 @@ class PrivateBridgeConfig(object):
             self.subnet = params.get("priv_subnet", '192.168.58')
             self.ip_version = params.get("bridge_ip_version", "ipv4")
             self.dhcp_server_pid = None
-            self.iptables_rules = [
-            "INPUT 1 -i %s -p udp -m udp --dport 53 -j ACCEPT" % self.brname,
-            "INPUT 2 -i %s -p tcp -m tcp --dport 53 -j ACCEPT" % self.brname,
-            "INPUT 3 -i %s -p udp -m udp --dport 67 -j ACCEPT" % self.brname,
-            "INPUT 4 -i %s -p tcp -m tcp --dport 67 -j ACCEPT" % self.brname,
-            "INPUT 5 -i %s -p tcp -m tcp --dport 12323 -j ACCEPT" % self.brname,
-            "FORWARD 1 -m physdev --physdev-is-bridged -j ACCEPT",
-            "FORWARD 2 -d %s.0/24 -o %s -m state --state RELATED,ESTABLISHED "
-            "-j ACCEPT" % (self.subnet, self.brname),
-            "FORWARD 3 -s %s.0/24 -i %s -j ACCEPT" % (self.subnet, self.brname),
-            "FORWARD 4 -i %s -o %s -j ACCEPT" % (self.brname, self.brname),
-            ("FORWARD 5 -o %s -j REJECT --reject-with icmp-port-unreachable" %
-             self.brname),
-            ("FORWARD 6 -i %s -j REJECT --reject-with icmp-port-unreachable" %
-             self.brname)]
+            ports = params.get("priv_bridge_ports", '53 67').split()
+            s_port = params.get("guest_port_remote_shell", "10022")
+            if s_port not in ports:
+                ports.append(s_port)
+            ft_port = params.get("guest_port_file_transfer", "10023")
+            if ft_port not in ports:
+                ports.append(ft_port)
+            u_port = params.get("guest_port_unattended_install", "13323")
+            if u_port not in ports:
+                ports.append(u_port)
+            self.iptables_rules = self._assemble_iptables_rules(ports)
+
+
+    def _assemble_iptables_rules(self, port_list):
+        rules = []
+        index = 0
+        for port in port_list:
+            index += 1
+            rules.append("INPUT %s -i %s -p tcp -m tcp --dport %s -j ACCEPT" %
+                         (index, self.brname, port))
+            index += 1
+            rules.append("INPUT %s -i %s -p udp -m udp --dport %s -j ACCEPT" %
+                         (index, self.brname, port))
+        rules.append("FORWARD 1 -m physdev --physdev-is-bridged -j ACCEPT")
+        rules.append("FORWARD 2 -d %s.0/24 -o %s -m state "
+                     "--state RELATED,ESTABLISHED -j ACCEPT" %
+                     (self.subnet, self.brname))
+        rules.append("FORWARD 3 -s %s.0/24 -i %s -j ACCEPT" %
+                     (self.subnet, self.brname))
+        rules.append("FORWARD 4 -i %s -o %s -j ACCEPT" %
+                     (self.brname, self.brname))
+        return rules
 
 
     def _add_bridge(self):
-- 
1.7.5.4

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux