blob: 77942cf813fb0a20a60b7322f8ed32e5f82b45ad (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
#!/bin/sh /etc/rc.common
# Init script for phc2sys from linuxptp
START=55
USE_PROCD=1
PROG=/usr/sbin/phc2sys
ID=phc2sys
ID_PTP4L=ptp4l
log() {
local loglevel=$1; shift; local msg="$*"
logger -t phc2sys-init -p daemon.$loglevel "$msg"
}
make_cmdline() {
local cfg=$1
local args dev dir loglevel ptp4l_role stats_set syncdir
echo $PROG
config_get dev $cfg "phc_device" ""
[ -z "$dev" ] && { log notice "phc_device not configured, phc2sys not starting. Set 'option phc_device' in /etc/config/linuxptp."; return 1; }
! [ -c "$dev" ] && { log crit "PHC device '$dev' not found!"; return 1; }
dir='phc_to_sys'
config_get ptp4l_role $ID_PTP4L "role" "auto"
[ "$ptp4l_role" = "server" ] && dir='sys_to_phc'
config_get syncdir $cfg "sync_direction" "$dir"
if [ "$syncdir" = "phc_to_sys" ]; then
echo "-s $dev -w"
elif [ "$syncdir" = "sys_to_phc" ]; then
echo "-s CLOCK_REALTIME -c $dev -w -O 0"
else
log err "Invalid sync_direction '$syncdir'! valid values: 'sys_to_phc', 'phc_to_sys'"; return 1
fi
echo "-m"
echo "-q"
config_get stats_set $cfg "stats_interval" "0"
[ "$stats_set" -ge 1 ] && echo "-u $stats_set"
config_get loglevel $cfg "loglevel" "5"
[ "$stats_set" -ge 1 ] && config_get loglevel $cfg "loglevel" "6"
echo "-l $loglevel"
config_list_foreach $cfg "extra_args" echo
}
service_triggers() {
procd_add_reload_trigger "linuxptp"
}
start_service() {
local cmdline
config_load linuxptp
cmdline=$(make_cmdline $ID) || return 1
log info "Starting phc2sys: $cmdline"
procd_open_instance phc2sys
procd_set_param command $cmdline
procd_set_param stdout 1
procd_set_param stderr 1
procd_close_instance
}
stop_service() {
log info "phc2sys exiting (if running)."
}
|