# Neutron firewall plugin
# ---------------------------

# Save trace setting
FW_XTRACE=$(set +o | grep xtrace)
set +o xtrace

FWAAS_PLUGIN=neutron.services.firewall.fwaas_plugin.FirewallPlugin

function neutron_fwaas_configure_common {
    _neutron_service_plugin_class_add $FWAAS_PLUGIN
}

function neutron_fwaas_configure_driver {
    FWAAS_DRIVER_CONF_FILENAME=/etc/neutron/fwaas_driver.ini
    cp $NEUTRON_DIR/etc/fwaas_driver.ini $FWAAS_DRIVER_CONF_FILENAME

    iniset_multiline $FWAAS_DRIVER_CONF_FILENAME fwaas enabled True
    iniset_multiline $FWAAS_DRIVER_CONF_FILENAME fwaas driver "neutron.services.firewall.drivers.linux.iptables_fwaas.IptablesFwaasDriver"
}

function neutron_fwaas_stop {
    :
}

# Restore xtrace
$FW_XTRACE
