# ml2_conf.ini
[ml2]
{% if enable_ironic | bool %}
tenant_network_types = vxlan, flat
mechanism_drivers = openvswitch
{% else %}
# Changing type_drivers after bootstrap can lead to database inconsistencies
type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
{% endif %}

{% if neutron_plugin_agent == "openvswitch" %}
mechanism_drivers = openvswitch,l2population
{% elif neutron_plugin_agent == "linuxbridge" %}
mechanism_drivers = linuxbridge,l2population
{% endif %}

{% if enable_neutron_qos | bool %}
extension_drivers = qos
{% endif %}

[ml2_type_vlan]
{% if enable_ironic | bool %}
network_vlan_ranges = physnet1
{% else %}
network_vlan_ranges =
{% endif %}

[ml2_type_flat]
{% if enable_ironic | bool %}
flat_networks = *
{% else %}
flat_networks = physnet1
{% endif %}

[ml2_type_vxlan]
vni_ranges = 1:1000
vxlan_group = 239.1.1.1

[securitygroup]
{% if neutron_plugin_agent == "openvswitch" %}
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
{% elif neutron_plugin_agent == "linuxbridge" %}
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
{% endif %}

{% if neutron_plugin_agent == "openvswitch" %}
[agent]
tunnel_types = vxlan
l2_population = true
arp_responder = true

{% if enable_neutron_dvr | bool %}
enable_distributed_routing = True
{% endif %}

[ovs]
bridge_mappings = physnet1:{{ neutron_bridge_name }}
ovsdb_connection = tcp:{{ api_interface_address }}:6640
{% if enable_nova_fake | bool %}
integration_bridge = br-int-{{ item }}
{% endif %}
{% elif neutron_plugin_agent == "linuxbridge" %}
[linux_bridge]
physical_interface_mappings = physnet1:{{ neutron_external_interface }}


[vxlan]
l2_population = true
{% endif %}
local_ip = {{ api_interface_address }}
