#!/usr/bin/perl

use NetAddr::IP;

if ( $ARGV[3] ) {
    $server = $ARGV[0];
    $network = $ARGV[1];
    $netmask = $ARGV[2];
    $domain = $ARGV[3];
} else {
    $server="10.0.0.254";
    $network="10.0.0.0";
    $netmask="255.255.255.0";
    $domain="ltsp";
}

if ( !  `grep "$server	server.$domain" /etc/hosts` ) {
    open (HOSTS, ">>/etc/hosts");
    $ws=1;
    $ip = new NetAddr::IP "$network/$netmask" ;
    ++$ip; # skip network address
    for ($ip ; $ip < $ip->broadcast; $ip++) {
        ($out, $junk) = split("/", $ip);
        if ($out eq $server) {
            print HOSTS "$out	server.$domain	server\n";
        } else {
            $foo = $ws;
            if ($ws < 100) { $foo = "0" . $ws; }
            if ($ws < 10) { $foo = "00" . $ws; }
            print HOSTS "$out 	ws$foo.$domain	ws$foo\n";
        }
        $ws++;
    }
}
