r3834 HNDP_RUNNERS_LISTSRC: new option
authorDenis Ovsienko <infrastation@yandex.ru>
Tue, 15 Jun 2010 11:11:05 +0000 (11:11 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Tue, 15 Jun 2010 11:11:05 +0000 (11:11 +0000)
renderDiscoveredNeighbors(): update mapping
vrp53ReadHNDPStatus(): new function
trigger_LiveHNDP(): new function

ChangeLog
inc/gateways.php
inc/interface.php
inc/navigation.php
inc/ophandlers.php
inc/triggers.php
install/init-dictbase.sql
upgrade.php

index fa25786..b53b9ab 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,7 @@
        bugfix: Nexus 802.1Q fixes
        bugfix: fix incorrect quoting of port reservation comment
        new feature: "Live CDP" now works with Nexus devices
+       new feature: Huawei NDP support
 0.18.2 2010-06-10
        bugfix: don't restore last opened tab, which won't be permitted anyway
        update: completely switch to PDO prepared queries (#120)
index c5a14ff..52e5c94 100644 (file)
@@ -34,6 +34,8 @@ $gwrxlator['get8021q'] = array
        'xos12' => 'xos12Read8021QConfig',
 );
 
+$gwrxlator['gethndp']['vrp53'] = 'vrp53ReadHNDPStatus';
+
 $gwpushxlator = array
 (
        'ios12' => 'ios12TranslatePushQueue',
@@ -493,6 +495,41 @@ function vrp53ReadLLDPStatus ($input)
        return $ret;
 }
 
+function vrp53ReadHNDPStatus ($input)
+{
+       $ret = array();
+       foreach (explode ("\n", $input) as $line)
+       {
+               $matches = array();
+               switch (TRUE)
+               {
+               case preg_match ('/^ Interface: (.+)$/', $line, $matches):
+                       $ret['current']['local_port'] = ios12ShortenIfName ($matches[1]);
+                       break;
+               case preg_match ('/^       Port Name   : (.+)$/', $line, $matches):
+                       $ret['current']['remote_port'] = ios12ShortenIfName ($matches[1]);
+                       break;
+               case preg_match ('/^       Device Name : (.+)$/', $line, $matches):
+                       if
+                       (
+                               array_key_exists ('current', $ret) and
+                               array_key_exists ('local_port', $ret['current']) and
+                               array_key_exists ('remote_port', $ret['current'])
+                       )
+                               $ret[$ret['current']['local_port']] = array
+                               (
+                                       'device' => $matches[1],
+                                       'port' => $ret['current']['remote_port'],
+                               );
+                       unset ($ret['current']);
+                       break;
+               default:
+               }
+       }
+       unset ($ret['current']);
+       return $ret;
+}
+
 function ios12ReadVLANConfig ($input)
 {
        $ret = array
index d19760d..90be0be 100644 (file)
@@ -7695,7 +7695,12 @@ function renderDeployQueue ($dqcode)
 function renderDiscoveredNeighbors ($object_id)
 {
        global $tabno;
-       $opcode_by_tabno = array ('livecdp' => 'getcdpstatus', 'livelldp' => 'getlldpstatus');
+       $opcode_by_tabno = array
+       (
+               'livecdp' => 'getcdpstatus',
+               'livelldp' => 'getlldpstatus',
+               'livehndp' => 'gethndp',
+       );
        try
        {
                $neighbors = sortPortList (gwRetrieveDeviceConfig ($object_id, $opcode_by_tabno[$tabno]));
index e1b4eb3..7341abc 100644 (file)
@@ -92,6 +92,7 @@ $tab['object']['nat4'] = 'NATv4';
 $tab['object']['livevlans'] = 'Live VLANs';
 $tab['object']['livecdp'] = 'Live CDP';
 $tab['object']['livelldp'] = 'Live LLDP';
+$tab['object']['livehndp'] = 'Live HNDP';
 $tab['object']['snmpportfinder'] = 'SNMP sync';
 $tab['object']['editrspvs'] = 'RS pools';
 $tab['object']['lvsconfig'] = 'keepalived.conf';
@@ -110,6 +111,7 @@ $tabhandler['object']['nat4'] = 'renderNATv4ForObject';
 $tabhandler['object']['livevlans'] = 'renderVLANMembership';
 $tabhandler['object']['livecdp'] = 'renderDiscoveredNeighbors';
 $tabhandler['object']['livelldp'] = 'renderDiscoveredNeighbors';
+$tabhandler['object']['livehndp'] = 'renderDiscoveredNeighbors';
 $tabhandler['object']['snmpportfinder'] = 'renderSNMPPortFinder';
 $tabhandler['object']['lvsconfig'] = 'renderLVSConfig';
 $tabhandler['object']['autoports'] = 'renderAutoPortsForm';
@@ -125,6 +127,7 @@ $trigger['object']['nat4'] = 'trigger_natv4';
 $trigger['object']['livevlans'] = 'trigger_livevlans';
 $trigger['object']['livecdp'] = 'trigger_LiveCDP';
 $trigger['object']['livelldp'] = 'trigger_LiveLLDP';
+$trigger['object']['livehndp'] = 'trigger_LiveHNDP';
 $trigger['object']['snmpportfinder'] = 'trigger_snmpportfinder';
 $trigger['object']['editrspvs'] = 'trigger_isloadbalancer';
 $trigger['object']['lvsconfig'] = 'trigger_isloadbalancer';
index 3aefda2..0331845 100644 (file)
@@ -1089,6 +1089,7 @@ function resetUIConfig()
        setConfigVar ('8021Q_INSTANT_DEPLOY', 'no');
        setConfigVar ('CDP_RUNNERS_LISTSRC', '');
        setConfigVar ('LLDP_RUNNERS_LISTSRC', '');
+       setConfigVar ('HNDP_RUNNERS_LISTSRC', '');
        return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
index 24e99af..f5ce2cd 100644 (file)
@@ -236,6 +236,11 @@ function trigger_LiveLLDP ()
        return trigger_anyDP ('getlldpstatus', 'LLDP_RUNNERS_LISTSRC');
 }
 
+function trigger_LiveHNDP ()
+{
+       return trigger_anyDP ('gethndp', 'HNDP_RUNNERS_LISTSRC');
+}
+
 function trigger_anyDP ($command, $constraint)
 {
        global $gwrxlator;
index 64ab669..5dece07 100644 (file)
@@ -406,6 +406,7 @@ INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, is_userdef
 ('ENABLE_BULKPORT_FORM','yes','string','no','no','yes','Enable "Bulk Port" form'),
 ('CDP_RUNNERS_LISTSRC', '', 'string', 'yes', 'no', 'no', 'List of devices running CDP'),
 ('LLDP_RUNNERS_LISTSRC', '', 'string', 'yes', 'no', 'no', 'List of devices running LLDP'),
+('HNDP_RUNNERS_LISTSRC', '', 'string', 'yes', 'no', 'no', 'List of devices running HNDP (RackCode)'),
 ('DB_VERSION','0.18.2','string','no','yes','no','Database version.');
 
 INSERT INTO `Script` VALUES ('RackCode','allow {$userid_1}');
index dba5544..c141a61 100644 (file)
@@ -736,6 +736,7 @@ CREATE TABLE `VLANValidID` (
                case '0.18.3':
                        $query = array_merge ($query, reloadDictionary ($batchid));
                        $query[] = "UPDATE Config SET varname='8021Q_WRI_AFTER_CONFT_LISTSRC', varvalue='false', description='802.1Q: save device configuration after deploy (RackCode)' WHERE varname='8021Q_WRI_AFTER_CONFT'";
+                       $query[] = "INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, is_userdefined, description) VALUES ('HNDP_RUNNERS_LISTSRC', '', 'string', 'yes', 'no', 'no', 'List of devices running HNDP (RackCode)')";
                        $query[] = "UPDATE Config SET varvalue = '0.18.3' WHERE varname = 'DB_VERSION'";
                        break;
                default: