--- rpms/e-smith-base/sme8/e-smith-base-5.2.0-pppoeMlimit.patch 2013/01/30 06:06:59 1.2 +++ rpms/e-smith-base/sme8/e-smith-base-5.2.0-pppoeMlimit.patch 2013/02/02 16:59:10 1.3 @@ -1,59 +1,21 @@ -diff -ruN e-smith-base-5.2.0.old/createlinks e-smith-base-5.2.0/createlinks ---- e-smith-base-5.2.0.old/createlinks 2013-01-30 05:07:05.000000000 +0000 -+++ e-smith-base-5.2.0/createlinks 2013-01-30 05:23:47.000000000 +0000 -@@ -19,6 +19,7 @@ - /var/lib/dhclient/dhclient-eth1.conf - /var/service/wan/pppoe.pppd.conf - /var/service/wan/run.pppoe.conf -+ /var/service/wan/env.pppoe/PPPD_MLIMIT - /etc/ppp/ip-down.local - /etc/ppp/ip-up.local - )) -diff -ruN e-smith-base-5.2.0.old/root/etc/e-smith/templates/var/service/wan/env.pppoe/PPPD_MLIMIT e-smith-base-5.2.0/root/etc/e-smith/templates/var/service/wan/env.pppoe/PPPD_MLIMIT ---- e-smith-base-5.2.0.old/root/etc/e-smith/templates/var/service/wan/env.pppoe/PPPD_MLIMIT 1970-01-01 01:00:00.000000000 +0100 -+++ e-smith-base-5.2.0/root/etc/e-smith/templates/var/service/wan/env.pppoe/PPPD_MLIMIT 2013-01-30 05:28:36.000000000 +0000 -@@ -0,0 +1,18 @@ -+{ -+ # memory limit to catch any memory leak before it kills the system -+ my $MIN_MEMORY_LIMIT = 100000000; -+ $OUT = $MIN_MEMORY_LIMIT; -+ -+ if (defined $pppoe{Mlimit}) -+ { -+ # If there is a DB variable defined that is less than the minimum memroy limit, delete it. -+ if ($pppoe{Mlimit} <= $MIN_MEMORY_LIMIT) -+ { -+ $DB->get_prop_and_delete('pppoe','Mlimit'); -+ } -+ else -+ { -+ $OUT=$pppoe{Mlimit}; -+ } -+ } -+} diff -ruN e-smith-base-5.2.0.old/root/etc/e-smith/templates/var/service/wan/run.pppoe.conf/mlimit e-smith-base-5.2.0/root/etc/e-smith/templates/var/service/wan/run.pppoe.conf/mlimit --- e-smith-base-5.2.0.old/root/etc/e-smith/templates/var/service/wan/run.pppoe.conf/mlimit 2007-01-27 01:56:31.000000000 +0000 -+++ e-smith-base-5.2.0/root/etc/e-smith/templates/var/service/wan/run.pppoe.conf/mlimit 1970-01-01 01:00:00.000000000 +0100 -@@ -1,5 +0,0 @@ --{ ++++ e-smith-base-5.2.0/root/etc/e-smith/templates/var/service/wan/run.pppoe.conf/mlimit 2013-01-31 01:23:21.000000000 +0000 +@@ -1,5 +1,14 @@ + { -# memory limit to catch any memory leak before it kills the system - my $mlimit = $pppoe{Mlimit} || '25000000'; - $OUT = "PPPD_MLIMIT=$mlimit"; --} -diff -ruN e-smith-base-5.2.0.old/root/var/service/wan/run.pppoe e-smith-base-5.2.0/root/var/service/wan/run.pppoe ---- e-smith-base-5.2.0.old/root/var/service/wan/run.pppoe 2013-01-30 05:07:05.000000000 +0000 -+++ e-smith-base-5.2.0/root/var/service/wan/run.pppoe 2013-01-30 05:23:35.000000000 +0000 -@@ -22,11 +22,12 @@ - exec 2>&1 - - . run.pppoe.conf -+MEM="`head -1 ./env.pppoe/PPPD_MLIMIT`" - - extaddr=$(/sbin/e-smith/config getprop ExternalInterface IPAddress) - - exec \ -- /usr/local/bin/softlimit -m $PPPD_MLIMIT \ -+ /usr/local/bin/softlimit -m ${MEM} \ - /usr/bin/setsid \ - /usr/sbin/pppd ${extaddr:+$extaddr:} \ - file pppoe.pppd.conf ++ # memory limit to catch any memory leak before it kills the system ++ use constant MIN_MEMORY_LIMIT => 100000000; ++ ++ # If there is a memory limit in the database and it is below the minimum, delete it. ++ if (defined $pppoe{Mlimit} && $pppoe{Mlimit} < MIN_MEMORY_LIMIT) ++ { ++ $DB->get_prop_and_delete('pppoe','Mlimit'); ++ } ++ ++ $OUT = "PPPD_MLIMIT="; ++ $OUT .= $pppoe{Mlimit} || MIN_MEMORY_LIMIT; + } ++