From 7711018aaebbefeb19e6e551f24ce08531970f7f Mon Sep 17 00:00:00 2001
From: Christian Poessinger <christian@poessinger.com>
Date: Fri, 22 Apr 2022 22:37:55 +0200
Subject: dhcp: T4389: add vendor option support for Ubiquity Unifi controller

vyos@vyos# show service dhcp-server
 shared-network-name LAN {
     subnet 172.18.201.0/24 {
         default-router 172.18.201.1
         name-server 172.18.201.2
         range 0 {
             start 172.18.201.101
             stop 172.18.201.109
         }
         vendor-option {
             ubiquity {
                 unifi-controller 172.16.100.1
             }
         }
     }
 }
---
 data/templates/dhcp-server/dhcpd.conf.j2 | 12 ++++++++++++
 1 file changed, 12 insertions(+)

(limited to 'data')

diff --git a/data/templates/dhcp-server/dhcpd.conf.j2 b/data/templates/dhcp-server/dhcpd.conf.j2
index 40575cea2..4eb472951 100644
--- a/data/templates/dhcp-server/dhcpd.conf.j2
+++ b/data/templates/dhcp-server/dhcpd.conf.j2
@@ -23,6 +23,15 @@ option rfc3442-static-route code 121 = array of integer 8;
 option windows-static-route code 249 = array of integer 8;
 option wpad-url code 252 = text;
 
+# Vendor specific options - Ubiquity Networks
+option space ubnt;
+option ubnt.unifi-controller code 1 = ip-address;
+class "ubnt" {
+    match if substring (option vendor-class-identifier , 0, 4) = "ubnt";
+    option vendor-class-identifier "ubnt";
+    vendor-option-space ubnt;
+}
+
 {% if global_parameters is vyos_defined %}
 # The following {{ global_parameters | length }} line(s) have been added as
 # global-parameters in the CLI and have not been validated !!!
@@ -194,6 +203,9 @@ shared-network {{ network }} {
         }
 {%                     endfor %}
 {%                 endif %}
+{%                 if subnet_config.vendor_option.ubiquity.unifi_controller is vyos_defined %}
+        option ubnt.unifi-controller {{ subnet_config.vendor_option.ubiquity.unifi_controller }};
+{%                 endif %}
 {%                 if subnet_config.range is vyos_defined %}
 {#           pool configuration can only be used if there follows a range option #}
         pool {
-- 
cgit v1.2.3