diff --git a/datamodels/2.x/itop-config-mgmt/datamodel.itop-config-mgmt.xml b/datamodels/2.x/itop-config-mgmt/datamodel.itop-config-mgmt.xml index c54464546..8f7e7f2ce 100755 --- a/datamodels/2.x/itop-config-mgmt/datamodel.itop-config-mgmt.xml +++ b/datamodels/2.x/itop-config-mgmt/datamodel.itop-config-mgmt.xml @@ -4950,12 +4950,12 @@ ip - 0.0.0.0 + false ip_mask - 0.0.0.0 + false @@ -4976,47 +4976,47 @@ { parent::DisplayBareRelations($oPage, $bEditMode); - $oPage->SetCurrentTab('Class:Subnet/Tab:IPUsage'); + $bIsCreation = ($this->GetKey() != -1)? false : true; + if (!$bIsCreation) { + $oPage->SetCurrentTab('Class:Subnet/Tab:IPUsage'); - $bit_ip = ip2long($this->Get('ip')); - $bit_mask = ip2long($this->Get('ip_mask')); + $bit_ip = ip2long($this->Get('ip')); + $bit_mask = ip2long($this->Get('ip_mask')); - $iIPMin = sprintf('%u', ($bit_ip & $bit_mask) | 1); // exclude the first one: identifies the subnet itself - $iIPMax = sprintf('%u', (($bit_ip | (~$bit_mask))) & 0xfffffffe); // exclude the last one : broadcast address + $iIPMin = sprintf('%u', ($bit_ip & $bit_mask) | 1); // exclude the first one: identifies the subnet itself + $iIPMax = sprintf('%u', (($bit_ip | (~$bit_mask))) & 0xfffffffe); // exclude the last one : broadcast address - $sIPMin = long2ip($iIPMin); - $sIPMax = long2ip($iIPMax); + $sIPMin = long2ip($iIPMin); + $sIPMax = long2ip($iIPMax); - $oPage->p(Dict::Format('Class:Subnet/Tab:IPUsage-explain', $sIPMin, $sIPMax)); + $oPage->p(Dict::Format('Class:Subnet/Tab:IPUsage-explain', $sIPMin, $sIPMax)); - $oIfFilter = DBObjectSearch::FromOQL("SELECT IPInterface AS if WHERE INET_ATON(if.ipaddress) >= INET_ATON('$sIPMin') AND INET_ATON(if.ipaddress) <= INET_ATON('$sIPMax')"); - $oIfSet = new CMDBObjectSet($oIfFilter); - $oBlock = new DisplayBlock($oIfFilter, 'list', false); - $oBlock->Display($oPage, 'nwif', array('menu' => false)); + $oIfFilter = DBObjectSearch::FromOQL("SELECT IPInterface AS if WHERE INET_ATON(if.ipaddress) >= INET_ATON('$sIPMin') AND INET_ATON(if.ipaddress) <= INET_ATON('$sIPMax')"); + $oIfSet = new CMDBObjectSet($oIfFilter); + $oBlock = new DisplayBlock($oIfFilter, 'list', false); + $oBlock->Display($oPage, 'nwif', array('menu' => false)); - $iCountUsed = $oIfSet->Count(); - $iCountRange = $iIPMax - $iIPMin; // On 32-bit systems the substraction will be computed using floats for values greater than PHP_MAX_INT; - $iFreeCount = $iCountRange - $iCountUsed; + $iCountUsed = $oIfSet->Count(); + $iCountRange = $iIPMax - $iIPMin; // On 32-bit systems the substraction will be computed using floats for values greater than PHP_MAX_INT; + $iFreeCount = $iCountRange - $iCountUsed; - $oPage->SetCurrentTab('Class:Subnet/Tab:FreeIPs'); - $oPage->p(Dict::Format('Class:Subnet/Tab:FreeIPs-count', $iFreeCount)); - $oPage->p(Dict::S('Class:Subnet/Tab:FreeIPs-explain')); + $oPage->SetCurrentTab('Class:Subnet/Tab:FreeIPs'); + $oPage->p(Dict::Format('Class:Subnet/Tab:FreeIPs-count', $iFreeCount)); + $oPage->p(Dict::S('Class:Subnet/Tab:FreeIPs-explain')); - $aUsedIPs = $oIfSet->GetColumnAsArray('ipaddress', false); - $iAnIP = $iIPMin; - $iFound = 0; - while (($iFound < min($iFreeCount, 10)) && ($iAnIP <= $iIPMax)) - { - $sAnIP = long2ip($iAnIP); - if (!in_array($sAnIP, $aUsedIPs)) - { - $iFound++; - $oPage->p($sAnIP); - } - else - { - } - $iAnIP++; + $aUsedIPs = $oIfSet->GetColumnAsArray('ipaddress', false); + $iAnIP = $iIPMin; + $iFound = 0; + while (($iFound < min($iFreeCount, 10)) && ($iAnIP <= $iIPMax)) + { + $sAnIP = long2ip($iAnIP); + if (!in_array($sAnIP, $aUsedIPs)) + { + $iFound++; + $oPage->p($sAnIP); + } + $iAnIP++; + } } }]]>