コード例 #1
0
ファイル: ophandlers.php プロジェクト: xtha/salt
function delIPv6Prefix()
{
    assertUIntArg('id');
    $netinfo = spotEntity('ipv6net', $_REQUEST['id']);
    loadIPAddrList($netinfo);
    if (!isIPNetworkEmpty($netinfo)) {
        showError("There are allocations within prefix, delete forbidden");
        return;
    }
    if (array_key_exists($netinfo['ip_bin'], $netinfo['addrlist'])) {
        updateV6Address($netinfo['ip_bin'], '', 'no');
    }
    destroyIPv6Prefix($_REQUEST['id']);
    showFuncMessage(__FUNCTION__, 'OK');
    global $pageno;
    if ($pageno == 'ipv6net') {
        return buildRedirectURL('index', 'default');
    }
}
コード例 #2
0
ファイル: database.php プロジェクト: rhysm/racktables
function createIPv6Prefix($range = '', $name = '', $is_connected = FALSE, $taglist = array(), $vlan_ck = NULL)
{
    // $range is in aaa0:b::c:d/x format, split into ip/mask vars
    $rangeArray = explode('/', $range);
    if (count($rangeArray) != 2) {
        throw new InvalidRequestArgException('range', $range, 'Invalid IPv6 prefix');
    }
    $ip = $rangeArray[0];
    $mask = $rangeArray[1];
    $net = constructIPRange(ip6_parse($ip), $mask);
    usePreparedInsertBlade('IPv6Network', array('ip' => $net['ip_bin'], 'last_ip' => ip_last($net), 'mask' => $mask, 'name' => $name));
    $network_id = lastInsertID();
    # RFC3513 2.6.1 - Subnet-Router anycast
    if ($is_connected) {
        updateV6Address($net['ip_bin'], 'Subnet-Router anycast', 'yes');
    }
    produceTagsForNewRecord('ipv6net', $taglist, $network_id);
    if ($vlan_ck != NULL) {
        $ctx = getContext();
        fixContext(spotEntity('ipv6net', $network_id));
        if (permitted('ipv6net', '8021q', 'bind')) {
            commitSupplementVLANIPv6($vlan_ck, $network_id);
        }
        restoreContext($ctx);
    }
    return $network_id;
}