mirror of
https://gitlab.com/shorewall/code.git
synced 2025-06-24 19:51:40 +02:00
Apply Mr-4's noautosrc patch (modified)
Signed-off-by: Tom Eastep <teastep@shorewall.net>
This commit is contained in:
parent
4621dccd53
commit
61cb105c02
@ -442,6 +442,7 @@ sub process_a_provider( $ ) {
|
|||||||
( $interface, my $address ) = split /:/, $interface;
|
( $interface, my $address ) = split /:/, $interface;
|
||||||
|
|
||||||
my $shared = 0;
|
my $shared = 0;
|
||||||
|
my $noautosrc = 0;
|
||||||
|
|
||||||
if ( defined $address ) {
|
if ( defined $address ) {
|
||||||
validate_address $address, 0;
|
validate_address $address, 0;
|
||||||
@ -530,6 +531,10 @@ sub process_a_provider( $ ) {
|
|||||||
} elsif ( $option =~ /^load=(0?\.\d{1,8})/ ) {
|
} elsif ( $option =~ /^load=(0?\.\d{1,8})/ ) {
|
||||||
$load = $1;
|
$load = $1;
|
||||||
require_capability 'STATISTIC_MATCH', "load=$load", 's';
|
require_capability 'STATISTIC_MATCH', "load=$load", 's';
|
||||||
|
} elsif ( $option eq 'autosrc' ) {
|
||||||
|
$noautosrc = 0;
|
||||||
|
} elsif ( $option eq 'noautosrc' ) {
|
||||||
|
$noautosrc = 1;
|
||||||
} else {
|
} else {
|
||||||
fatal_error "Invalid option ($option)";
|
fatal_error "Invalid option ($option)";
|
||||||
}
|
}
|
||||||
@ -627,6 +632,7 @@ sub process_a_provider( $ ) {
|
|||||||
balance => $balance ,
|
balance => $balance ,
|
||||||
pref => $pref ,
|
pref => $pref ,
|
||||||
mtu => $mtu ,
|
mtu => $mtu ,
|
||||||
|
noautosrc => $noautosrc ,
|
||||||
track => $track ,
|
track => $track ,
|
||||||
loose => $loose ,
|
loose => $loose ,
|
||||||
duplicate => $duplicate ,
|
duplicate => $duplicate ,
|
||||||
@ -701,6 +707,7 @@ sub add_a_provider( $$ ) {
|
|||||||
my $balance = $providerref->{balance};
|
my $balance = $providerref->{balance};
|
||||||
my $pref = $providerref->{pref};
|
my $pref = $providerref->{pref};
|
||||||
my $mtu = $providerref->{mtu};
|
my $mtu = $providerref->{mtu};
|
||||||
|
my $noautosrc = $providerref->{noautosrc};
|
||||||
my $track = $providerref->{track};
|
my $track = $providerref->{track};
|
||||||
my $loose = $providerref->{loose};
|
my $loose = $providerref->{loose};
|
||||||
my $duplicate = $providerref->{duplicate};
|
my $duplicate = $providerref->{duplicate};
|
||||||
@ -843,18 +850,20 @@ CEOF
|
|||||||
'done'
|
'done'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} elsif ( $shared ) {
|
} elsif ( ! $noautosrc ) {
|
||||||
emit "qt \$IP -$family rule del from $address" if $config{DELETE_THEN_ADD};
|
if ( $shared ) {
|
||||||
emit( "run_ip rule add from $address pref 20000 table $id" ,
|
emit "qt \$IP -$family rule del from $address" if $config{DELETE_THEN_ADD};
|
||||||
"echo \"\$IP -$family rule del from $address > /dev/null 2>&1\" >> \${VARDIR}/undo_${table}_routing" );
|
emit( "run_ip rule add from $address pref 20000 table $id" ,
|
||||||
} elsif ( ! $pseudo ) {
|
"echo \"\$IP -$family rule del from $address > /dev/null 2>&1\" >> \${VARDIR}/undo_${table}_routing" );
|
||||||
emit ( "find_interface_addresses $physical | while read address; do" );
|
} elsif ( ! $pseudo ) {
|
||||||
emit ( " qt \$IP -$family rule del from \$address" ) if $config{DELETE_THEN_ADD};
|
emit ( "find_interface_addresses $physical | while read address; do" );
|
||||||
emit ( " run_ip rule add from \$address pref 20000 table $id",
|
emit ( " qt \$IP -$family rule del from \$address" ) if $config{DELETE_THEN_ADD};
|
||||||
" echo \"\$IP -$family rule del from \$address > /dev/null 2>&1\" >> \${VARDIR}/undo_${table}_routing",
|
emit ( " run_ip rule add from \$address pref 20000 table $id",
|
||||||
' rulenum=$(($rulenum + 1))',
|
" echo \"\$IP -$family rule del from \$address > /dev/null 2>&1\" >> \${VARDIR}/undo_${table}_routing",
|
||||||
'done'
|
' rulenum=$(($rulenum + 1))',
|
||||||
);
|
'done'
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user