diff --git a/html/includes/forms/update-ifalias.inc.php b/html/includes/forms/update-ifalias.inc.php
index e561aa5e1b..55a10e47c7 100644
--- a/html/includes/forms/update-ifalias.inc.php
+++ b/html/includes/forms/update-ifalias.inc.php
@@ -29,7 +29,7 @@ if (!empty($ifName) && is_numeric($port_id)) {
}
if (dbUpdate(array('ifAlias'=>$descr), 'ports', '`port_id`=?', array($port_id)) > 0) {
$device = device_by_id_cache($device_id);
- if (empty($descr)) {
+ if ($descr === 'repoll') {
del_dev_attrib($device, 'ifName');
}
else {
diff --git a/includes/common.php b/includes/common.php
index 32e6e65af1..12ba527711 100644
--- a/includes/common.php
+++ b/includes/common.php
@@ -435,8 +435,13 @@ function get_dev_entity_state($device) {
return $state;
}
-function get_dev_attrib($device, $attrib_type) {
- if ($row = dbFetchRow("SELECT attrib_value FROM devices_attribs WHERE `device_id` = ? AND `attrib_type` = ?", array($device['device_id'], $attrib_type))) {
+function get_dev_attrib($device, $attrib_type, $attrib_value='') {
+ $params = array($device['device_id'], $attrib_type);
+ if (!empty($attrib_value)) {
+ $sql = " AND `attrib_value`=?";
+ array_push($params, $attrib_value);
+ }
+ if ($row = dbFetchRow("SELECT attrib_value FROM devices_attribs WHERE `device_id` = ? AND `attrib_type` = ? $sql", $params)) {
return $row['attrib_value'];
}
else {
diff --git a/includes/polling/ports.inc.php b/includes/polling/ports.inc.php
index 1656720de9..7b139029fe 100644
--- a/includes/polling/ports.inc.php
+++ b/includes/polling/ports.inc.php
@@ -333,6 +333,13 @@ foreach ($ports as $port) {
// Update IF-MIB data
foreach ($data_oids as $oid) {
+
+ if ($oid == 'ifAlias') {
+ if (get_dev_attrib($device, 'ifName', $port['ifName'])) {
+ $this_port['ifAlias'] = $port['ifAlias'];
+ }
+ }
+
if ($port[$oid] != $this_port[$oid] && !isset($this_port[$oid])) {
$port['update'][$oid] = array('NULL');
log_event($oid.': '.$port[$oid].' -> NULL', $device, 'interface', $port['port_id']);