# NOTE(yoctozepto): ironic-dnsmasq is used to deliver DHCP(v6) service
# DNS service is disabled:
port=0

interface={{ ironic_dnsmasq_interface }}
bind-interfaces

{% for item in ironic_dnsmasq_dhcp_ranges %}
{% set tag = item.tag | default('range_' ~ loop.index) %}
{% set lease_time = item.lease_time | default(ironic_dnsmasq_dhcp_default_lease_time) %}
dhcp-range=set:{{ tag }},{{ item.range }},{{ lease_time }}
{% if item.routers is defined %}dhcp-option=tag:{{ tag }},option:router,{{ item.routers }}{% endif %}
{% if item.ntp_server is defined %}dhcp-option=tag:{{ tag }},option:ntp-server,{{ item.ntp_server }}{% endif %}
{% endfor %}

{% if api_address_family == 'ipv6' %}
{# TODO(yoctozepto): IPv6-only support - DHCPv6 PXE support #}
{# different options must be used here #}
{% else %}{# ipv4 #}
dhcp-option=option:tftp-server,{{ api_interface_address }}
dhcp-option=option:server-ip-address,{{ api_interface_address }}
dhcp-option=210,/var/lib/ironic/tftpboot/
{% if ironic_dnsmasq_serve_ipxe | bool %}
dhcp-match=ipxe,175
dhcp-match=set:efi,option:client-arch,7
dhcp-match=set:efi,option:client-arch,9
# Client is already running iPXE; move to next stage of chainloading
dhcp-option=tag:ipxe,option:bootfile-name,{{ ironic_http_url }}/inspector.ipxe
# Client is PXE booting over EFI without iPXE ROM,
# send EFI version of iPXE chainloader
dhcp-option=tag:efi,tag:!ipxe,option:bootfile-name,{{ ironic_dnsmasq_uefi_ipxe_boot_file }}
{% endif %}
dhcp-option=option:bootfile-name,{{ ironic_dnsmasq_boot_file }}
{% endif %}{# ipv6/ipv4 #}

log-async
log-facility=/var/log/kolla/ironic/dnsmasq.log
{% if ironic_logging_debug | bool %}
log-dhcp
{% endif %}

{% if ironic_inspector_pxe_filter == 'dnsmasq' %}
dhcp-hostsdir=/etc/dnsmasq/dhcp-hostsdir
{% endif %}
