batctl: upgrade package to latest release 2017.2
[lede-routing/.git] / hnetd / files / hnetd.init
1 #!/bin/sh /etc/rc.common
2
3 # XXX - is there something that should cause reload? or can we just
4 # use info from netifd and let it handle dynamic changes? let's hope
5 # so..
6
7 START=90
8 STOP=10
9 USE_PROCD=1
10
11 DNSMASQ_DIR=/tmp/dnsmasq.d
12 DNSMASQ_SCRIPT=/etc/init.d/dnsmasq
13 OHP_SCRIPT=/usr/sbin/hnetd-ohp-script
14 OHP_BINARY=/usr/sbin/ohybridproxy
15 DDZ_SCRIPT=/usr/sbin/hnetd-ddz-script
16 DDZ_BINARY=/usr/sbin/zonestitcher
17 PCP_SCRIPT=/usr/sbin/hnetd-pcp-script
18 PCP_BINARY=/usr/sbin/minimalist-pcproxy
19 MULTICAST_SCRIPT=/usr/sbin/hnet-multicast
20 WIFI_SCRIPT=/usr/sbin/autowifi
21
22 start_service() {
23     . /lib/functions.sh
24     . /lib/functions/network.sh
25     config_load hnet
26
27     mkdir -p $DNSMASQ_DIR
28     procd_open_instance
29     procd_set_param command /usr/sbin/hnetd
30
31     # SD parts are here (make configurable?)
32     if [ -f $OHP_BINARY -a -f $DNSMASQ_SCRIPT ]
33     then
34         mkdir -p $DNSMASQ_DIR
35         procd_append_param command -d $DNSMASQ_SCRIPT
36         procd_append_param command -f $DNSMASQ_DIR/hnet.conf
37         procd_append_param command -o $OHP_SCRIPT
38         HOSTNAME=`cat /proc/sys/kernel/hostname`
39         if [ -n "$HOSTNAME" ]
40         then
41             procd_append_param command -n "$HOSTNAME"
42         fi
43         if [ -f $DDZ_BINARY ]
44         then
45             procd_append_param command -z $DDZ_SCRIPT
46         fi
47     fi
48         
49     # Enable multicast if present and installed
50     if [ -f "$MULTICAST_SCRIPT" ]
51     then
52         $MULTICAST_SCRIPT status && procd_append_param command -M "$MULTICAST_SCRIPT"
53     fi
54
55     config_get enableval wifi enable
56     if [ -f "$WIFI_SCRIPT" -a "$enableval" = "1" ]; then
57         wifiopt=$WIFI_SCRIPT
58         config_get ssidval wifi ssid
59         config_get passval wifi password
60         if [ -n "$ssidval" -a -n "$passval"  ]; then
61             wifiopt=${wifiopt},${ssidval}:${passval}
62         fi
63         procd_append_param command -w "$wifiopt"
64     fi
65
66     # Enable PCP, if it's present
67     if [ -f $PCP_BINARY -a -f $PCP_SCRIPT ]
68     then
69         procd_append_param command -c $PCP_SCRIPT
70     fi
71
72     # State file
73     config_get val pa persistent_store
74     procd_append_param command -s ${val:-/tmp/hnetd.pa_state}
75
76     # Routing script
77     procd_append_param command -r /usr/sbin/hnetd-routing
78
79     [ -x /usr/sbin/hnetd-tunnel ] && \
80          procd_append_param command -t /usr/sbin/hnetd-tunnel
81
82     # Prefix assignment (pa)
83     config_get val pa ip4prefix
84     [ -n "$val" ] && procd_append_param command --ip4prefix $val
85
86     config_get val pa ip4mode
87     [ -n "$val" ] && procd_append_param command --ip4mode $val
88
89     config_get val pa ulaprefix
90     [ -n "$val" ] && procd_append_param command --ulaprefix $val
91
92     config_get val pa ulamode
93     [ -n "$val" ] && procd_append_param command --ulamode $val
94
95     # Service discovery (sd)
96     config_get val sd router_name
97     [ -n "$val" ] && procd_append_param command -n $val
98
99     config_get val sd domain_name
100     [ -n "$val" ] && procd_append_param command -m $val
101
102     # Security (needs security-enabled build)
103     config_get val security password
104     [ -n "$val" ] && procd_append_param command --password $val
105
106     config_get val security certificate_file
107     [ -n "$val" ] && procd_append_param command --certificate $val
108
109     config_get val security private_key_file
110     [ -n "$val" ] && procd_append_param command --privatekey $val
111
112     config_get val security trust_store
113     [ -n "$val" ] && procd_append_param command --trust $val
114
115     config_get val security trust_certificate_file
116     [ -n "$val" ] && procd_append_param command --verify-path $val
117
118     # For more verbose logging, uncomment this:
119     #procd_append_param command --loglevel 7
120
121     procd_set_param respawn
122     procd_close_instance
123 }
124
125 service_triggers() {
126     procd_add_reload_trigger "hnet"
127 }