$entry) { $juniper_vlans[$id] = $vlanidsbyname[$entry['dot1qVlanStaticName']]; } } unset($vlanidsbyname); } // Dell OS10 return strange additional num, see: // https://jira.observium.org/browse/OBS-3213 //dot1qTpFdbPort[4][6:0:24:38:93:c8].0 = 59 //dot1qTpFdbPort[4][6:0:50:56:95:51].221 = 59 $dot1qTpFdbEntry_table = snmpwalk_cache_oid($device, 'dot1qTpFdbEntry', [], 'Q-BRIDGE-MIB', NULL, OBS_SNMP_ALL_NUMERIC_INDEX); if (snmp_status()) { // Build dot1dBasePort foreach (snmpwalk_cache_oid($device, 'dot1dBasePortIfIndex', [], 'BRIDGE-MIB') as $dot1dbaseport => $entry) { $dot1dBasePort_table[$dot1dbaseport] = $port_ifIndex_table[$entry['dot1dBasePortIfIndex']]; } foreach ($dot1qTpFdbEntry_table as $index => $entry) { $index_array = explode('.', $index); $vlan = array_shift($index_array); if (count($index_array) > 6) { // Remove first (strange, incorrect) mac part array_shift($index_array); } // reimplode index to mac $mac = ''; foreach ($index_array as $mac_num) { $mac .= dechex($mac_num) . ':'; } $mac = mac_zeropad(trim($mac, ':')); // if we have a translated vlan id for Juniper, use it if (isset($juniper_vlans[$vlan])) { $vlan = $juniper_vlans[$vlan]; } $fdb_port = $entry['dot1qTpFdbPort']; $data = []; $data['port_id'] = $dot1dBasePort_table[$fdb_port]['port_id']; $data['port_index'] = isset($dot1dBasePort_table[$fdb_port]) ? $dot1dBasePort_table[$fdb_port]['ifIndex'] : $fdb_port; $data['fdb_status'] = $entry['dot1qTpFdbStatus']; $fdbs[$vlan][$mac] = $data; } } unset($juniper_vlans, $dot1qTpFdbEntry_table, $dot1dBasePort_table); // EOF