summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSoren Hansen <soren.hansen@rackspace.com>2010-09-28 00:21:36 +0200
committerSoren Hansen <soren.hansen@rackspace.com>2010-09-28 00:21:36 +0200
commit574aa4bb03c6e79c204d73a8f2a146460cbdb848 (patch)
treeb3c32164c5cacf6c3b35707c38cab3c12bf93e6d
parent9140cd991e5507f65ff1d6a608bd8fd4c9956dbf (diff)
downloadnova-574aa4bb03c6e79c204d73a8f2a146460cbdb848.tar.gz
nova-574aa4bb03c6e79c204d73a8f2a146460cbdb848.tar.xz
nova-574aa4bb03c6e79c204d73a8f2a146460cbdb848.zip
This is getting ridiculous.
-rw-r--r--nova/virt/libvirt_conn.py50
1 files changed, 40 insertions, 10 deletions
diff --git a/nova/virt/libvirt_conn.py b/nova/virt/libvirt_conn.py
index d90853084..854fa6761 100644
--- a/nova/virt/libvirt_conn.py
+++ b/nova/virt/libvirt_conn.py
@@ -503,20 +503,49 @@ class NWFilterFirewall(object):
<filterref filter='no-ip-spoofing'/>
<filterref filter='no-arp-spoofing'/>
<filterref filter='allow-dhcp-server'/>
+ <filterref filter='nova-allow-dhcp-server'/>
<filterref filter='nova-base-ipv4'/>
<filterref filter='nova-base-ipv6'/>
</filter>'''
- nova_base_ipv4_filter = '''<filter name='nova-base-ipv4' chain='ipv4'>
- <rule action='drop' direction='in'
- priority='400' />
- </filter>'''
-
-
- nova_base_ipv6_filter = '''<filter name='nova-base-ipv6' chain='ipv6'>
- <rule action='drop' direction='in'
- priority='400' />
- </filter>'''
+ nova_dhcp_filter = '''<filter name='nova-allow-dhcp-server' chain='ipv4'>
+ <uuid>891e4787-e5c0-d59b-cbd6-41bc3c6b36fc</uuid>
+ <rule action='accept' direction='out'
+ priority='100'>
+ <udp srcipaddr='0.0.0.0'
+ dstipaddr='255.255.255.255'
+ srcportstart='68'
+ dstportstart='67'/>
+ </rule>
+ <rule action='accept' direction='in' priority='100'>
+ <udp srcipaddr='$DHCPSERVER'
+ srcportstart='67'
+ dstportstart='68'/>
+ </rule>
+ </filter>'''
+
+ def nova_base_ipv4_filter(self):
+ retval = "<filter name='nova-base-ipv4' chain='ipv4'>"
+ for protocol in ['tcp', 'udp', 'icmp']:
+ for direction,action in [('out','accept'),
+ ('in','drop')]:
+ retval += """<rule action='%s' direction='%s' priority='400'>
+ <%s />
+ </rule>""" % (action, direction, protocol)
+ retval += '</filter>'
+ return retval
+
+
+ def nova_base_ipv6_filter(self):
+ retval = "<filter name='nova-base-ipv6' chain='ipv6'>"
+ for protocol in ['tcp', 'udp', 'icmp']:
+ for direction,action in [('out','accept'),
+ ('in','drop')]:
+ retval += """<rule action='%s' direction='%s' priority='400'>
+ <%s-ipv6 />
+ </rule>""" % (action, direction, protocol)
+ retval += '</filter>'
+ return retval
def _define_filter(self, xml):
@@ -536,6 +565,7 @@ class NWFilterFirewall(object):
yield self._define_filter(self.nova_base_ipv4_filter)
yield self._define_filter(self.nova_base_ipv6_filter)
+ yield self._define_filter(self.nova_dhcp_filter)
yield self._define_filter(self.nova_base_filter)
nwfilter_xml = ("<filter name='nova-instance-%s' chain='root'>\n" +