mirror of
https://github.com/zerotier/edge.git
synced 2026-05-22 16:25:05 -07:00
67 lines
1.2 KiB
Plaintext
Executable File
67 lines
1.2 KiB
Plaintext
Executable File
#!/sbin/openrc-run
|
|
|
|
description="Set sysfs variables from /etc/sysfs.conf and /etc/sysfs.d/*.conf"
|
|
conffile=/etc/sysfs.conf
|
|
confdir=/etc/sysfs.d
|
|
|
|
depend() {
|
|
need sysfs
|
|
}
|
|
|
|
setval() {
|
|
local value="$1" attrib="$2"
|
|
# Some fields need a terminating newline, others
|
|
# need the terminating newline to be absent :-(
|
|
echo -n "$value" > "$attrib" 2>/dev/null \
|
|
|| echo "$value" > "$attrib"
|
|
}
|
|
|
|
load_conffile() {
|
|
local file="$1"
|
|
while read line; do
|
|
local line=${line%%#*}
|
|
local cmd= attrib= value=
|
|
set -- $line
|
|
if [ $# -eq 0 ]; then
|
|
continue
|
|
fi
|
|
case "$1$3" in
|
|
mode=) cmd=chmod
|
|
attrib="$2"
|
|
value="$4"
|
|
;;
|
|
owner=) cmd=chown
|
|
attrib="$2"
|
|
value="$4"
|
|
;;
|
|
*) if [ "$2" = "=" ]; then
|
|
cmd=setval
|
|
attrib="$1"
|
|
value="$3"
|
|
fi
|
|
;;
|
|
esac
|
|
if ! [ -e "/sys/$attrib" ]; then
|
|
eerror "$attrib: unknown attribute"
|
|
continue
|
|
fi
|
|
if [ -z "$attrib" ] || [ -z "$value" ]; then
|
|
eerror "syntax error in $file: '$line'"
|
|
continue
|
|
fi
|
|
$cmd "$value" "/sys/$attrib"
|
|
done < "$file"
|
|
}
|
|
|
|
start() {
|
|
[ -r "$conffile" -o -d "$confdir" ] || return 0
|
|
ebegin "Setting sysfs variables"
|
|
for file in $confdir/*.conf $conffile; do
|
|
[ -r "$file" ] || continue
|
|
load_conffile "$file" || return 1
|
|
done
|
|
eend 0
|
|
|
|
}
|
|
|