xref: /freebsd/libexec/rc/rc.d/devfs (revision f99f0ee1)
10696600cSBjoern A. Zeeb#!/bin/sh
20696600cSBjoern A. Zeeb#
30696600cSBjoern A. Zeeb#
40696600cSBjoern A. Zeeb
50696600cSBjoern A. Zeeb# PROVIDE: devfs
60696600cSBjoern A. Zeeb# REQUIRE: mountcritremote
70696600cSBjoern A. Zeeb# BEFORE:  SERVERS securelevel
80696600cSBjoern A. Zeeb# KEYWORD: nojail
90696600cSBjoern A. Zeeb
100696600cSBjoern A. Zeeb. /etc/rc.subr
110696600cSBjoern A. Zeeb
120696600cSBjoern A. Zeebname="devfs"
130696600cSBjoern A. Zeebdesc="Device filesystem"
140696600cSBjoern A. Zeebstart_cmd='devfs_start'
150696600cSBjoern A. Zeebstop_cmd=':'
160696600cSBjoern A. Zeeb
170696600cSBjoern A. Zeebdevfs_start()
180696600cSBjoern A. Zeeb{
190696600cSBjoern A. Zeeb	if [ -n "$devfs_system_ruleset" -o -n "$devfs_set_rulesets" ] ||
200696600cSBjoern A. Zeeb	    checkyesno devfs_load_rulesets; then
210696600cSBjoern A. Zeeb		devfs_init_rulesets
220696600cSBjoern A. Zeeb		if [ -n "$devfs_system_ruleset" ]; then
230696600cSBjoern A. Zeeb			devfs_set_ruleset $devfs_system_ruleset /dev
240696600cSBjoern A. Zeeb			devfs_apply_ruleset $devfs_system_ruleset /dev
250696600cSBjoern A. Zeeb		fi
260696600cSBjoern A. Zeeb		if [ -n "$devfs_set_rulesets" ]; then
270696600cSBjoern A. Zeeb			local _dir_set
280696600cSBjoern A. Zeeb			local _dir
290696600cSBjoern A. Zeeb			local _set
300696600cSBjoern A. Zeeb			for _dir_set in $devfs_set_rulesets; do
310696600cSBjoern A. Zeeb				_dir=${_dir_set%=*}
320696600cSBjoern A. Zeeb				_set=${_dir_set#*=}
330696600cSBjoern A. Zeeb				devfs_set_ruleset $_set $_dir
340696600cSBjoern A. Zeeb				devfs_apply_ruleset $_set $_dir
350696600cSBjoern A. Zeeb			done
360696600cSBjoern A. Zeeb		fi
370696600cSBjoern A. Zeeb	fi
380696600cSBjoern A. Zeeb	read_devfs_conf
390696600cSBjoern A. Zeeb}
400696600cSBjoern A. Zeeb
410696600cSBjoern A. Zeebread_devfs_conf()
420696600cSBjoern A. Zeeb{
430696600cSBjoern A. Zeeb	if [ -r /etc/devfs.conf ]; then
440696600cSBjoern A. Zeeb		cd /dev
450696600cSBjoern A. Zeeb		while read action devicelist parameter; do
460696600cSBjoern A. Zeeb			case "${action}" in
470696600cSBjoern A. Zeeb			l*)	for device in ${devicelist}; do
480696600cSBjoern A. Zeeb					if [ ! -e ${parameter} ]; then
490696600cSBjoern A. Zeeb						ln -fs ${device} ${parameter}
500696600cSBjoern A. Zeeb					fi
510696600cSBjoern A. Zeeb				done
520696600cSBjoern A. Zeeb				;;
530696600cSBjoern A. Zeeb			o*)	for device in ${devicelist}; do
540696600cSBjoern A. Zeeb					if [ -c ${device} ]; then
550696600cSBjoern A. Zeeb						chown ${parameter} ${device}
560696600cSBjoern A. Zeeb					fi
570696600cSBjoern A. Zeeb				done
580696600cSBjoern A. Zeeb				;;
590696600cSBjoern A. Zeeb			p*)	for device in ${devicelist}; do
600696600cSBjoern A. Zeeb					if [ -c ${device} ]; then
610696600cSBjoern A. Zeeb						chmod ${parameter} ${device}
620696600cSBjoern A. Zeeb					fi
630696600cSBjoern A. Zeeb				done
640696600cSBjoern A. Zeeb				;;
650696600cSBjoern A. Zeeb			esac
660696600cSBjoern A. Zeeb		done < /etc/devfs.conf
670696600cSBjoern A. Zeeb	fi
680696600cSBjoern A. Zeeb}
690696600cSBjoern A. Zeeb
700696600cSBjoern A. Zeebload_rc_config $name
71*f99f0ee1SAlexander Leidinger
72*f99f0ee1SAlexander Leidinger# doesn't make sense to run in a svcj: may need more permissions
73*f99f0ee1SAlexander Leidingerdevfs_svcj="NO"
74*f99f0ee1SAlexander Leidinger
750696600cSBjoern A. Zeebrun_rc_command "$1"
76