OSDN Git Service

8c0d3a27ac7876bb57c07ac680e04c308f2295ca
[immortalwrt/immortalwrt.git] / package / kernel / shortcut-fe / files / etc / init.d / shortcut-fe
1 #!/bin/sh /etc/rc.common
2 #
3 # Copyright (c) 2014-2015 The Linux Foundation. All rights reserved.
4 # Permission to use, copy, modify, and/or distribute this software for
5 # any purpose with or without fee is hereby granted, provided that the
6 # above copyright notice and this permission notice appear in all copies.
7 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
13 # OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14 #
15
16 #SFE connection manager has a lower priority, it should be started after other connection manager
17 #to detect the existence of connection manager with higher priority
18 START=72
19
20 have_cm() {
21         [ -d "/sys/kernel/debug/ecm" ] && echo 1 && return
22
23         echo 0
24 }
25
26 #load shortcut-fe connection manager
27 load_sfe_cm() {
28         local kernel_version=$(uname -r)
29
30         #shortcut-fe-drv.ko is not needed because other connection manager is not enabled
31         [ -d "/sys/module/shortcut_fe_drv" ] && rmmod shortcut_fe_drv
32
33         [ -e "/lib/modules/$kernel_version/fast-classifier.ko" ] && {
34                 [ -d /sys/module/fast_classifier ] || insmod /lib/modules/$kernel_version/fast-classifier.ko && return
35         }
36
37         [ -e "/lib/modules/$kernel_version/shortcut-fe-cm.ko" ] && {
38                 [ -d /sys/module/shortcut_fe_cm ] || insmod /lib/modules/$kernel_version/shortcut-fe-cm.ko && return
39         }
40 }
41
42 start() {
43         [ "$(have_cm)" = "1" ] || load_sfe_cm
44 }
45
46 stop() {
47         [ -d /sys/module/shortcut_fe_cm ] && rmmod shortcut_fe_cm
48         [ -d /sys/module/fast_classifier ] && rmmod fast_classifier
49 }