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,"
","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,"
","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("| Port | Sync Speed | Attainable Speed | Attenuation | SNR Margin | Output Powers |
");
+ $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("
");
+ 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");