diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2015-07-10 15:29:23 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2015-07-10 15:29:23 +0300 |
commit | e3ea08d43ccf0a117b10e9d52c91612281a4193f (patch) | |
tree | 89434b6bd5e4a8edca22ae3f1903d80bb0ce0948 | |
parent | 5bbf06a701121f6c66f569e6ef99fddf017e95cd (diff) | |
download | dnstools-e3ea08d43ccf0a117b10e9d52c91612281a4193f.tar.gz dnstools-e3ea08d43ccf0a117b10e9d52c91612281a4193f.tar.bz2 |
dgd: ensure gateways are probed from the corresponding interfaces
* dgd/dgd (check_links): Bind to the corresponding interface
before piniging.
* dgd/rc.uplink (linksetup): Remove useless rules
-rwxr-xr-x | dgd/dgd | 8 | ||||
-rwxr-xr-x | dgd/rc.uplink | 4 |
2 files changed, 5 insertions, 7 deletions
@@ -437,15 +437,17 @@ sub check_links { $link->{alive} = 0; } debug(1, "checking links ".($#links+1).", probes $config{core}{probes}"); - my $p = Net::Ping->new("icmp", $config{core}{timeout}); for (my $i = 0; $i < $config{core}{probes}; $i++) { foreach $link (@links) { - debug(3, "ping $link->{name}"); next if link_is_alive($link); + debug(3, "ping $link->{name}"); + my $p = Net::Ping->new("icmp", $config{core}{timeout}, undef, + $link->{if}); ++$link->{alive} if $p->ping($link->{gw}); + $p->close(); + debug(3, "$link->{name} " . ($link->{alive} ? "alive" : "dead")); } } - $p->close(); if (!defined($active_link)) { return 1; } elsif (!link_is_alive($active_link)) { diff --git a/dgd/rc.uplink b/dgd/rc.uplink index f116293..239d85f 100755 --- a/dgd/rc.uplink +++ b/dgd/rc.uplink @@ -26,10 +26,6 @@ END { echo "$n $1" >> $rt_tables fi ip rule add from $3 table $1 - ip rule add from $5 table $1 - if [ -n "$6" ]; then - ip rule add from $6 table $1 - fi ip route add default via $4 table $1 if [ -n "$7" ]; then ip route add $7 dev $2 src $3 table $1 |