#
# /etc/networks processing
#
# Copyright (C) 1996, Olaf Kirch <okir@monad.swb.de>

$have_networks = 0;

sub read_networks {
	local($_, $name, $addr, $rest);

	open(NETWORKS, "<$source{networks}") ||
		&fatal("can't open $source{networks}: $!");
	while (<NETWORKS>) {
		chop;
		s/#.*//o;
		s/^\s+//o;
		s/\s+$//o;
		next if (/^$/);
		($name, $addr, $rest) = /(\S+)\s+(\S+)\s*(.*)/o;
		$name2network{$name} = $_;
		$network2name{$addr} = $_;
		foreach $name (split(/\s+/, $rest)) {
			$name2network{$name} = $_;
		}
	}
	close NETWORKS;
	$have_networks = 1;
}

sub networks_byname {

	local($name);

	&read_networks;

	foreach $name (keys %name2network) {
		printf OUT "$name\t$name2network{$name}\n";
	}
}

sub networks_byaddr {

	local($addr);

	&read_networks;

	foreach $addr (keys %network2name) {
		printf OUT "$addr\t$network2name{$addr}\n";
	}
}

1;
