diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/Api/InterfaceController.php b/src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/Api/InterfaceController.php new file mode 100644 index 000000000..955175e34 --- /dev/null +++ b/src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/Api/InterfaceController.php @@ -0,0 +1,74 @@ +configdpRun("interface list arp json"); + $arptable = json_decode($response, true); + + // collect interface names + $intfmap = array(); + $config = Config::getInstance()->object() ; + if ($config->interfaces != null) { + foreach ($config->interfaces->children() as $key => $node) { + $intfmap[(string)$node->if] = !empty((string)$node->descr) ? (string)$node->descr : $key ; + } + } + // merge arp output with interface names + if (is_array($arptable)) { + foreach ($arptable as &$arpentry) { + if (array_key_exists($arpentry['intf'], $intfmap)) { + $arpentry['intf_description'] = $intfmap[$arpentry['intf']]; + } else { + $arpentry['intf_description'] = ""; + } + } + } + + return $arptable; + } +} diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/InterfaceController.php b/src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/InterfaceController.php new file mode 100644 index 000000000..ea9e9adf9 --- /dev/null +++ b/src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/InterfaceController.php @@ -0,0 +1,44 @@ +view->title = "System ARP table"; + $this->view->pick('OPNsense/Diagnostics/arp'); + } +} diff --git a/src/opnsense/mvc/app/views/OPNsense/Diagnostics/arp.volt b/src/opnsense/mvc/app/views/OPNsense/Diagnostics/arp.volt new file mode 100644 index 000000000..943f580c2 --- /dev/null +++ b/src/opnsense/mvc/app/views/OPNsense/Diagnostics/arp.volt @@ -0,0 +1,109 @@ +{# + +OPNsense® is Copyright © 2014 – 2016 by Deciso B.V. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +#} + + + +
| {{ lang._('IP') }} | +{{ lang._('MAC') }} | +{{ lang._('Manufacturer') }} | +{{ lang._('Interface') }} | +{{ lang._('Interface name') }} | +{{ lang._('Hostname') }} | +||||
|---|---|---|---|---|---|---|---|---|---|
| {{ lang._('NOTE: Local IPv6 peers use NDP instead of ARP.') }} | +|||||||||