| #!/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"); |
| } |