#!/sbin/runscript
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license.

depend()
{
	before bootmisc logger
	keyword -lxc -vserver
}

start()
{
	local conf= retval=0 err errs

	ebegin "Configuring kernel parameters"
	eindent

	# default sysctl System V max shared memory to 1/4 of RAM:
	mem_bytes=`awk '/MemTotal:/ { printf "%0.f",$2 * 1024}' /proc/meminfo`
	mem_max=`expr $mem_bytes / 4`
	page_size=`getconf PAGE_SIZE`
	shmall=`expr $mem_bytes / $page_size`
	sysctl kernel.shmmax=$mem_max > /dev/null
	sysctl kernel.shmall=$shmall > /dev/null

	for conf in /etc/sysctl.conf /etc/sysctl.d/*.conf; do
		if [ -r "$conf" ]; then
			vebegin "applying $conf"
			if ! err=$(sysctl -p "$conf" 2>&1 >/dev/null) ; then
				errs="${errs} ${err}"
				sysctl -e -p "${conf}" >/dev/null
			fi
			veend $? || retval=1
		fi
	done

	eoutdent
	if [ ${retval} -eq 0 ] && [ -n "${errs}" ] ; then
		ewarn "Unknown keys:${errs}"
	fi
	eend $retval "Some errors were encountered: ${errs}"
}
