|  | #!/usr/local/bin/perl | 
|  | # for best results, bring up all your interfaces before running this | 
|  | open(I, "ifconfig -a|") || die $!; | 
|  | while (<I>) { | 
|  | chop; | 
|  | if (/^[a-zA-Z]+\d+:/) { | 
|  | ($iface = $_) =~ s/^([a-zA-Z]+\d+).*/$1/; | 
|  | $ifaces{$iface} = $iface; | 
|  | next; | 
|  | } | 
|  | if (/inet/) { | 
|  | if (/\-\-\>/) { # PPP, (SLIP?) | 
|  | ($inet{$iface} = $_) =~ s/.*inet ([^ ]+) \-\-\> ([^ ]+).*/$1/; | 
|  | ($ppp{$iface} = $_) =~ s/.*inet ([^ ]+) \-\-\> ([^ ]+).*/$2/; | 
|  | } else { | 
|  | ($inet{$iface} = $_) =~ s/.*inet ([^ ]+).*/$1/; | 
|  | } | 
|  | } | 
|  | if (/netmask/) { | 
|  | ($mask = $_) =~ s/.*netmask ([^ ]+).*/$1/; | 
|  | $mask =~ s/^/0x/ if ($mask =~ /^[0-9a-f]*$/); | 
|  | $netmask{$iface} = $mask; | 
|  | } | 
|  | if (/broadcast/) { | 
|  | ($bcast{$iface} = $_) =~ s/.*broadcast ([^ ]+).*/$1/; | 
|  | } | 
|  | } | 
|  | foreach $i (keys %ifaces) { | 
|  | $net{$i} = $inet{$i}."/".$netmask{$i} if (defined($inet{$i})); | 
|  | } | 
|  | foreach $i (keys %ifaces) { | 
|  | next if (($i =~ /lo/) || !defined($net{$i})); | 
|  | # 8/25/97; removed  || defined($ppp{$i}) | 
|  | system("route add $inet{$i} localhost 0"); | 
|  | } |