r3134 - maintenance->trunk sync of changesets: 3130, 3131, 3133
authorDenis Ovsienko <infrastation@yandex.ru>
Wed, 16 Sep 2009 09:13:45 +0000 (09:13 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Wed, 16 Sep 2009 09:13:45 +0000 (09:13 +0000)
ChangeLog
inc/config.php
inc/snmp.php
install/init-dictbase.sql
upgrade.php

index 4dcbc41..6e4081c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,4 @@
-0.17.5
+0.17.5 2009-09-16
        bugfix: corrected reference counters in tag tree
        bugfix: "cn" autotag was not generated for objects
        new feature: make text in the "added new object X" message clickable (ticket:280) (by Boris Lytochkin)
index 18f144c..18edb21 100644 (file)
@@ -11,7 +11,7 @@
 
 
 // Current code version is subject to change with each new release.
-define ('CODE_VERSION', '0.17.4');
+define ('CODE_VERSION', '0.17.5');
 define ('CHAP_OBJTYPE', 1);
 define ('CHAP_PORTTYPE', 2);
 
index 588bfae..21142b3 100644 (file)
@@ -483,6 +483,30 @@ function updateStickerForCell ($cell, $attr_id, $new_value)
                commitUpdateAttrValue ($cell['id'], $attr_id, $new_value);
 }
 
+// Accept "X-Y" on input and make sure, that PortInterfaceCompat contains
+// a record with IIF id = X and OIF id = Y.
+function checkPIC ($port_type_id)
+{
+       $matches = array();
+       switch (1)
+       {
+       case preg_match ('/^([[:digit:]]+)-([[:digit:]]+)$/', $port_type_id, $matches):
+               $iif_id = $matches[1];
+               $oif_id = $matches[2];
+               break;
+       case preg_match ('/^([[:digit:]]+)$/', $port_type_id, $matches):
+               $iif_id = 1;
+               $oif_id = $matches[1];
+               break;
+       default:
+               return;
+       }
+       foreach (getPortInterfaceCompat() as $record)
+               if ($record['iif_id'] == $iif_id and $record['oif_id'] == $oif_id)
+                       return;
+       commitSupplementPIC ($iif_id, $oif_id);
+}
+
 $msgcode['doSNMPmining']['ERR1'] = 161;
 $msgcode['doSNMPmining']['ERR2'] = 162;
 $msgcode['doSNMPmining']['OK'] = 81;
@@ -541,7 +565,9 @@ function doSwitchSNMPmining ($objectInfo, $hostname, $community)
                $sysChassi = @snmpget ($hostname, $community, '1.3.6.1.4.1.9.3.6.3.0');
                if ($sysChassi !== FALSE or $sysChassi !== NULL)
                        updateStickerForCell ($objectInfo, 1, str_replace ('"', '', substr ($sysChassi, strlen ('STRING: '))));
-               commitAddPort ($objectInfo['id'], 'con0', 29, 'console', ''); // RJ-45 RS-232 console
+               checkPIC ('1-29');
+               commitAddPort ($objectInfo['id'], 'con0', '1-29', 'console', ''); // RJ-45 RS-232 console
+               checkPIC ('1-16');
                commitAddPort ($objectInfo['id'], 'AC-in', '1-16', '', ''); // AC input
                $log = mergeLogs ($log, oneLiner (81, array ('catalyst-generic')));
                break;
@@ -556,6 +582,7 @@ function doSwitchSNMPmining ($objectInfo, $hostname, $community)
                if (array_key_exists ($major_line, $nxos_codes))
                        updateStickerForCell ($objectInfo, 4, $nxos_codes[$major_line]);
                updateStickerForCell ($objectInfo, 5, $exact_release);
+               checkPIC ('1-29');
                commitAddPort ($objectInfo['id'], 'con0', '1-29', 'console', ''); // RJ-45 RS-232 console
                $log = mergeLogs ($log, oneLiner (81, array ('nexus-generic')));
                break;
@@ -565,15 +592,18 @@ function doSwitchSNMPmining ($objectInfo, $hostname, $community)
                $log = mergeLogs ($log, oneLiner (81, array ('procurve-generic')));
                break;
        case preg_match ('/^4526\.100\.2\./', $sysObjectID): // NETGEAR
-               commitAddPort ($objectInfo['id'], 'console', 681, 'console', ''); // DB-9 RS-232 console
+               checkPIC ('1-681');
+               commitAddPort ($objectInfo['id'], 'console', '1-681', 'console', ''); // DB-9 RS-232 console
                $log = mergeLogs ($log, oneLiner (81, array ('netgear-generic')));
                break;
        case preg_match ('/^2011\.2\.23\./', $sysObjectID): // Huawei
-               commitAddPort ($objectInfo['id'], 'console', 681, 'console', ''); // DB-9 RS-232 console
+               checkPIC ('1-681');
+               commitAddPort ($objectInfo['id'], 'console', '1-681', 'console', ''); // DB-9 RS-232 console
                $log = mergeLogs ($log, oneLiner (81, array ('huawei-generic')));
                break;
        case preg_match ('/^2636\.1\.1\.1\.2\./', $sysObjectID): // Juniper
-               commitAddPort ($objectInfo['id'], 'console', 681, 'console', ''); // DB-9 RS-232 console
+               checkPIC ('1-681');
+               commitAddPort ($objectInfo['id'], 'console', '1-681', 'console', ''); // DB-9 RS-232 console
                $log = mergeLogs ($log, oneLiner (81, array ('juniper-generic')));
        default: // Nortel...
                break;
@@ -616,6 +646,7 @@ function doSwitchSNMPmining ($objectInfo, $hostname, $community)
                        if (!$count)
                                continue; // try next processor on current port
                        $newlabel = preg_replace ($iftable_processors[$processor_name]['pattern'], $iftable_processors[$processor_name]['label'], $iface['ifDescr'], 1, $count);
+                       checkPIC ($iftable_processors[$processor_name]['dict_key']);
                        commitAddPort ($objectInfo['id'], $newname, $iftable_processors[$processor_name]['dict_key'], $newlabel, $iface['ifPhysAddress']);
                        if (!$iftable_processors[$processor_name]['try_next_proc']) // done with this port
                                continue 2;
@@ -637,11 +668,13 @@ function doPDUSNMPmining ($objectInfo, $hostname, $community)
        updateStickerForCell ($objectInfo, 1, $switch->getHWSerial());
        updateStickerForCell ($objectInfo, 3, $switch->getName());
        updateStickerForCell ($objectInfo, 5, $switch->getFWRev());
+       checkPIC ('1-16');
        commitAddPort ($objectInfo['id'], 'input', '1-16', 'input', '');
        $portno = 1;
        foreach ($switch->getPorts() as $name => $port)
        {
                $label = mb_strlen ($port[0]) ? $port[0] : $portno;
+               checkPIC ('1-1322');
                commitAddPort ($objectInfo['id'], $portno, '1-1322', $port[0], '');
                $portno++;
        }
index 6b47a7b..e829026 100644 (file)
@@ -386,6 +386,6 @@ INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, descriptio
 ('DEFAULT_PORT_IIF_ID','1','uint','no','no','Default port inner interface ID'),
 ('DEFAULT_PORT_OIF_IDS','1=24; 3=1078; 4=1077; 5=1079; 6=1080; 8=1082; 9=1084','string','no','no','Default port outer interface IDs'),
 ('IPV4_TREE_RTR_AS_CELL','yes','string','no','no','Show full router info for each network in IPv4 tree view'),
-('DB_VERSION','0.17.4','string','no','yes','Database version.');
+('DB_VERSION','0.17.5','string','no','yes','Database version.');
 
 INSERT INTO `Script` VALUES ('RackCode','allow {$userid_1}');
index fcfb146..9f2b261 100644 (file)
@@ -330,6 +330,9 @@ CREATE TABLE `LDAPCache` (
                        $query[] = 'INSERT INTO PortCompat (type1, type2) VALUES (1206,1207)';
                        $query[] = 'INSERT INTO PortCompat (type1, type2) VALUES (1207,1206)';
                        $query[] = 'INSERT INTO PortCompat (type1, type2) VALUES (1316,1316)';
+                       $query[] = 'INSERT INTO PortCompat (type1, type2) VALUES (16, 1322)';
+                       $query[] = 'INSERT INTO PortCompat (type1, type2) VALUES (1322, 16)';
+                       $query[] = 'DELETE FROM PortCompat WHERE type1 = 16 AND type2 = 16';
                        for ($i = 1209; $i <= 1300; $i++)
                                $query[] = "INSERT INTO PortCompat (type1, type2) VALUES (${i}, ${i})";
                        $query[] = "
@@ -371,7 +374,7 @@ CREATE TABLE `PortInterfaceCompat` (
                        $base10000 = array (30, 35, 36, 37, 38, 39, 40);
                        $PICdata = array
                        (
-                               1 => array (16, 19, 24, 29, 31, 33, 446, 681, 682),
+                               1 => array (16, 19, 24, 29, 31, 33, 446, 681, 682, 1322),
                                2 => array (1208, 1195, 1196, 1197, 1198, 1199, 1200, 1201),
                                3 => array_merge (array (1078), $base1000),
                                4 => array_merge (array (1077), $base1000),
@@ -392,20 +395,16 @@ CREATE TABLE `PortInterfaceCompat` (
                                foreach ($oif_ids as $oif_id)
                                        $query[] = "INSERT INTO PortInterfaceCompat (iif_id, oif_id) VALUES (${iif_id}, ${oif_id})";
                        $query[] = "ALTER TABLE Port ADD CONSTRAINT `Port-FK-iif-oif` FOREIGN KEY (`iif_id`, `type`) REFERENCES `PortInterfaceCompat` (`iif_id`, `oif_id`)";
+                       $query[] = 'UPDATE Port SET type = 1322 WHERE type = 16 AND (SELECT objtype_id FROM RackObject WHERE id = object_id) IN (2, 12)';
                        $query = array_merge ($query, reloadDictionary ($batchid));
                        $query[] = "DELETE FROM Config WHERE varname = 'default_port_type'";
                        $query[] = "INSERT INTO Config VALUES ('DEFAULT_PORT_IIF_ID','1','uint','no','no','Default port inner interface ID')";
                        $query[] = "INSERT INTO Config VALUES ('DEFAULT_PORT_OIF_IDS','1=24; 3=1078; 4=1077; 5=1079; 6=1080; 8=1082; 9=1084','string','no','no','Default port outer interface IDs')";
                        $query[] = "INSERT INTO Config VALUES ('IPV4_TREE_RTR_AS_CELL','yes','string','no','no','Show full router info for each network in IPv4 tree view')";
-
                        $query[] = "UPDATE Chapter SET name = 'PortOuterInterface' WHERE id = 2";
                        // remap refs to duplicate records, which will be discarded (ticket:286)
                        $query[] = 'UPDATE AttributeValue SET uint_value = 147 WHERE uint_value = 1020 AND attr_id = 2';
                        $query[] = 'UPDATE AttributeValue SET uint_value = 377 WHERE uint_value = 1021 AND attr_id = 2';
-                       $query[] = 'INSERT INTO PortInterfaceCompat (iif_id, oif_id) VALUES (1, 1322)';
-                       $query[] = 'DELETE FROM PortCompat WHERE type1 = 16 AND type2 = 16';
-                       $query[] = 'INSERT INTO PortCompat (type1, type2) VALUES (16, 1322), (1322, 16)';
-                       $query[] = 'UPDATE Port SET type = 1322 WHERE type = 16 AND (SELECT objtype_id FROM RackObject WHERE id = object_id) IN (2, 12)';
                        $query[] = 'INSERT INTO AttributeMap (objtype_id, attr_id) VALUES (2, 1), (2, 3), (2, 5)';
                        $query[] = "UPDATE Config SET varvalue = '0.17.5' WHERE varname = 'DB_VERSION'";
                        break;