]> rtime.felk.cvut.cz Git - socketcan-devel.git/blob - etc/can_if
candev: allow SJW user setting for bittiming calculation
[socketcan-devel.git] / etc / can_if
1 #!/bin/sh
2
3 ### BEGIN INIT INFO
4 # Provides:           can_if
5 # Required-Start:     $local_fs $syslog mountkernfs
6 # Required-Stop:      $local_fs $syslog mountkernfs
7 # Default-Start:      2 3 4 5
8 # Default-Stop:       0 1 6
9 # Short-Description:  Starts the configured CAN-Interfaces and creates virtual CAN Interfaces on the system.
10 ### END INIT INFO
11
12 #
13 # $Id$
14 #
15 # Simple script to start CAN and VCAN interfaces with netlink configuration
16 #
17 # Copyright (c) 2009 Volkswagen Group Electronic Research
18 #
19
20 # Exit if 'ip' from the iproute2 package is not installed
21 test -x /sbin/ip || exit 0
22
23 # On some systems the automatic module loading via
24 # /etc/modules.conf is quite slow. To ensure the immediately 
25 # availability of specific modules you can define critical
26 # modules in the PROBE variable. E.g. PROBE="can-tp20"
27
28 # Exit if modprobe is not installed
29 test -x /sbin/modprobe || exit 0
30
31 # The syntax for the CAN devices is: devname[@bitrate][,restart-ms]
32 # example CAN_IF="can0 can1@500000 can2@500000,200 can3,500"
33 CAN_IF=""
34 VCAN_IF="vcan0 vcan1 vcan2 vcan3"
35 PROBE="vcan"
36
37 case "$1" in
38         start|force-reload)
39         if [ -n "$PROBE" ] ; then
40                 echo -n "Extra probing CAN modules:"
41                 for MODULE in $PROBE; do
42                         echo -n " "$MODULE
43                         /sbin/modprobe -q $MODULE
44                 done
45                 echo "."
46         fi
47         if [ -n "$CAN_IF" ] ; then
48                 echo -n "Enabling CAN interfaces:"
49                 for IF in $CAN_IF; do
50                         echo -n " "$IF
51                         DEVICE=${IF%@*}
52                         DEVICE=${DEVICE%,*}
53                         HASBTR=`echo $IF | grep "@"`
54                         if [ -n "$HASBTR" ]; then
55                                 BITRATE=${IF#*@}
56                                 BITRATE=${BITRATE%,*}
57                                 /sbin/ip link set $DEVICE type can bitrate $BITRATE
58                         fi
59                         HASMS=`echo $IF | grep ","` 
60                         if [ -n "$HASMS" ]; then
61                                 RESTARTMS=${IF#*,}
62                                 /sbin/ip link set $DEVICE type can restart-ms $RESTARTMS
63                         fi
64                         /sbin/ip link set $DEVICE up
65                 done
66                 echo "."
67         fi
68         if [ -n "$VCAN_IF" ] ; then
69                 echo -n "Creating and enabling virtual CAN interfaces:"
70                 for IF in $VCAN_IF; do
71                         echo -n " "$IF
72                         /sbin/ip link add name $IF type vcan
73                         /sbin/ip link set $IF up
74                 done
75                 echo "."
76         fi
77         ;;
78         restart|reload)
79         if [ -n "$CAN_IF" ] ; then
80                 echo -n "Restarting CAN interfaces:"
81                 for IF in $CAN_IF; do
82                         DEVICE=${IF%@*}
83                         DEVICE=${DEVICE%,*}
84                         echo -n " "$DEVICE
85                         /sbin/ip link set $DEVICE down
86                         /sbin/ip link set $DEVICE up
87                 done
88                 echo "."
89         fi
90         if [ -n "$VCAN_IF" ] ; then
91                 echo -n "Restarting virtual CAN interfaces:"
92                 for IF in $VCAN_IF; do
93                         echo -n " "$IF
94                         /sbin/ip link set $IF down
95                         /sbin/ip link set $IF up
96                 done
97                 echo "."
98         fi
99         ;;
100         stop)
101         if [ -n "$CAN_IF" ] ; then
102                 echo -n "Shutting down CAN interfaces:"
103                 for IF in $CAN_IF; do
104                         DEVICE=${IF%@*}
105                         DEVICE=${DEVICE%,*}
106                         echo -n " "$DEVICE
107                         /sbin/ip link set $DEVICE down
108                 done
109                 echo "."
110         fi
111         if [ -n "$VCAN_IF" ] ; then
112                 echo -n "Shutting down and removing virtual CAN interfaces:"
113                 for IF in $VCAN_IF; do
114                         echo -n " "$IF
115                         /sbin/ip link set $IF down
116                         /sbin/ip link del $IF
117                 done
118                 echo "."
119         fi
120         ;;
121         *)
122         echo "Usage: /etc/init.d/can_if {start|stop|restart|reload|force-reload}"
123         exit 1
124 esac
125
126 exit 0