diff --git a/plist b/plist
index 010c9c4cd..9695344e7 100644
--- a/plist
+++ b/plist
@@ -402,13 +402,16 @@
/usr/local/opnsense/mvc/app/controllers/OPNsense/Interfaces/forms/dialogVip.xml
/usr/local/opnsense/mvc/app/controllers/OPNsense/Interfaces/forms/dialogVlan.xml
/usr/local/opnsense/mvc/app/controllers/OPNsense/Interfaces/forms/dialogVxlan.xml
+/usr/local/opnsense/mvc/app/controllers/OPNsense/Kea/Api/CtrlAgentController.php
/usr/local/opnsense/mvc/app/controllers/OPNsense/Kea/Api/Dhcpv4Controller.php
/usr/local/opnsense/mvc/app/controllers/OPNsense/Kea/Api/Leases4Controller.php
/usr/local/opnsense/mvc/app/controllers/OPNsense/Kea/Api/ServiceController.php
/usr/local/opnsense/mvc/app/controllers/OPNsense/Kea/DhcpController.php
-/usr/local/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogReservation.xml
-/usr/local/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogSubnet.xml
-/usr/local/opnsense/mvc/app/controllers/OPNsense/Kea/forms/generalSettings.xml
+/usr/local/opnsense/mvc/app/controllers/OPNsense/Kea/forms/agentSettings.xml
+/usr/local/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogPeer4.xml
+/usr/local/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogReservation4.xml
+/usr/local/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogSubnet4.xml
+/usr/local/opnsense/mvc/app/controllers/OPNsense/Kea/forms/generalSettings4.xml
/usr/local/opnsense/mvc/app/controllers/OPNsense/Monit/Api/ServiceController.php
/usr/local/opnsense/mvc/app/controllers/OPNsense/Monit/Api/SettingsController.php
/usr/local/opnsense/mvc/app/controllers/OPNsense/Monit/Api/StatusController.php
@@ -712,6 +715,8 @@
/usr/local/opnsense/mvc/app/models/OPNsense/Interfaces/VxLan.xml
/usr/local/opnsense/mvc/app/models/OPNsense/Kea/ACL/ACL.xml
/usr/local/opnsense/mvc/app/models/OPNsense/Kea/FieldTypes/KeaPoolsField.php
+/usr/local/opnsense/mvc/app/models/OPNsense/Kea/KeaCtrlAgent.php
+/usr/local/opnsense/mvc/app/models/OPNsense/Kea/KeaCtrlAgent.xml
/usr/local/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv4.php
/usr/local/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv4.xml
/usr/local/opnsense/mvc/app/models/OPNsense/Kea/Menu/Menu.xml
@@ -831,6 +836,7 @@
/usr/local/opnsense/mvc/app/views/OPNsense/Interface/vip.volt
/usr/local/opnsense/mvc/app/views/OPNsense/Interface/vlan.volt
/usr/local/opnsense/mvc/app/views/OPNsense/Interface/vxlan.volt
+/usr/local/opnsense/mvc/app/views/OPNsense/Kea/ctrl_agent.volt
/usr/local/opnsense/mvc/app/views/OPNsense/Kea/dhcpv4.volt
/usr/local/opnsense/mvc/app/views/OPNsense/Kea/leases4.volt
/usr/local/opnsense/mvc/app/views/OPNsense/Monit/index.volt
diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Kea/Api/CtrlAgentController.php b/src/opnsense/mvc/app/controllers/OPNsense/Kea/Api/CtrlAgentController.php
new file mode 100644
index 000000000..02ee37254
--- /dev/null
+++ b/src/opnsense/mvc/app/controllers/OPNsense/Kea/Api/CtrlAgentController.php
@@ -0,0 +1,50 @@
+ [
+ 'general' => $data[self::$internalModelName]['general']
+ ]
+ ];
+ }
+}
diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Kea/Api/Dhcpv4Controller.php b/src/opnsense/mvc/app/controllers/OPNsense/Kea/Api/Dhcpv4Controller.php
index a4e95ba4c..18d6b6795 100644
--- a/src/opnsense/mvc/app/controllers/OPNsense/Kea/Api/Dhcpv4Controller.php
+++ b/src/opnsense/mvc/app/controllers/OPNsense/Kea/Api/Dhcpv4Controller.php
@@ -29,6 +29,7 @@
namespace OPNsense\Kea\Api;
use OPNsense\Base\ApiMutableModelControllerBase;
+use OPNsense\Core\Config;
class Dhcpv4Controller extends ApiMutableModelControllerBase
{
@@ -43,7 +44,9 @@ class Dhcpv4Controller extends ApiMutableModelControllerBase
$data = parent::getAction();
return [
self::$internalModelName => [
- 'general' => $data[self::$internalModelName]['general']
+ 'general' => $data[self::$internalModelName]['general'],
+ 'ha' => $data[self::$internalModelName]['ha'],
+ 'this_hostname' => (string)Config::getInstance()->object()->system->hostname
]
];
}
@@ -101,4 +104,30 @@ class Dhcpv4Controller extends ApiMutableModelControllerBase
{
return $this->delBase("reservations.reservation", $uuid);
}
+
+ public function searchPeerAction()
+ {
+ return $this->searchBase("ha_peers.peer", ['name', 'role'], "name");
+ }
+
+ public function setPeerAction($uuid)
+ {
+ return $this->setBase("peer", "ha_peers.peer", $uuid);
+ }
+
+ public function addPeerAction()
+ {
+ return $this->addBase("peer", "ha_peers.peer");
+ }
+
+ public function getPeerAction($uuid = null)
+ {
+ return $this->getBase("peer", "ha_peers.peer", $uuid);
+ }
+
+ public function delPeerAction($uuid)
+ {
+ return $this->delBase("ha_peers.peer", $uuid);
+ }
+
}
diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Kea/DhcpController.php b/src/opnsense/mvc/app/controllers/OPNsense/Kea/DhcpController.php
index 8458aa230..c01a11adb 100644
--- a/src/opnsense/mvc/app/controllers/OPNsense/Kea/DhcpController.php
+++ b/src/opnsense/mvc/app/controllers/OPNsense/Kea/DhcpController.php
@@ -40,12 +40,19 @@ class DhcpController extends \OPNsense\Base\IndexController
]);
}
+ public function ctrlAgentAction()
+ {
+ $this->view->pick('OPNsense/Kea/ctrl_agent');
+ $this->view->formGeneralSettings = $this->getForm("agentSettings");
+ }
+
public function v4Action()
{
$this->view->pick('OPNsense/Kea/dhcpv4');
- $this->view->formGeneralSettings = $this->getForm("generalSettings");
- $this->view->formDialogSubnet = $this->getForm("dialogSubnet");
- $this->view->formDialogReservation = $this->getForm("dialogReservation");
+ $this->view->formGeneralSettings = $this->getForm("generalSettings4");
+ $this->view->formDialogSubnet = $this->getForm("dialogSubnet4");
+ $this->view->formDialogReservation = $this->getForm("dialogReservation4");
+ $this->view->formDialogPeer = $this->getForm("dialogPeer4");
}
public function leases4Action()
diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/agentSettings.xml b/src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/agentSettings.xml
new file mode 100644
index 000000000..f72910840
--- /dev/null
+++ b/src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/agentSettings.xml
@@ -0,0 +1,20 @@
+
diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogPeer4.xml b/src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogPeer4.xml
new file mode 100644
index 000000000..7c6354100
--- /dev/null
+++ b/src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogPeer4.xml
@@ -0,0 +1,21 @@
+
diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogReservation.xml b/src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogReservation4.xml
similarity index 100%
rename from src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogReservation.xml
rename to src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogReservation4.xml
diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogSubnet.xml b/src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogSubnet4.xml
similarity index 100%
rename from src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogSubnet.xml
rename to src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogSubnet4.xml
diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/generalSettings.xml b/src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/generalSettings.xml
deleted file mode 100644
index 52ce9e85d..000000000
--- a/src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/generalSettings.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/generalSettings4.xml b/src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/generalSettings4.xml
new file mode 100644
index 000000000..04b4de9e1
--- /dev/null
+++ b/src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/generalSettings4.xml
@@ -0,0 +1,42 @@
+
diff --git a/src/opnsense/mvc/app/models/OPNsense/Kea/KeaCtrlAgent.php b/src/opnsense/mvc/app/models/OPNsense/Kea/KeaCtrlAgent.php
new file mode 100644
index 000000000..876a9a4f7
--- /dev/null
+++ b/src/opnsense/mvc/app/models/OPNsense/Kea/KeaCtrlAgent.php
@@ -0,0 +1,35 @@
+
+ //OPNsense/Kea/ctrl_agent
+ 0.0.1
+ Kea Control Agent configuration
+
+
+
+ 0
+ Y
+
+
+ N
+ ipv4
+ 127.0.0.1
+ Y
+
+
+ Y
+ 8000
+
+
+
+
diff --git a/src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv4.xml b/src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv4.xml
index ef8c54dbb..b36c6c343 100644
--- a/src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv4.xml
+++ b/src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv4.xml
@@ -16,6 +16,15 @@
Y
+
+
+ 0
+ Y
+
+
+ /^([0-9a-zA-Z.\:\-,_]){0,1024}$/u
+
+
@@ -61,11 +70,11 @@
-
+
OPNsense.Kea.KeaDhcpv4
subnets.subnet4
subnet
-
+
Related subnet not found
Y
@@ -83,5 +92,35 @@
+
+
+
+ Y
+
+
+ Duplicate entry exists
+ UniqueConstraint
+
+
+
+
+ primary
+ Y
+
+ primary
+ standby
+
+
+
+ Y
+
+
+ Duplicate entry exists
+ UniqueConstraint
+
+
+
+
+
diff --git a/src/opnsense/mvc/app/models/OPNsense/Kea/Menu/Menu.xml b/src/opnsense/mvc/app/models/OPNsense/Kea/Menu/Menu.xml
index 3cac48057..a81864350 100644
--- a/src/opnsense/mvc/app/models/OPNsense/Kea/Menu/Menu.xml
+++ b/src/opnsense/mvc/app/models/OPNsense/Kea/Menu/Menu.xml
@@ -1,7 +1,8 @@