mirror of
https://gitlab.com/shorewall/code.git
synced 2025-06-20 01:37:59 +02:00
Don't delete default routes when 'fallback' is specified.
Signed-off-by: Tom Eastep <teastep@shorewall.net>
This commit is contained in:
parent
6d3ebd5b56
commit
4791a8ca66
@ -61,6 +61,7 @@ my @load_interfaces;
|
|||||||
|
|
||||||
my $balancing;
|
my $balancing;
|
||||||
my $fallback;
|
my $fallback;
|
||||||
|
my $metrics;
|
||||||
my $first_default_route;
|
my $first_default_route;
|
||||||
my $first_fallback_route;
|
my $first_fallback_route;
|
||||||
my $maxload;
|
my $maxload;
|
||||||
@ -96,6 +97,7 @@ sub initialize( $ ) {
|
|||||||
@load_interfaces = ();
|
@load_interfaces = ();
|
||||||
$balancing = 0;
|
$balancing = 0;
|
||||||
$fallback = 0;
|
$fallback = 0;
|
||||||
|
$metrics = 0;
|
||||||
$first_default_route = 1;
|
$first_default_route = 1;
|
||||||
$first_fallback_route = 1;
|
$first_fallback_route = 1;
|
||||||
$maxload = 0;
|
$maxload = 0;
|
||||||
@ -696,19 +698,20 @@ CEOF
|
|||||||
emit '';
|
emit '';
|
||||||
if ( $gateway ) {
|
if ( $gateway ) {
|
||||||
if ( $family == F_IPV4 ) {
|
if ( $family == F_IPV4 ) {
|
||||||
emit qq(run_ip route replace $gateway dev $physical table ) . DEFAULT_TABLE;
|
emit qq(run_ip route replace $gateway/32 dev $physical table ) . DEFAULT_TABLE;
|
||||||
emit qq(run_ip route replace default via $gateway src $address dev $physical table ) . DEFAULT_TABLE . qq( metric $number);
|
emit qq(run_ip route replace default via $gateway src $address dev $physical table ) . DEFAULT_TABLE . qq( metric $number);
|
||||||
} else {
|
} else {
|
||||||
emit qq(qt \$IP -6 route del default via $gateway src $address dev $physical table ) . DEFAULT_TABLE . qq( metric $number);
|
emit qq(qt \$IP -6 route del default via $gateway src $address dev $physical table ) . DEFAULT_TABLE . qq( metric $number);
|
||||||
emit qq(run_ip route add default via $gateway src $address dev $physical table ) . DEFAULT_TABLE . qq( metric $number);
|
emit qq(run_ip route add default via $gateway src $address dev $physical table ) . DEFAULT_TABLE . qq( metric $number);
|
||||||
}
|
}
|
||||||
emit qq(echo "qt \$IP -$family route del default via $gateway table ) . DEFAULT_TABLE . qq(" >> \${VARDIR}/undo_${table}_routing);
|
emit qq(echo "qt \$IP -$family route del default via $gateway table ) . DEFAULT_TABLE . qq(" >> \${VARDIR}/undo_${table}_routing);
|
||||||
|
emit qq(echo "qt \$IP -4 route del $gateway/32 dev $physical table ) . DEFAULT_TABLE . qq(" >> \${VARDIR}/undo_${table}_routing) if $family == F_IPV4;
|
||||||
} else {
|
} else {
|
||||||
emit qq(run_ip route add default table ) . DEFAULT_TABLE . qq( dev $physical metric $number);
|
emit qq(run_ip route add default table ) . DEFAULT_TABLE . qq( dev $physical metric $number);
|
||||||
emit qq(echo "qt \$IP -$family route del default dev $physical table ) . DEFAULT_TABLE . qq(" >> \${VARDIR}/undo_${table}_routing);
|
emit qq(echo "qt \$IP -$family route del default dev $physical table ) . DEFAULT_TABLE . qq(" >> \${VARDIR}/undo_${table}_routing);
|
||||||
}
|
}
|
||||||
|
|
||||||
$fallback = 1;
|
$metrics = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
emit( qq(\n) ,
|
emit( qq(\n) ,
|
||||||
@ -1157,11 +1160,13 @@ sub finish_providers() {
|
|||||||
' #',
|
' #',
|
||||||
' # We don\'t have any \'fallback\' providers so we delete any default routes in the default table',
|
' # We don\'t have any \'fallback\' providers so we delete any default routes in the default table',
|
||||||
' #',
|
' #',
|
||||||
" while qt \$IP -$family route del default table " . DEFAULT_TABLE . '; do true; done',
|
' delete_default_routes ' . DEFAULT_TABLE,
|
||||||
'fi',
|
'fi',
|
||||||
'' );
|
'' );
|
||||||
} elsif ( $config{USE_DEFAULT_RT} ) {
|
} elsif ( $config{USE_DEFAULT_RT} ) {
|
||||||
emit "while qt \$IP -$family route del default table " . DEFAULT_TABLE . '; do true; done';
|
emit( 'delete_default_routes ' . DEFAULT_TABLE,
|
||||||
|
''
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
unless ( $config{KEEP_RT_TABLES} ) {
|
unless ( $config{KEEP_RT_TABLES} ) {
|
||||||
|
@ -339,6 +339,16 @@ replace_default_route() # $1 = USE_DEFAULT_RT
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Delete default routes with metric 0 from the passed routing table
|
||||||
|
#
|
||||||
|
delete_default_routes() # $1 = table number
|
||||||
|
{
|
||||||
|
$IP -$g_family route ls table $1 | fgrep default | fgrep -v metric | while read route; do
|
||||||
|
qt $IP -$g_family route del $route
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
restore_default_route() # $1 = USE_DEFAULT_RT
|
restore_default_route() # $1 = USE_DEFAULT_RT
|
||||||
{
|
{
|
||||||
local result
|
local result
|
||||||
|
Loading…
x
Reference in New Issue
Block a user