1*4882a593SmuzhiyunFrom ec1a0c8fa2e7a7c6cf70f68bdabc07cbb1a567cf Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: =?UTF-8?q?Micha=C5=82=20=C5=81yszczek?= <michal.lyszczek@bofc.pl>
3*4882a593SmuzhiyunDate: Sun, 5 May 2019 23:43:40 +0200
4*4882a593SmuzhiyunSubject: [PATCH] init.d/sysctl.in: add support for busybox sysctl
5*4882a593SmuzhiyunMIME-Version: 1.0
6*4882a593SmuzhiyunContent-Type: text/plain; charset=UTF-8
7*4882a593SmuzhiyunContent-Transfer-Encoding: 8bit
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunBusybox version of sysctl does not support --system argument,
10*4882a593Smuzhiyunand files need to be loaded one by one. This patch adds code
11*4882a593Smuzhiyunto recognize busybox sysctl and execute proper function based
12*4882a593Smuzhiyunon that.
13*4882a593Smuzhiyun
14*4882a593SmuzhiyunSigned-off-by: Michał Łyszczek <michal.lyszczek@bofc.pl>
15*4882a593Smuzhiyun---
16*4882a593Smuzhiyun init.d/sysctl.in | 27 ++++++++++++++++++++++++++-
17*4882a593Smuzhiyun 1 file changed, 26 insertions(+), 1 deletion(-)
18*4882a593Smuzhiyun
19*4882a593Smuzhiyundiff --git a/init.d/sysctl.in b/init.d/sysctl.in
20*4882a593Smuzhiyunindex e49f4db2..a705b3d4 100644
21*4882a593Smuzhiyun--- a/init.d/sysctl.in
22*4882a593Smuzhiyun+++ b/init.d/sysctl.in
23*4882a593Smuzhiyun@@ -37,6 +37,23 @@ BSD_sysctl()
24*4882a593Smuzhiyun 	return $retval
25*4882a593Smuzhiyun }
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun+Busybox_sysctl()
28*4882a593Smuzhiyun+{
29*4882a593Smuzhiyun+	local quiet
30*4882a593Smuzhiyun+	yesno $rc_verbose || quiet=-q
31*4882a593Smuzhiyun+
32*4882a593Smuzhiyun+	eindent
33*4882a593Smuzhiyun+	for conf in /etc/sysctl.conf /etc/sysctl.d/*.conf; do
34*4882a593Smuzhiyun+		if [ -r "$conf" ]; then
35*4882a593Smuzhiyun+			vebegin "applying $conf"
36*4882a593Smuzhiyun+			sysctl $quiet -p "$conf" || retval=1
37*4882a593Smuzhiyun+			veend $retval
38*4882a593Smuzhiyun+		fi
39*4882a593Smuzhiyun+	done
40*4882a593Smuzhiyun+	eoutdent
41*4882a593Smuzhiyun+	return $retval
42*4882a593Smuzhiyun+}
43*4882a593Smuzhiyun+
44*4882a593Smuzhiyun Linux_sysctl()
45*4882a593Smuzhiyun {
46*4882a593Smuzhiyun 	local quiet
47*4882a593Smuzhiyun@@ -52,7 +69,15 @@ start()
48*4882a593Smuzhiyun 	ebegin "Configuring kernel parameters"
49*4882a593Smuzhiyun 	case "$RC_UNAME" in
50*4882a593Smuzhiyun 	*BSD|GNU) BSD_sysctl; rc=$? ;;
51*4882a593Smuzhiyun-	Linux) Linux_sysctl; rc=$? ;;
52*4882a593Smuzhiyun+	Linux)
53*4882a593Smuzhiyun+		sysctl -h > /dev/null 2>&1
54*4882a593Smuzhiyun+		if [ $? -ne 0 ]; then
55*4882a593Smuzhiyun+			# busybox version of sysctl does not recognize -h option
56*4882a593Smuzhiyun+			Busybox_sysctl
57*4882a593Smuzhiyun+		else
58*4882a593Smuzhiyun+			Linux_sysctl
59*4882a593Smuzhiyun+		fi
60*4882a593Smuzhiyun+		rc=$? ;;
61*4882a593Smuzhiyun 	esac
62*4882a593Smuzhiyun 	eend $rc "Unable to configure some kernel parameters"
63*4882a593Smuzhiyun }
64*4882a593Smuzhiyun--
65*4882a593Smuzhiyun2.18.1
66*4882a593Smuzhiyun
67