#!/usr/bin/php
<?php

// Note: The GW generators have newer code
// Note: Copied again from ../rir-delegations/

error_reporting(E_ALL E_NOTICE E_STRICT E_DEPRECATED);

define('USE_CACHE'true);

// ---

include __DIR__ '/ipv4_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']));

$yyy = array();

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'ipv4');
    
$rirstat_file antigrep($rirstat_file'summary');

    
# ---

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

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

        
$ary explode('|'$x);

        
# Example:
        # afrinic|ZM|ipv4|196.46.192.0|8192|20031024|allocated
        # ^0      ^1 ^2   ^3           ^4   ^5       ^6

        
$country $ary[1];
        
$baseip $ary[3];
        
$nums $ary[4];
        
# $state = $ary[6];

        
$topip ipv4_add($baseip$nums-1);

        if (
$country == ''$country 'XX'// Unassigned (extended RIR format)

        
$yyy[$country][$baseip] = $topip;
    }
}

ksort($yyy);

foreach (
$yyy as $country => &$xxx) {
    
$country strtolower($country);
    
$xxx ipv4_merge_address_blocks($xxx"$country: Step 2 - ");

    
// --- CIDR finden ---

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

    
$hf fopen(DIR "/out/ipv4_${country}_cidr.new"'w');
    
$hs fopen(DIR "/out/ipv4_${country}_cidr_shortened.new"'w');
    
$hb fopen(DIR "/out/ipv4_${country}_blocks.new"'w');

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

        
$rirstat_file ipv4_range2cidr($baseip$topiptrue);
        foreach (
$rirstat_file as $x) {
            
fwrite($hs"$x\n");
        }

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

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

    
rename(DIR "/out/ipv4_${country}_cidr.new"DIR "/out/ipv4_${country}_cidr");
    
rename(DIR "/out/ipv4_${country}_cidr_shortened.new"DIR "/out/ipv4_${country}_cidr_shortened");
    
rename(DIR "/out/ipv4_${country}_blocks.new"DIR "/out/ipv4_${country}_blocks");
}

echo 
"Finished!\n";

?>