summaryrefslogtreecommitdiffstats
path: root/lib/network/network.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/network/network.pm')
-rw-r--r--lib/network/network.pm34
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/network/network.pm b/lib/network/network.pm
index 8bb291d..e2bdb54 100644
--- a/lib/network/network.pm
+++ b/lib/network/network.pm
@@ -434,6 +434,40 @@ sub netprofile_read {
$net->{PROFILE} = $config->{PROFILE} || 'default';
}
+sub advanced_settings_read {
+ my $modprobe = "$::prefix/etc/modprobe.conf";
+ my $sysctl = "$::prefix/etc/sysctl.conf";
+
+ # ipv6
+ my $ipv6_disabled=0;
+ foreach (cat_($modprobe)) {
+ /^install ipv6 \/bin\/true$/ and $ipv6_disabled=1;
+ } cat_($modprobe);
+
+ # sysctl
+ my $window_scaling=0;
+ foreach (cat_($sysctl)) {
+ /^net\.ipv4\.tcp_window_scaling\s*=\s*0/ and $window_scaling=1;
+ } cat_($modprobe);
+ { ipv6_disabled => $ipv6_disabled, window_scaling => $window_scaling };
+}
+
+sub advanced_settings_write {
+ my ($u) = @_;
+ if ($u->{ipv6_disabled}) {
+ my $line = "install ipv6 /bin/true\n";
+ substInFile { s/^install ipv6 .*//; $_ = $line if eof } "$::prefix/etc/modprobe.conf";
+ } else {
+ substInFile { s/^install ipv6 \/bin\/true// } "$::prefix/etc/modprobe.conf";
+ }
+ if ($u->{window_scaling}) {
+ my $line = "net.ipv4.tcp_window_scaling=0\n";
+ substInFile { s/^net\.ipv4\.tcp_window_scaling=.*//; $_ = $line if eof } "$::prefix/etc/sysctl.conf";
+ } else {
+ my $line = "net.ipv4.tcp_window_scaling=1\n";
+ substInFile { s/^net\.ipv4\.tcp_window_scaling=.*//; $_ = $line if eof } "$::prefix/etc/sysctl.conf";
+ }
+}
sub advanced_choose {
my ($in, $u) = @_;