- add SNMP support for more 7200VXR modules described in #1371 aaron-snmp-modular
authorAaron Dummer <aaron@dummer.info>
Sat, 10 Jan 2015 23:27:38 +0000 (15:27 -0800)
committerAaron Dummer <aaron@dummer.info>
Sat, 10 Jan 2015 23:27:38 +0000 (15:27 -0800)
- add the 'Network module' object type
- add BNC, RJ-48C & DB-15 port types

ChangeLog
wwwroot/inc/dictionary.php
wwwroot/inc/install.php
wwwroot/inc/snmp.php
wwwroot/inc/upgrade.php

index bd5a0bf..0c32227 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,7 @@
 0.21.0
        update: explicitly require PHP version 5.3.0 or newer
-       update: SNMP support for Cisco 2801 (#779), 2821 (#775), 7206VXR (#483),
+       update: SNMP support for Cisco 2801 (#779), 2821 (#775),
+               7206VXR (G1 SUP: #1371, G2 SUP: #483),
                WS-C6509-E (#338), WS-C4503 (#528), HP J8698A (#351) by Aaron Dummer
        update: display ports & IPs of contained objects (#797)
 0.20.9
index 6ed2a7b..8cf932b 100644 (file)
@@ -114,6 +114,7 @@ $dictionary = array
        13 => array ('chapter_id' => 1, 'dict_value' => 'Modem'),
        14 => array ('chapter_id' => 1, 'dict_value' => 'MediaConverter'),
        15 => array ('chapter_id' => 1, 'dict_value' => 'console'),
+       16 => array ('chapter_id' => 1, 'dict_value' => 'Network module'),
        42 => array ('chapter_id' => 11, 'dict_value' => 'noname/unknown'),
        43 => array ('chapter_id' => 11, 'dict_value' => 'IBM xSeries%GPASS%305'),
        44 => array ('chapter_id' => 11, 'dict_value' => 'IBM xSeries%GPASS%306'),
@@ -2111,7 +2112,11 @@ $dictionary = array
        2502 => array ('chapter_id' => 12, 'dict_value' => 'Cisco (blade)%GPASS%WS-X6K-SUP2-2GE'),
        2503 => array ('chapter_id' => 12, 'dict_value' => 'Cisco (blade)%GPASS%WS-X4515'),
        2504 => array ('chapter_id' => 12, 'dict_value' => 'Cisco (blade)%GPASS%WS-X4548-GB-RJ45'),
-       2505 => array ('chapter_id' => 17, 'dict_value' => 'Cisco (blade)%GPASS%NPE-G2'),
+       2505 => array ('chapter_id' => 39, 'dict_value' => 'Cisco (blade)%GPASS%NPE-G2'),
+       2506 => array ('chapter_id' => 39, 'dict_value' => 'Cisco (blade)%GPASS%NPE-G1'),
+       2507 => array ('chapter_id' => 39, 'dict_value' => 'Cisco (blade)%GPASS%PA-MC-4T1'),
+       2508 => array ('chapter_id' => 39, 'dict_value' => 'Cisco (blade)%GPASS%PA-MC-8TE1'),
+       2509 => array ('chapter_id' => 39, 'dict_value' => 'Cisco (blade)%GPASS%PA-T3'),
 
 # Any new "default" dictionary records must go above this line (i.e., with
 # dict_key code less, than 50000). This is necessary to keep AUTO_INCREMENT
index d25ece5..f444218 100644 (file)
@@ -1456,6 +1456,7 @@ WHERE O.objtype_id = 1562";
 (36,'no','serial console server models'),
 (37,'no','wireless OS type'),
 (38,'no','management interface type'),
+(39,'no','network module models'),
 -- Default chapters must have ID less than 10000, add them above this line.
 (9999,'no','multiplexer models')";
 
@@ -1514,6 +1515,19 @@ WHERE O.objtype_id = 1562";
 (12,13,NULL,'no'),
 (12,20,NULL,'no'),
 (15,2,23,'no'),
+(16,1,NULL,'no'),
+(16,2,39,'no'),
+(16,3,NULL,'no'),
+(16,5,NULL,'no'),
+(16,14,NULL,'no'),
+(16,16,NULL,'no'),
+(16,17,NULL,'no'),
+(16,18,NULL,'no'),
+(16,20,NULL,'no'),
+(16,21,NULL,'no'),
+(16,22,NULL,'no'),
+(16,24,NULL,'no'),
+(16,28,NULL,'no'),
 (445,1,NULL,'no'),
 (445,2,21,'no'),
 (445,3,NULL,'no'),
@@ -1680,6 +1694,9 @@ WHERE O.objtype_id = 1562";
 (11,'CFP')";
 
                $query[] = "INSERT INTO `PortOuterInterface` VALUES
+(13,'BNC'),
+(14,'T1/E1 (RJ-48C)'),
+(15,'RS-232 (DB-15)'),
 (16,'AC-in'),
 (17,'10Base2'),
 (18,'10Base-T'),
@@ -1925,9 +1942,12 @@ WHERE O.objtype_id = 1562";
 (3,13),
 (4,1504),
 (4,1507),
+(7,16),
+(16,16),
 (1397,1398),
 (1502,4),
 (1503,8),
+(1503,16),
 (1505,4),
 (1505,1504),
 (1505,1506),
@@ -1948,9 +1968,14 @@ WHERE O.objtype_id = 1562";
 (9,1084),(9,30),(9,35),(9,36),(9,37),(9,38),(9,39),(9,40),
 (10,1588),(10,1660),(10,1662),(10,1663),(10,1664),
 (11,1668),(11,1669),(11,1670),(11,1671),(11,1672),(11,1673),(11,1674),
-(1,16),(1,19),(1,24),(1,29),(1,31),(1,33),(1,446),(1,681),(1,682),(1,1322),(1,1399),(1,1469)";
+(1,13),(1,14),(1,15),(1,16),(1,19),(1,24),(1,29),(1,31),(1,33),(1,446),(1,681),(1,682),(1,1322),(1,1399),(1,1469)";
 
                $query[] = "INSERT INTO `PortCompat` (`type1`, `type2`) VALUES
+(13,13),
+(14,14),
+(14,15),
+(15,14),
+(15,15),
 (17,17),
 (18,18),
 (19,19),
index 807c1b1..45ce95f 100644 (file)
@@ -1979,6 +1979,33 @@ $iftable_processors['procurve-module-21-to-24-1000SFP'] = array
        'try_next_proc' => FALSE,
 );
 
+$iftable_processors['cisco-module-0-to-4-RJ48C'] = array
+(
+       'pattern' => '@^T1 (\d+)/(\d+)$@',
+       'replacement' => 't1 \\1/\\2',
+       'dict_key' => 14,
+       'label' => '\\2',
+       'try_next_proc' => FALSE,
+);
+
+$iftable_processors['cisco-module-0-to-8-RJ48C'] = array
+(
+       'pattern' => '@^T1(\d+)/(\d+)$@',
+       'replacement' => 't1 \\1/\\2',
+       'dict_key' => 14,
+       'label' => '\\2',
+       'try_next_proc' => FALSE,
+);
+
+$iftable_processors['cisco-module-serial-bnc'] = array
+(
+       'pattern' => '@^Serial(\d+)/(\d+)$@',
+       'replacement' => 'ser\\1/\\2',
+       'dict_key' => 13,
+       'label' => 'RCVR/XMTR',
+       'try_next_proc' => FALSE,
+);
+
 global $known_devices;
 $known_devices = array // key is system OID w/o "enterprises" prefix
 (
@@ -3447,6 +3474,13 @@ $known_modules = array
                'text' => 'J9478A: 24 RJ-45/10-100 PoE+',
                'processors' => array ('procurve-module-100TX'),
        ),
+       'NPE-G1' => array
+       (
+               'pattern' => '@^NPE-G1@',
+               'dict_key' => 2506,
+               'text' => 'NPE-G1: processing engine',
+               'processors' => array ('catalyst-chassis-1-to-3-combo-1000SFP', 'catalyst-chassis-any-1000T'),
+       ),
        'NPE-G2' => array
        (
                'pattern' => '@^NPE-G2@',
@@ -3454,6 +3488,27 @@ $known_modules = array
                'text' => 'NPE-G2: processing engine',
                'processors' => array ('catalyst-chassis-1-to-3-combo-1000SFP', 'catalyst-chassis-any-1000T'),
        ),
+       'PA-MC-4T1' => array
+       (
+               'pattern' => '@^PA-4T1@',
+               'dict_key' => 2507,
+               'text' => 'PA-MC-4T1: 4 RJ-48C T1/E1',
+               'processors' => array ('cisco-module-0-to-4-RJ48C'),
+       ),
+       'PA-MC-8TE1' => array
+       (
+               'pattern' => '@^PA-MC-8TE1\+@',
+               'dict_key' => 2508,
+               'text' => 'PA-MC-8TE1: 4 RJ-48C T1/E1',
+               'processors' => array ('cisco-module-0-to-8-RJ48C'),
+       ),
+       'PA-T3' => array
+       (
+               'pattern' => '@^PA-T3@',
+               'dict_key' => 2509,
+               'text' => 'PA-T3: T3 w/BNC connectors',
+               'processors' => array ('cisco-module-serial-bnc'),
+       ),
        'WS-X4515' => array
        (
                'pattern' => '@^WS-X4515@',
@@ -3633,6 +3688,7 @@ $chapter_to_objtype_map = array
        27 => 2,
        30 => 1503,
        38 => 1787,
+       39 => 16,
 );
 
 function updateStickerForCell ($cell, $attr_id, $new_value)
@@ -3713,10 +3769,10 @@ function addModules ($parent_id, $object_id, $module_key = NULL)
                                // If that is true, use the id instead, which can be assumed to be unique.
                                $module_name_known = TRUE;
                                $module_name = $snmp_data['entPhysicalName'][$id];
-                               if (strlen ($snmp_data['entPhysicalName'][$id]) > 3)
+                               if (count (array_keys ($snmp_data['entPhysicalName'], $module_name)) > 1)
                                {
                                        $module_name_known = FALSE;
-                                       $module_name = $id;
+                                       $module_name = "module $id";
                                }
 
                                // determine object type
@@ -3728,7 +3784,7 @@ function addModules ($parent_id, $object_id, $module_key = NULL)
                                }
 
                                $objtype_id = $chapter_to_objtype_map[$dict_entry['chapter_id']];
-                               $child_object_id = commitAddObject ("${objectInfo['name']} - module ${module_name}", NULL, $objtype_id, NULL);
+                               $child_object_id = commitAddObject ("${objectInfo['name']} - ${module_name}", NULL, $objtype_id, NULL);
                                $child_objectInfo = spotEntity ('object', $child_object_id);
                                $child_objectInfo['attrs'] = getAttrValues ($child_object_id);
                                updateStickerForCell ($child_objectInfo, 1, $snmp_data['entPhysicalSerialNum'][$id]); // OEM S/N 1
@@ -3745,6 +3801,7 @@ function addModules ($parent_id, $object_id, $module_key = NULL)
                                        checkPIC ('1-681');
                                        commitAddPort ($child_object_id, 'con0', '1-681', 'console', ''); // DB-9 RS-232 console
                                        break;
+                               case 'NPE-G1':
                                case 'NPE-G2':
                                        checkPIC ('1-29');
                                        commitAddPort ($child_object_id, 'con0', '1-29', 'console', ''); // RJ-45 RS-232 console
@@ -3788,14 +3845,14 @@ function addModulePort ($ent_id, $object_id, $module_key)
                        showError ('PCRE pattern error, terminating');
                        break;
                }
-               if (!$count)
+               if (! $count)
                        continue; // try next processor on current port
                $newlabel = preg_replace ($iftable_processors[$processor_name]['pattern'], $iftable_processors[$processor_name]['label'], $snmp_data['entPhysicalName'][$ent_id], 1, $count);
                checkPIC ($iftable_processors[$processor_name]['dict_key']);
                // By default, the 'skip_macs' key of the known_switch_modules array doesn't exist.  If it does exist, it can be assumed that it's true.
                $mac = (isset ($known_modules[$module_key]['skip_macs'])) ? NULL : $snmp_data['ifPhysAddress'][$ifId];
                commitAddPort ($object_id, $newname, $iftable_processors[$processor_name]['dict_key'], $newlabel, $mac);
-               if (!$iftable_processors[$processor_name]['try_next_proc']) // done with this port
+               if (! $iftable_processors[$processor_name]['try_next_proc']) // done with this port
                        break;
        }
 }
@@ -3880,6 +3937,7 @@ function doGenericSNMPmining ($device)
                // some models have the console port located on a module instead of the chassis
                $no_console = array
                (
+                       '9.1.222',
                        '9.1.283',
                        '9.1.503'
                );
@@ -3892,6 +3950,7 @@ function doGenericSNMPmining ($device)
                        commitAddPort ($objectInfo['id'], 'aux0', '1-29', 'auxillary', ''); // RJ-45 RS-232 aux port
                $dual_ac = array
                (
+                       '9.1.222',
                        '9.1.283',
                        '9.1.956'
                );
index 377eab8..b61cd7c 100644 (file)
@@ -1823,6 +1823,17 @@ CREATE TABLE `PatchCableOIFCompat` (
                        // some HW types were moved from the 'Network switch' chapter to the 'Network chassis' chapter
                        // change the type of affected objects to 'Network chassis'
                        $query[] = "UPDATE `Object` SET objtype_id = 1503 WHERE id IN (SELECT object_id FROM `AttributeValue` WHERE attr_id = 2 and uint_value IN (145,146,372,373,374,375))";
+
+                       // add the BNC, RJ-48C and DB-15 port types
+                       $query[] = "INSERT INTO `PortOuterInterface` VALUES (13,'BNC'),(14,'T1/E1 (RJ-48C)'),(15,'RS-232 (DB-15)')";
+                       $query[] = "INSERT INTO `PortInterfaceCompat` VALUES (1,13),(1,14),(1,15)";
+                       $query[] = "INSERT INTO `PortCompat` VALUES (13,13),(14,14),(14,15),(15,14),(15,15)";
+
+                       // add the network modules chapter, compatibility rules and attributes
+                       $query[] = "INSERT INTO `Chapter` VALUES (39,'no','network module models')";
+                       $query[] = "INSERT INTO `ObjectParentCompat` VALUES (7,16),(16,16),(1503,16)";
+                       $query[] = "INSERT INTO `AttributeMap` (`objtype_id`,`attr_id`,`chapter_id`) VALUES (16,1,NULL),(16,2,39),(16,3,NULL),(16,5,NULL),(16,14,NULL),(16,16,NULL),(16,17,NULL),(16,18,NULL),(16,20,NULL),(16,21,NULL),(16,22,NULL),(16,24,NULL),(16,28,NULL)";
+
                        $query[] = "UPDATE Config SET varvalue = '0.21.0' WHERE varname = 'DB_VERSION'";
                        break;
                case 'dictionary':