#!/usr/bin/php
<?php

// Note: The GW generators have newer code

error_reporting(E_ALL E_NOTICE E_STRICT E_DEPRECATED);

define('USE_CACHE'true);

// ---

include __DIR__ '/ipv6_functions.inc.phps';
include 
__DIR__ '/grep_funcs.inc.phps';
include 
__DIR__ '/rirs.inc.phps';

// This is like __DIR__, but does not resolve symlinks
// (useful for sharing the source codes locally by symlinking)
define('DIR'dirname($_SERVER['SCRIPT_FILENAME']));

foreach (
$rirs as &$rir) {
    if (
USE_CACHE) {
        
$rirstat_file file(DIR "/cache/rirstats/$rir");
    } else {
        
$rirstat_file file($rirstat_urls[$rir]);
    }

    
$rirstat_file antigrep($rirstat_file'#');
    
$rirstat_file grep($rirstat_file'ipv6');
    
$rirstat_file antigrep($rirstat_file'summary');

    
# ---

    
$xxx = array();

    echo 
"$rir: Step 1 - Prepare\n";

    foreach (
$rirstat_file as $x) {
        
$x trim($x);
        if (
$x == '') continue;

        
$ary explode('|'$x);

        
# Example:
        # afrinic|KE|ipv6|2c0f:fe88::|32|20100728|allocated
        # ^0      ^1 ^2   ^3          ^4 ^5       ^6

        
$baseip $ary[3];
        
$cidr $ary[4];
        
# $state = $ary[6];

        
$range ipv6_cidr2range($baseip$cidr);
        
$topip $range[1];

        
$xxx[$baseip] = $topip;
    }

    
$xxx ipv6_merge_address_blocks($xxx"$rir: Step 2 - ");

    
// --- CIDR finden ---

    
echo "$rir: Step 3 - Analyze address ranges and write CIDR blocks\n";

    
$hf fopen(DIR "/out/ipv6_cidr_$rir.new"'w');
    
$hb fopen(DIR "/out/ipv6_blocks_$rir.new"'w');

    foreach (
$xxx as $baseip => &$topip) {
        
fwrite($hb"$baseip - $topip\n");

        
$rirstat_file ipv6_range2cidr($baseip$topip);
        foreach (
$rirstat_file as $x) {
            
fwrite($hf"$x\n");
        }
    }

    
fclose($hb);
    
fclose($hf);

    
rename(DIR "/out/ipv6_cidr_$rir.new"DIR "/out/ipv6_cidr_$rir");
    
rename(DIR "/out/ipv6_blocks_$rir.new"DIR "/out/ipv6_blocks_$rir");
}

echo 
"Finished!\n";

?>