diff --git a/database-update.sql b/database-update.sql index cd21137ec..6c8fb937c 100644 --- a/database-update.sql +++ b/database-update.sql @@ -37,3 +37,6 @@ ALTER TABLE `ipv4_addresses` ADD INDEX ( `interface_id` ); ALTER TABLE `ipv6_addresses` ADD INDEX ( `interface_id` ); ALTER TABLE `ipv4_mac` ADD INDEX ( `interface_id` ); CREATE TABLE IF NOT EXISTS `ports_adsl` ( `interface_id` int(11) NOT NULL, `port_adsl_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `adslLineCoding` varchar(8) COLLATE utf8_bin NOT NULL, `adslLineType` varchar(16) COLLATE utf8_bin NOT NULL, `adslAtucInvVendorID` varchar(8) COLLATE utf8_bin NOT NULL, `adslAtucInvVersionNumber` varchar(8) COLLATE utf8_bin NOT NULL, `adslAtucCurrSnrMgn` int(11) NOT NULL, `adslAtucCurrAtn` int(11) NOT NULL, `adslAtucCurrOutputPwr` int(11) NOT NULL, `adslAtucCurrAttainableRate` int(11) NOT NULL, `adslAturInvSerialNumber` varchar(8) COLLATE utf8_bin NOT NULL, `adslAturInvVendorID` varchar(8) COLLATE utf8_bin NOT NULL, `adslAturInvVersionNumber` varchar(8) COLLATE utf8_bin NOT NULL, UNIQUE KEY `interface_id` (`interface_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +ALTER TABLE `ports_adsl` ADD `adslAtucChanCurrTxRate` INT NOT NULL AFTER `adslAtucCurrAttainableRate`; +ALTER TABLE `ports_adsl` ADD `adslAturCurrSnrMgn` int(11) NOT NULL, ADD `adslAturCurrAtn` int(11) NOT NULL, ADD `adslAturCurrOutputPwr` int(11) NOT NULL, ADD `adslAturCurrAttainableRate` INT NOT NULL, ADD `adslAturChanCurrTxRate` INT NOT NULL AFTER `adslAturInvVersionNumber`; +ALTER TABLE `ports_adsl` CHANGE `adslAtucCurrSnrMgn` `adslAtucCurrSnrMgn` DECIMAL( 5, 1 ) NOT NULL ,CHANGE `adslAtucCurrAtn` `adslAtucCurrAtn` DECIMAL( 5, 1 ) NOT NULL ,CHANGE `adslAtucCurrOutputPwr` `adslAtucCurrOutputPwr` DECIMAL( 5, 1 ) NOT NULL ,CHANGE `adslAturCurrSnrMgn` `adslAturCurrSnrMgn` DECIMAL( 5, 1 ) NOT NULL ,CHANGE `adslAturCurrAtn` `adslAturCurrAtn` DECIMAL( 5, 1 ) NOT NULL ,CHANGE `adslAturCurrOutputPwr` `adslAturCurrOutputPwr` DECIMAL( 5, 1 ) NOT NULL; diff --git a/html/includes/graphs/port_adsl_attainable.inc.php b/html/includes/graphs/port_adsl_attainable.inc.php new file mode 100644 index 000000000..ec8a4a708 --- /dev/null +++ b/html/includes/graphs/port_adsl_attainable.inc.php @@ -0,0 +1,39 @@ + diff --git a/html/includes/print-interface-adsl.inc.php b/html/includes/print-interface-adsl.inc.php new file mode 100644 index 000000000..1c80a9dde --- /dev/null +++ b/html/includes/print-interface-adsl.inc.php @@ -0,0 +1,145 @@ +"); +#print_r($interface); +#echo(""); + +# This file prints a table row for each interface + + $interface['device_id'] = $device['device_id']; + $interface['hostname'] = $device['hostname']; + + $if_id = $interface['interface_id']; + + $interface = ifLabel($interface); + + if(!is_integer($i/2)) { $row_colour = $list_colour_a; } else { $row_colour = $list_colour_b; } + + + if($interface['ifInErrors_delta'] > 0 || $interface['ifOutErrors_delta'] > 0) { + $error_img = generateiflink($interface,"Interface Errors","port_errors"); + } else { $error_img = ""; } + + echo(" + "); + + echo(" + " . generateiflink($interface, $interface['ifIndex'] . ". ".$interface['label']) . " + +
".$interface['ifAlias'].""); + + + if($interface['ifAlias']) { echo("
"); } + + unset ($break); + if($port_details) { + $ipdata = mysql_query("SELECT * FROM `ipv4_addresses` WHERE `interface_id` = '" . $interface['interface_id'] . "'"); + while($ip = mysql_fetch_Array($ipdata)) { + echo("$break $ip[ipv4_address]/$ip[ipv4_prefixlen]"); + $break = ","; + } + $ip6data = mysql_query("SELECT * FROM `ipv6_addresses` WHERE `interface_id` = '" . $interface['interface_id'] . "'"); + while($ip6 = mysql_fetch_Array($ip6data)) { + echo("$break ".Net_IPv6::compress($ip6['ipv6_address'])."/".$ip6['ipv6_prefixlen'].""); + $break = ","; + } + } + + echo(""); + + $width="120"; $height="40"; $from = $day; + + echo(""); + echo("".formatRates($interface['adslAtucChanCurrTxRate']) . "/". formatRates($interface['adslAturChanCurrTxRate'])); + echo("
"); + $interface['graph_type'] = "port_adsl_speed"; + echo(generateiflink($interface, "", $interface['graph_type'])); + + echo(""); + echo("".formatRates($interface['adslAtucCurrAttainableRate']) . "/". formatRates($interface['adslAturCurrAttainableRate'])); + echo("
"); + $interface['graph_type'] = "port_adsl_attainable"; + echo(generateiflink($interface, "", $interface['graph_type'])); + + echo(""); + echo("".$interface['adslAtucCurrAtn'] . "dB/". $interface['adslAturCurrAtn'] . "dB"); + echo("
"); + $interface['graph_type'] = "port_adsl_attenuation"; + echo(generateiflink($interface, "", $interface['graph_type'])); + + echo(""); + echo("".$interface['adslAtucCurrSnrMgn'] . "dB/". $interface['adslAturCurrSnrMgn'] . "dB"); + echo("
"); + $interface['graph_type'] = "port_adsl_snr"; + echo(generateiflink($interface, "", $interface['graph_type'])); + + echo(""); + echo("".$interface['adslAtucCurrOutputPwr'] . "dBm/". $interface['adslAturCurrOutputPwr'] . "dBm"); + echo("
"); + $interface['graph_type'] = "port_adsl_power"; + echo(generateiflink($interface, "", $interface['graph_type'])); + + +# if($interface[ifDuplex] != unknown) { echo("Duplex " . $interface['ifDuplex'] . ""); } else { echo("-"); } + + +# echo(""); +# echo($port_adsl['adslLineCoding']."/".$port_adsl['adslLineType']); +# echo("
"); +# echo("Sync:".formatRates($port_adsl['adslAtucChanCurrTxRate']) . "/". formatRates($port_adsl['adslAturChanCurrTxRate'])); +# echo("
"); +# echo("Max:".formatRates($port_adsl['adslAtucCurrAttainableRate']) . "/". formatRates($port_adsl['adslAturCurrAttainableRate'])); +# echo(""); +# echo("Atten:".$port_adsl['adslAtucCurrAtn'] . "dB/". $port_adsl['adslAturCurrAtn'] . "dB"); +# echo("
"); +# echo("SNR:".$port_adsl['adslAtucCurrSnrMgn'] . "dB/". $port_adsl['adslAturCurrSnrMgn']. "dB"); + + + +echo(""); + + if($graph_type == "etherlike") + { + $graph_file = $config['rrd_dir'] . "/" . $device['hostname'] . "/etherlike-". safename($interface['ifIndex']) . ".rrd"; + } else { + $graph_file = $config['rrd_dir'] . "/" . $device['hostname'] . "/". safename($interface['ifIndex']) . ".rrd"; + } + + if($graph_type && is_file($graph_file)) { + + $type = $graph_type; + + $daily_traffic = "graph.php?port=$if_id&type=" . $graph_type . "&from=$from&to=$now&width=210&height=100"; + $daily_url = "graph.php?port=$if_id&type=" . $graph_type . "&from=$from&to=$now&width=500&height=150"; + + $weekly_traffic = "graph.php?port=$if_id&type=" . $graph_type . "&from=$week&to=$now&width=210&height=100"; + $weekly_url = "graph.php?port=$if_id&type=" . $graph_type . "&from=$week&to=$now&width=500&height=150"; + + $monthly_traffic = "graph.php?port=$if_id&type=" . $graph_type . "&from=$month&to=$now&width=210&height=100"; + $monthly_url = "graph.php?port=$if_id&type=" . $graph_type . "&from=$month&to=$now&width=500&height=150"; + + $yearly_traffic = "graph.php?port=$if_id&type=" . $graph_type . "&from=$year&to=$now&width=210&height=100"; + $yearly_url = "graph.php?port=$if_id&type=" . $graph_type . "&from=$year&to=$now&width=500&height=150"; + + echo(""); + + echo("', LEFT".$config['overlib_defaults'].");\" + onmouseout=\"return nd();\"> "); + echo("', LEFT".$config['overlib_defaults'].");\" + onmouseout=\"return nd();\"> "); + echo("', LEFT, WIDTH, 350".$config['overlib_defaults'].");\" + onmouseout=\"return nd();\"> "); + echo("', LEFT, WIDTH, 350".$config['overlib_defaults'].");\" + onmouseout=\"return nd();\"> "); + + echo(""); + + } + + ?> diff --git a/html/includes/print-interface.inc.php b/html/includes/print-interface.inc.php index a002b684e..209baf916 100644 --- a/html/includes/print-interface.inc.php +++ b/html/includes/print-interface.inc.php @@ -15,6 +15,10 @@ if(!is_integer($i/2)) { $row_colour = $list_colour_a; } else { $row_colour = $list_colour_b; } + $port_adsl_query = mysql_query("SELECT * FROM `ports_adsl` WHERE `interface_id` = '".$interface['interface_id']."'"); + $port_adsl = mysql_fetch_assoc($port_adsl_query); + + if($interface['ifInErrors_delta'] > 0 || $interface['ifOutErrors_delta'] > 0) { $error_img = generateiflink($interface,"Interface Errors","port_errors"); } else { $error_img = ""; } @@ -88,16 +92,30 @@ echo("" . $vrf['vrf_name'] . ""); } } + if($port_adsl['adslLineCoding']) { - echo(""); - if($interface['ifType'] && $interface['ifType'] != "") { echo("" . fixiftype($interface['ifType']) . ""); } else { echo("-"); } - echo("
"); - if($ifHardType && $ifHardType != "") { echo("" . $ifHardType . ""); } else { echo("-"); } - echo(""); - if($interface['ifPhysAddress'] && $interface['ifPhysAddress'] != "") { echo("" . $interface['ifPhysAddress'] . ""); } else { echo("-"); } - echo("
"); - if($interface['ifMtu'] && $interface['ifMtu'] != "") { echo("MTU " . $interface['ifMtu'] . ""); } else { echo("-"); } + echo(""); + echo($port_adsl['adslLineCoding']."/".$port_adsl['adslLineType']); + echo("
"); + echo("Sync:".formatRates($port_adsl['adslAtucChanCurrTxRate']) . "/". formatRates($port_adsl['adslAturChanCurrTxRate'])); + echo("
"); + echo("Max:".formatRates($port_adsl['adslAtucCurrAttainableRate']) . "/". formatRates($port_adsl['adslAturCurrAttainableRate'])); + echo(""); + echo("Atten:".$port_adsl['adslAtucCurrAtn'] . "dB/". $port_adsl['adslAturCurrAtn'] . "dB"); + echo("
"); + echo("SNR:".$port_adsl['adslAtucCurrSnrMgn'] . "dB/". $port_adsl['adslAturCurrSnrMgn']. "dB"); + + } else { + echo(""); + if($interface['ifType'] && $interface['ifType'] != "") { echo("" . fixiftype($interface['ifType']) . ""); } else { echo("-"); } + echo("
"); + if($ifHardType && $ifHardType != "") { echo("" . $ifHardType . ""); } else { echo("-"); } + echo(""); + if($interface['ifPhysAddress'] && $interface['ifPhysAddress'] != "") { echo("" . $interface['ifPhysAddress'] . ""); } else { echo("-"); } + echo("
"); + if($interface['ifMtu'] && $interface['ifMtu'] != "") { echo("MTU " . $interface['ifMtu'] . ""); } else { echo("-"); } + } #} echo(""); diff --git a/html/pages/device/ports.inc.php b/html/pages/device/ports.inc.php index d1c027ba9..59fd9c46d 100644 --- a/html/pages/device/ports.inc.php +++ b/html/pages/device/ports.inc.php @@ -8,7 +8,9 @@ print_optionbar_start(); echo("Basic | Details | -ARP Table | Graphs: "); +ARP Table | +ADSL | +Graphs: "); $graph_types = array("bits" => "Bits", "upkts" => "Unicast Packets", @@ -51,6 +53,18 @@ if($_GET['optc'] == thumbs) { } else { if($_GET['opta'] == "arp" ) { include("arp.inc.php"); + } elseif($_GET['opta'] == "adsl") { + echo("
"); + + echo(""); + $i = "0"; + $interface_query = mysql_query("select * from `ports` AS P, `ports_adsl` AS A WHERE P.device_id = '".$device['device_id']."' AND A.interface_id = P.interface_id AND P.deleted = '0' ORDER BY `ifIndex` ASC"); + while($interface = mysql_fetch_array($interface_query)) { + include("includes/print-interface-adsl.inc.php"); + $i++; + } + echo("
PortSync SpeedAttainable SpeedAttenuationSNR MarginOutput Powers
"); + echo("
"); } else { if($_GET['opta'] == "details" ) { $port_details = 1; } echo("
"); diff --git a/includes/polling/port-adsl.inc.php b/includes/polling/port-adsl.inc.php index 27be0297f..bdc486e17 100755 --- a/includes/polling/port-adsl.inc.php +++ b/includes/polling/port-adsl.inc.php @@ -48,7 +48,15 @@ $adsl_oids = array('AtucCurrSnrMgn','AtucCurrAtn','AtucCurrOutputPwr','AtucCurrAttainableRate','AtucChanCurrTxRate','AturCurrSnrMgn','AturCurrAtn','AturCurrOutputPwr','AturCurrAttainableRate','AturChanCurrTxRate','AtucPerfLofs','AtucPerfLoss','AtucPerfLprs','AtucPerfESs','AtucPerfInits','AturPerfLofs','AturPerfLoss','AturPerfLprs','AturPerfESs','AtucChanCorrectedBlks','AtucChanUncorrectBlks','AturChanCorrectedBlks','AturChanUncorrectBlks'); - $adsl_db_oids = array('adslLineCoding','adslLineType','adslAtucInvVendorID','adslAtucInvVersionNumber','adslAtucCurrSnrMgn','adslAtucCurrAtn','adslAtucCurrOutputPwr','adslAtucCurrAttainableRate','adslAturInvSerialNumber','adslAturInvVendorID','adslAturInvVersionNumber'); + $adsl_db_oids = array('adslLineCoding','adslLineType','adslAtucInvVendorID','adslAtucInvVersionNumber','adslAtucCurrSnrMgn','adslAtucCurrAtn','adslAtucCurrOutputPwr', + 'adslAtucCurrAttainableRate','adslAturInvSerialNumber','adslAturInvVendorID','adslAturInvVersionNumber', 'adslAtucChanCurrTxRate', + 'adslAturChanCurrTxRate', 'adslAturCurrSnrMgn', 'adslAturCurrAtn', 'adslAturCurrOutputPwr', 'adslAturCurrAttainableRate'); + + $adsl_tenth_oids = array('adslAtucCurrSnrMgn','adslAtucCurrAtn','adslAtucCurrOutputPwr','adslAturCurrSnrMgn', 'adslAturCurrAtn', 'adslAturCurrOutputPwr'); + + foreach($adsl_tenth_oids as $oid) { + $this_port[$oid] = $this_port[$oid] / 10; + } if(mysql_result(mysql_query("SELECT COUNT(*) FROM `ports_adsl` WHERE `interface_id` = '".$port['interface_id']."'"),0) == "0") { mysql_query("INSERT INTO `ports_adsl` (`interface_id`) VALUES ('".$port['interface_id']."')"); } $mysql_update = "UPDATE `ports_adsl` SET `port_adsl_updated` = NOW()"; diff --git a/includes/polling/ports.inc.php b/includes/polling/ports.inc.php index 47a8f7cc3..8088a0517 100755 --- a/includes/polling/ports.inc.php +++ b/includes/polling/ports.inc.php @@ -32,7 +32,9 @@ if($config['enable_ports_etherlike']) { echo("dot3Stats "); $array = snmp_cache_oid("dot3StatsEntry", $device, $array, "EtherLike-MIB"); } if($config['enable_ports_adsl']) { - echo("adsl "); $array = snmp_cache_oid(".1.3.6.1.2.1.10.94.1.1.2.1", $device, $array, "ADSL-LINE-MIB"); + echo("adsl "); + $array = snmp_cache_oid(".1.3.6.1.2.1.10.94.1.1.1.1", $device, $array, "ADSL-LINE-MIB"); + $array = snmp_cache_oid(".1.3.6.1.2.1.10.94.1.1.2.1", $device, $array, "ADSL-LINE-MIB"); $array = snmp_cache_oid(".1.3.6.1.2.1.10.94.1.1.3.1", $device, $array, "ADSL-LINE-MIB"); $array = snmp_cache_oid(".1.3.6.1.2.1.10.94.1.1.4.1", $device, $array, "ADSL-LINE-MIB"); $array = snmp_cache_oid(".1.3.6.1.2.1.10.94.1.1.5.1", $device, $array, "ADSL-LINE-MIB");