{%- from "isc_dhcp/map.jinja" import server with context %}

{%- for subnet_name, subnet in server.subnet.iteritems() %}

subnet {{ subnet.network }} netmask {{ subnet.netmask }} {
  {%- if subnet.range is defined %}
  range {{ subnet.range }};
  {%- endif %}

  option subnet-mask {{ subnet.netmask }};
  {%- if subnet.gateway is defined %}
  option routers {{ subnet.gateway }};
  {%- endif %}
  {%- if subnet.pxeserver is defined %}
  next-server {{ subnet.pxeserver }};
  {%- endif %}
{%- if subnet.unknown_clients is defined %}
  {{ subnet.unknown_clients }} unknown-clients;
{% endif %}
}
{%- endfor %}
