summaryrefslogtreecommitdiff
path: root/data/templates/dhcp-server
diff options
context:
space:
mode:
Diffstat (limited to 'data/templates/dhcp-server')
-rw-r--r--data/templates/dhcp-server/dhcpd.conf.tmpl165
-rw-r--r--data/templates/dhcp-server/dhcpdv6.conf.tmpl90
2 files changed, 171 insertions, 84 deletions
diff --git a/data/templates/dhcp-server/dhcpd.conf.tmpl b/data/templates/dhcp-server/dhcpd.conf.tmpl
index f431d3207..d172018bf 100644
--- a/data/templates/dhcp-server/dhcpd.conf.tmpl
+++ b/data/templates/dhcp-server/dhcpd.conf.tmpl
@@ -1,4 +1,3 @@
-
### Autogenerated by dhcp_server.py ###
# For options please consult the following website:
@@ -23,10 +22,12 @@ on expiry {
execute("/usr/libexec/vyos/system/on-dhcp-event.sh", "release", ClientName, ClientIp, ClientMac, ClientDomain);
}
{% endif %}
+
{% if host_decl_name %}
use-host-decl-names on;
{% endif %}
-ddns-update-style {% if ddns_enable %} interim {% else %} none {% endif %};
+
+ddns-update-style {{ 'interim' if ddns_enable else 'none' }};
{% if static_route %}
option rfc3442-static-route code 121 = array of integer 8;
option windows-static-route code 249 = array of integer 8;
@@ -37,24 +38,24 @@ option wpad-url code 252 = text;
{% if global_parameters %}
# The following {{ global_parameters | length }} line(s) were added as global-parameters in the CLI and have not been validated
-{% for param in global_parameters %}
+{% for param in global_parameters %}
{{ param }}
-{% endfor %}
+{% endfor %}
{% endif %}
# Failover configuration
{% for network in shared_network %}
-{% if not network.disabled %}
-{% for subnet in network.subnet %}
-{% if subnet.failover_name %}
+{% if not network.disabled %}
+{% for subnet in network.subnet %}
+{% if subnet.failover_name %}
failover peer "{{ subnet.failover_name }}" {
-{% if subnet.failover_status == 'primary' %}
+{% if subnet.failover_status == 'primary' %}
primary;
mclt 1800;
split 128;
-{% elif subnet.failover_status == 'secondary' %}
+{% elif subnet.failover_status == 'secondary' %}
secondary;
-{% endif %}
+{% endif %}
address {{ subnet.failover_local_addr }};
port 520;
peer address {{ subnet.failover_peer_addr }};
@@ -63,109 +64,106 @@ failover peer "{{ subnet.failover_name }}" {
max-unacked-updates 10;
load balance max seconds 3;
}
-{% endif %}
-{% endfor %}
-{% endif %}
+{% endif %}
+{% endfor %}
+{% endif %}
{% endfor %}
# Shared network configration(s)
-{% for network in shared_network %}
-{% if not network.disabled %}
+{% for network in shared_network if not network.disabled %}
shared-network {{ network.name }} {
- {% if network.authoritative %}
+{% if network.authoritative %}
authoritative;
- {% endif %}
- {% if network.network_parameters %}
+{% endif %}
+{% if network.network_parameters %}
# The following {{ network.network_parameters | length }} line(s) were added as shared-network-parameters in the CLI and have not been validated
- {% for param in network.network_parameters %}
+{% for param in network.network_parameters %}
{{ param }}
- {% endfor %}
- {% endif %}
- {% for subnet in network.subnet %}
+{% endfor %}
+{% endif %}
+{% for subnet in network.subnet %}
subnet {{ subnet.address }} netmask {{ subnet.netmask }} {
- {% if subnet.dns_server %}
+{% if subnet.dns_server %}
option domain-name-servers {{ subnet.dns_server | join(', ') }};
- {% endif %}
- {% if subnet.domain_search %}
+{% endif %}
+{% if subnet.domain_search %}
option domain-search {{ subnet.domain_search | join(', ') }};
- {% endif %}
- {% if subnet.ntp_server %}
+{% endif %}
+{% if subnet.ntp_server %}
option ntp-servers {{ subnet.ntp_server | join(', ') }};
- {% endif %}
- {% if subnet.pop_server %}
+{% endif %}
+{% if subnet.pop_server %}
option pop-server {{ subnet.pop_server | join(', ') }};
- {% endif %}
- {% if subnet.smtp_server %}
+{% endif %}
+{% if subnet.smtp_server %}
option smtp-server {{ subnet.smtp_server | join(', ') }};
- {% endif %}
- {% if subnet.time_server %}
+{% endif %}
+{% if subnet.time_server %}
option time-servers {{ subnet.time_server | join(', ') }};
- {% endif %}
- {% if subnet.wins_server %}
+{% endif %}
+{% if subnet.wins_server %}
option netbios-name-servers {{ subnet.wins_server | join(', ') }};
- {% endif %}
- {% if subnet.static_route %}
+{% endif %}
+{% if subnet.static_route %}
option rfc3442-static-route {{ subnet.static_route }}{% if subnet.rfc3442_default_router %}, {{ subnet.rfc3442_default_router }}{% endif %};
option windows-static-route {{ subnet.static_route }};
- {% endif %}
- {% if subnet.ip_forwarding %}
+{% endif %}
+{% if subnet.ip_forwarding %}
option ip-forwarding true;
- {% endif %}
- {% if subnet.default_router %}
+{% endif %}
+{% if subnet.default_router %}
option routers {{ subnet.default_router }};
- {% endif %}
- {% if subnet.server_identifier %}
+{% endif %}
+{% if subnet.server_identifier %}
option dhcp-server-identifier {{ subnet.server_identifier }};
- {% endif %}
- {% if subnet.domain_name %}
+{% endif %}
+{% if subnet.domain_name %}
option domain-name "{{ subnet.domain_name }}";
- {% endif %}
- {% if subnet.subnet_parameters %}
+{% endif %}
+{% if subnet.subnet_parameters %}
# The following {{ subnet.subnet_parameters | length }} line(s) were added as subnet-parameters in the CLI and have not been validated
- {% for param in subnet.subnet_parameters %}
+{% for param in subnet.subnet_parameters %}
{{ param }}
- {% endfor %}
- {% endif %}
- {% if subnet.tftp_server %}
+{% endfor %}
+{% endif %}
+{% if subnet.tftp_server %}
option tftp-server-name "{{ subnet.tftp_server }}";
- {% endif %}
- {% if subnet.bootfile_name %}
+{% endif %}
+{% if subnet.bootfile_name %}
option bootfile-name "{{ subnet.bootfile_name }}";
filename "{{ subnet.bootfile_name }}";
- {% endif %}
- {% if subnet.bootfile_server %}
+{% endif %}
+{% if subnet.bootfile_server %}
next-server {{ subnet.bootfile_server }};
- {% endif %}
- {% if subnet.time_offset %}
+{% endif %}
+{% if subnet.time_offset %}
option time-offset {{ subnet.time_offset }};
- {% endif %}
- {% if subnet.wpad_url %}
+{% endif %}
+{% if subnet.wpad_url %}
option wpad-url "{{ subnet.wpad_url }}";
- {% endif %}
- {% if subnet.client_prefix_length %}
+{% endif %}
+{% if subnet.client_prefix_length %}
option subnet-mask {{ subnet.client_prefix_length }};
- {% endif %}
- {% if subnet.lease %}
+{% endif %}
+{% if subnet.lease %}
default-lease-time {{ subnet.lease }};
max-lease-time {{ subnet.lease }};
- {% endif %}
- {% for host in subnet.static_mapping %}
- {% if not host.disabled %}
- host {% if host_decl_name %} {{ host.name }} {% else %} {{ network.name }}_{{ host.name }} {% endif %} {
- {% if host.ip_address %}
+{% endif %}
+{% for host in subnet.static_mapping if not host.disabled %}
+ host {{ host.name if host_decl_name else network.name + '_' + host.name }} {
+{% if host.ip_address %}
fixed-address {{ host.ip_address }};
- {% endif %}
+{% endif %}
hardware ethernet {{ host.mac_address }};
- {% if host.static_parameters %}
+{% if host.static_parameters %}
# The following {{ host.static_parameters | length }} line(s) were added as static-mapping-parameters in the CLI and have not been validated
- {% for param in host.static_parameters %}
+{% for param in host.static_parameters %}
{{ param }}
- {% endfor %}
- {% endif %}
+{% endfor %}
+{% endif %}
}
- {% endif %}
- {% endfor %}
- {% if subnet.failover_name %}
+{% endfor %}
+{% if subnet.failover_name %}
pool {
failover peer "{{ subnet.failover_name }}";
deny dynamic bootp clients;
@@ -173,23 +171,22 @@ shared-network {{ network.name }} {
range {{ range.start }} {{ range.stop }};
{% endfor %}
}
- {% else %}
- {% for range in subnet.range %}
+{% else %}
+{% for range in subnet.range %}
range {{ range.start }} {{ range.stop }};
- {% endfor %}
- {% endif %}
+{% endfor %}
+{% endif %}
}
- {% endfor %}
+{% endfor %}
on commit {
set shared-networkname = "{{ network.name }}";
- {% if hostfile_update %}
+{% if hostfile_update %}
set ClientName = pick-first-value(host-decl-name, option fqdn.hostname, option host-name);
set ClientIp = binary-to-ascii(10, 8, ".", leased-address);
set ClientMac = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));
set ClientDomain = pick-first-value(config-option domain-name, "..YYZ!");
execute("/usr/libexec/vyos/system/on-dhcp-event.sh", "commit", ClientName, ClientIp, ClientMac, ClientDomain);
- {% endif %}
+{% endif %}
}
}
-{% endif %}
{% endfor %}
diff --git a/data/templates/dhcp-server/dhcpdv6.conf.tmpl b/data/templates/dhcp-server/dhcpdv6.conf.tmpl
new file mode 100644
index 000000000..aa6d7fb5d
--- /dev/null
+++ b/data/templates/dhcp-server/dhcpdv6.conf.tmpl
@@ -0,0 +1,90 @@
+### Autogenerated by dhcpv6_server.py ###
+
+# For options please consult the following website:
+# https://www.isc.org/wp-content/uploads/2017/08/dhcp43options.html
+
+log-facility local7;
+{% if preference %}
+option dhcp6.preference {{ preference }};
+{% endif %}
+
+# Shared network configration(s)
+{% for network in shared_network %}
+{% if not network.disabled %}
+shared-network {{ network.name }} {
+ {% if network.common.info_refresh_time %}
+ option dhcp6.info-refresh-time {{ network.common.info_refresh_time }};
+ {% endif %}
+ {% if network.common.domain_search %}
+ option dhcp6.domain-search "{{ network.common.domain_search | join('", "') }}";
+ {% endif %}
+ {% if network.common.dns_server %}
+ option dhcp6.name-servers {{ network.common.dns_server | join(', ') }};
+ {% endif %}
+ {% for subnet in network.subnet %}
+ subnet6 {{ subnet.network }} {
+ {% for range in subnet.range6_prefix %}
+ range6 {{ range.prefix }}{{ " temporary" if range.temporary }};
+ {% endfor %}
+ {% for range in subnet.range6 %}
+ range6 {{ range.start }} {{ range.stop }};
+ {% endfor %}
+ {% if subnet.domain_search %}
+ option dhcp6.domain-search "{{ subnet.domain_search | join('", "') }}";
+ {% endif %}
+ {% if subnet.lease_def %}
+ default-lease-time {{ subnet.lease_def }};
+ {% endif %}
+ {% if subnet.lease_max %}
+ max-lease-time {{ subnet.lease_max }};
+ {% endif %}
+ {% if subnet.lease_min %}
+ min-lease-time {{ subnet.lease_min }};
+ {% endif %}
+ {% if subnet.dns_server %}
+ option dhcp6.name-servers {{ subnet.dns_server | join(', ') }};
+ {% endif %}
+ {% if subnet.nis_domain %}
+ option dhcp6.nis-domain-name "{{ subnet.nis_domain }}";
+ {% endif %}
+ {% if subnet.nis_server %}
+ option dhcp6.nis-servers {{ subnet.nis_server | join(', ') }};
+ {% endif %}
+ {% if subnet.nisp_domain %}
+ option dhcp6.nisp-domain-name "{{ subnet.nisp_domain }}";
+ {% endif %}
+ {% if subnet.nisp_server %}
+ option dhcp6.nisp-servers {{ subnet.nisp_server | join(', ') }};
+ {% endif %}
+ {% if subnet.sip_address %}
+ option dhcp6.sip-servers-addresses {{ subnet.sip_address | join(', ') }};
+ {% endif %}
+ {% if subnet.sip_hostname %}
+ option dhcp6.sip-servers-names "{{ subnet.sip_hostname | join('", "') }}";
+ {% endif %}
+ {% if subnet.sntp_server %}
+ option dhcp6.sntp-servers {{ subnet.sntp_server | join(', ') }};
+ {% endif %}
+ {% for prefix in subnet.prefix_delegation %}
+ prefix6 {{ prefix.start }} {{ prefix.stop }} /{{ prefix.length }};
+ {% endfor %}
+ {% for host in subnet.static_mapping %}
+ {% if not host.disabled %}
+ host {{ network.name }}_{{ host.name }} {
+ {% if host.client_identifier %}
+ host-identifier option dhcp6.client-id {{ host.client_identifier }};
+ {% endif %}
+ {% if host.ipv6_address %}
+ fixed-address6 {{ host.ipv6_address }};
+ {% endif %}
+ }
+ {% endif %}
+ {% endfor %}
+ }
+ {% endfor %}
+ on commit {
+ set shared-networkname = "{{ network.name }}";
+ }
+}
+{% endif %}
+{% endfor %}