本文整理汇总了PHP中obj::get_max_hosts方法的典型用法代码示例。如果您正苦于以下问题:PHP obj::get_max_hosts方法的具体用法?PHP obj::get_max_hosts怎么用?PHP obj::get_max_hosts使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类obj
的用法示例。
在下文中一共展示了obj::get_max_hosts方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: get_first_available_address
/**
* Returns first available subnet address, false if none
*
* @access public
* @param int $subnetId
* @param obj $Subnets
* @return int / false
*/
public function get_first_available_address($subnetId, $Subnets)
{
# fetch all addresses in subnet and subnet
$addresses = $this->fetch_subnet_addresses($subnetId, "ip_addr", "asc");
$subnet = (array) $Subnets->fetch_subnet(null, $subnetId);
# get max hosts
$max_hosts = $Subnets->get_max_hosts($subnet['mask'], $this->identify_address($subnet['subnet']));
# full subnet?
if (sizeof($addresses) >= $max_hosts) {
return false;
}
//full subnet
# set type
$ip_version = $this->identify_address($subnet['subnet']);
# get first diff > 1
if (sizeof($addresses) > 0) {
foreach ($addresses as $k => $ipaddress) {
# check subnet and first IP
if ($k == 0) {
# /31 fix
if ($subnet['mask'] == 31) {
if (gmp_strval(gmp_sub($addresses[$k]->ip_addr, $subnet['subnet'])) > 0) {
return gmp_strval($subnet['subnet']);
}
} else {
if (gmp_strval(gmp_sub($addresses[$k]->ip_addr, $subnet['subnet'])) > 1) {
return gmp_strval(gmp_add($subnet['subnet'], 1));
} elseif ($ip_version == "IPv6") {
if (sizeof($addresses) == 1) {
if (gmp_strval(gmp_sub($addresses[$k]->ip_addr, $subnet['subnet'])) == 0) {
return gmp_strval(gmp_add($subnet['subnet'], 1));
}
}
}
}
} else {
if (gmp_strval(gmp_sub($addresses[$k]->ip_addr, $addresses[$k - 1]->ip_addr)) > 1) {
return gmp_strval(gmp_add($addresses[$k - 1]->ip_addr, 1));
}
}
}
return gmp_strval(gmp_add($addresses[$k]->ip_addr, 1));
} else {
# /32, /31
if ($subnet['mask'] == 32 || $subnet['mask'] == 31 || $ip_version == "IPv6") {
return $subnet['subnet'];
} else {
return gmp_strval(gmp_add($subnet['subnet'], 1));
}
}
}