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&