Beispiel #1
0
    public function NetworkShift($netid, $network = '0.0.0.0', $mask = '0.0.0.0', $shift = 0)
    {
        global $SYSLOG_RESOURCE_KEYS;
        if ($this->syslog) {
            $nodes = array_merge((array) $this->db->GetAll('SELECT id, ownerid, ipaddr FROM vnodes
					WHERE netid = ? AND ipaddr >= inet_aton(?) AND ipaddr <= inet_aton(?)', array($netid, $network, getbraddr($network, $mask))), (array) $this->db->GetAll('SELECT id, ownerid, ipaddr_pub FROM vnodes
					WHERE netid = ? AND ipaddr_pub >= inet_aton(?) AND ipaddr_pub <= inet_aton(?)', array($netid, $network, getbraddr($network, $mask))));
            if (!empty($nodes)) {
                foreach ($nodes as $node) {
                    $args = array($SYSLOG_RESOURCE_KEYS[SYSLOG_RES_NODE] => $node['id'], $SYSLOG_RESOURCE_KEYS[SYSLOG_RES_CUST] => $node['ownerid'], $SYSLOG_RESOURCE_KEYS[SYSLOG_RES_NETWORK] => $netid);
                    unset($node['id']);
                    unset($node['ownerid']);
                    foreach ($node as $key => $value) {
                        $args[$key] = $value + $shift;
                    }
                    $this->syslog->AddMessage(SYSLOG_RES_NODE, SYSLOG_OPER_UPDATE, $args, array($SYSLOG_RESOURCE_KEYS[SYSLOG_RES_NODE], $SYSLOG_RESOURCE_KEYS[SYSLOG_RES_NETWORK], $SYSLOG_RESOURCE_KEYS[SYSLOG_RES_CUST]));
                }
            }
        }
        return $this->db->Execute('UPDATE nodes SET ipaddr = ipaddr + ? 
				WHERE ipaddr >= inet_aton(?) AND ipaddr <= inet_aton(?)', array($shift, $network, getbraddr($network, $mask))) + $this->db->Execute('UPDATE nodes SET ipaddr_pub = ipaddr_pub + ? 
				WHERE ipaddr_pub >= inet_aton(?) AND ipaddr_pub <= inet_aton(?)', array($shift, $network, getbraddr($network, $mask)));
    }
Beispiel #2
0
function isipinstrict($ip, $net, $mask)
{
    if (ip_long($ip) >= ip_long(getnetaddr($net, $mask)) && ip_long($ip) <= ip_long(getbraddr($net, $mask))) {
        return true;
    } else {
        return false;
    }
}
Beispiel #3
0
    function NetworkShift($network = '0.0.0.0', $mask = '0.0.0.0', $shift = 0, $netid = NULL)
    {
        if ($netid) {
            $result = $this->DB->Execute('UPDATE nodes SET ipaddr = ipaddr + ? 
				WHERE ipaddr >= inet_aton(?) AND ipaddr <= inet_aton(?) AND netid=?', array($shift, $network, getbraddr($network, $mask), $netid));
        } else {
            $result = $this->DB->Execute('UPDATE nodes SET ipaddr = ipaddr + ? 
				WHERE ipaddr >= inet_aton(?) AND ipaddr <= inet_aton(?)', array($shift, $network, getbraddr($network, $mask)));
        }
        return $result + $this->DB->Execute('UPDATE nodes SET ipaddr_pub = ipaddr_pub + ? 
				WHERE ipaddr_pub >= inet_aton(?) AND ipaddr_pub <= inet_aton(?)', array($shift, $network, getbraddr($network, $mask)));
    }
Beispiel #4
0
							    
					$node_pub = $DB->GetRow('SELECT MAX(ipaddr_pub) AS last, MIN(ipaddr_pub) AS first
							    FROM nodes WHERE (ipaddr_pub>? AND ipaddr_pub<?)',
							    array($network['addresslong'],ip_long($network['broadcast'])));
				
					if($node_pub['first'])
						$node['first'] = min($node['first'], $node_pub['first']);
					if($node_pub['last'])
						$node['last'] = min($node['last'], $node_pub['last']);
					
					if(($node['first'] && $node['first'] < $networkdata['addresslong']) ||
					    ($node['last'] && $node['last'] >= ip_long(getbraddr($networkdata['address'],prefix2mask($networkdata['prefix'])))) )
					{
						$shift = $networkdata['addresslong'] - $network['addresslong'];
						if($node['first'] + $shift < $networkdata['addresslong'] ||
						    $node['last'] + $shift >= ip_long(getbraddr($networkdata['address'],prefix2mask($networkdata['prefix'])))
						)
							$error['address'] = trans('New network is too small. Put in order IP addresses first!');
						else
							$networkdata['needshft'] = TRUE;
					}
				}
			}
		}
	}

	if($networkdata['interface'] != '' && !preg_match('/^[a-z0-9:.]+$/', $networkdata['interface']))
		$error['interface'] = trans('Incorrect interface name!');

	if($networkdata['name']=='')
		$error['name'] = trans('Network name is required!');
Beispiel #5
0
    function NetworkShift($network = '0.0.0.0', $mask = '0.0.0.0', $shift = 0)
    {
        return $this->DB->Execute('UPDATE nodes SET ipaddr = ipaddr + ? 
				WHERE ipaddr >= inet_aton(?) AND ipaddr <= inet_aton(?)', array($shift, $network, getbraddr($network, $mask))) + $this->DB->Execute('UPDATE nodes SET ipaddr_pub = ipaddr_pub + ? 
				WHERE ipaddr_pub >= inet_aton(?) AND ipaddr_pub <= inet_aton(?)', array($shift, $network, getbraddr($network, $mask)));
    }