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'); } }
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; }