mirror of
https://gitlab.com/shorewall/code.git
synced 2025-06-04 00:45:44 +02:00
Add 'src=' and 'mtu=' OPTIONS in providers file
git-svn-id: https://shorewall.svn.sourceforge.net/svnroot/shorewall/trunk@8181 fbd18981-670d-0410-9b5c-8dc0c1a9a2bb
This commit is contained in:
parent
7da1a3ef6b
commit
00a72b0dec
@ -228,11 +228,9 @@ sub add_a_provider( $$$$$$$$ ) {
|
|||||||
emit "echo \"qt ip route flush table $number\" >> \${VARDIR}/undo_routing";
|
emit "echo \"qt ip route flush table $number\" >> \${VARDIR}/undo_routing";
|
||||||
|
|
||||||
if ( $gateway eq 'detect' ) {
|
if ( $gateway eq 'detect' ) {
|
||||||
$address = get_interface_address $interface unless $address;
|
|
||||||
$gateway = get_interface_gateway $interface;
|
$gateway = get_interface_gateway $interface;
|
||||||
} elsif ( $gateway && $gateway ne '-' ) {
|
} elsif ( $gateway && $gateway ne '-' ) {
|
||||||
validate_address $gateway, 0;
|
validate_address $gateway, 0;
|
||||||
$address = get_interface_address $interface unless $address;
|
|
||||||
} else {
|
} else {
|
||||||
fatal_error "Configuring multiple providers through one interface requires a gateway" if $shared;
|
fatal_error "Configuring multiple providers through one interface requires a gateway" if $shared;
|
||||||
$gateway = '';
|
$gateway = '';
|
||||||
@ -268,7 +266,7 @@ sub add_a_provider( $$$$$$$$ ) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
my ( $loose, $track, $balance , $optional ) = (0,0,0,interface_is_optional( $interface ));
|
my ( $loose, $track, $balance , $optional, $mtu ) = (0,0,0,interface_is_optional( $interface ), '' );
|
||||||
|
|
||||||
unless ( $options eq '-' ) {
|
unless ( $options eq '-' ) {
|
||||||
for my $option ( split_list $options, 'option' ) {
|
for my $option ( split_list $options, 'option' ) {
|
||||||
@ -283,6 +281,11 @@ sub add_a_provider( $$$$$$$$ ) {
|
|||||||
} elsif ( $option eq 'optional' ) {
|
} elsif ( $option eq 'optional' ) {
|
||||||
set_interface_option $interface, 'optional', 1;
|
set_interface_option $interface, 'optional', 1;
|
||||||
$optional = 1;
|
$optional = 1;
|
||||||
|
} elsif ( $option =~ /^src=(.*)$/ ) {
|
||||||
|
fatal_error "OPTION 'src' not allowed on shared interface" if $shared;
|
||||||
|
$address = validate_address( $1 , 1 );
|
||||||
|
} elsif ( $option =~ /^mtu=(\d+)$/ ) {
|
||||||
|
$mtu = "mtu $1 ";
|
||||||
} else {
|
} else {
|
||||||
fatal_error "Invalid option ($option)";
|
fatal_error "Invalid option ($option)";
|
||||||
}
|
}
|
||||||
@ -335,7 +338,8 @@ sub add_a_provider( $$$$$$$$ ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( $gateway ) {
|
if ( $gateway ) {
|
||||||
emit "run_ip route replace $gateway src $address dev $interface table $number $realm";
|
$address = get_interface_address $interface unless $address;
|
||||||
|
emit "run_ip route replace $gateway src $address dev $interface ${mtu}table $number $realm";
|
||||||
emit "run_ip route add default via $gateway dev $interface table $number $realm";
|
emit "run_ip route add default via $gateway dev $interface table $number $realm";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user