Repository URL to install this package:
| 
      
        
        
        Version: 
        
         
          
          3.4.52  ▾
        
         | 
ó
±EYc           @   s  d  d l  Z  d  d l m Z d  d l m Z d  d l m Z d  d l m	 Z	 d  d l m
 Z
 d  d l m Z d  d l
 Z d  d l m Z d  d	 l m Z d  d l j j Z d  d
 l m Z e j e  Z e j j Z e a d e j f d     YZ  d
 e j! f d     YZ! d S(   iÿÿÿÿN(   t   greenthread(   t   etree(   t   log(   t   excutils(   t   importutils(   t   pipelib(   t   _LI(   t   _LW(   t   netutilst   NWFilterFirewallc           B   s³   e  Z d  Z d   Z d   Z d   Z e e  Z d   Z d   Z	 d   Z
 d   Z d   Z d	   Z
 d
   Z d   Z d   Z d
   Z d   Z e d d   Z d   Z RS(   s  This class implements a network filtering mechanism by using
    libvirt's nwfilter.
    all instances get a filter ("nova-base") applied. This filter
    provides some basic security such as protection against MAC
    spoofing, IP spoofing, and ARP spoofing.
    c         K   sh   t  d k rI y t j d  a  WqI t k
 rE t j t d   qI Xn  | |  _ t	 |  _
 t	 |  _ d S(   s   Create an NWFilter firewall driver
        :param host: nova.virt.libvirt.host.Host instance
        :param kwargs: currently unused
        t   libvirtsM   Libvirt module could not be loaded. NWFilterFirewall will not work correctly.N(   R
   t   NoneR   t
   import_modulet   ImportErrort   LOGt   warningR   t   _hostt   Falset   static_filters_configuredt   handle_security_groups(   t   selft   hostt   kwargs(    (    sO   /home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/firewall.pyt   __init__/   s    
		c         C   s   d S(   s5   No-op. Everything is done in prepare_instance_filter.N(    (   R   t   instancet   network_info(    (    sO   /home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/firewall.pyt   apply_instance_filterA   s    c         C   s
   |  j  j   S(   N(   R   t   get_connection(   R   (    (    sO   /home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/firewall.pyt   _get_connectionE   s    c         C   s   |  j  d  } d | S(   s_   This filter protects false positives on IPv6 Duplicate Address
        Detection(DAD).
        s   nova-no-nd-reflectionsã  <filter name='nova-no-nd-reflection' chain='ipv6'>
                  <!-- no nd reflection -->
                  <!-- drop if destination mac is v6 mcast mac addr and
                       we sent it. -->
                  <uuid>%s</uuid>
                  <rule action='drop' direction='in'>
                      <mac dstmacaddr='33:33:00:00:00:00'
                           dstmacmask='ff:ff:00:00:00:00' srcmacaddr='$MAC'/>
                  </rule>
                  </filter>(   t   _get_filter_uuid(   R   t   uuid(    (    sO   /home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/firewall.pyt   nova_no_nd_reflection_filterI   s    
c         C   s   |  j  d  } d | S(   sÆ   The standard allow-dhcp-server filter is an <ip> one, so it uses
           ebtables to allow traffic through. Without a corresponding rule in
           iptables, it'll get blocked anyway.
        s   nova-allow-dhcp-serversà <filter name='nova-allow-dhcp-server' chain='ipv4'>
                    <uuid>%s</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>(   R   (   R   R   (    (    sO   /home/tvault/.virtenv/lib/python2.7/site-packages/nova/virt/libvirt/firewall.pyt   nova_dhcp_filterY   s    c         C   sÖ   t  j t d  d | |  j r&