Repository URL to install this package:
Version:
4.0.109 ▾
|
ó ±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&