2717803386e7cfff4bfefb65a9cf7e2ac2428d5a
[project/luci.git] / contrib / package / meshwizard / files / usr / bin / meshwizard / helpers / setup_olsrd.sh
1 #!/bin/sh
2 # Sets up olsrd
3
4 . /lib/functions.sh
5 . $dir/functions.sh
6
7 # Clean the config, remove interface wlan
8 handle_interface() {
9         config_get interface "$1" interface
10         if [ "$interface" = "wlan" ]; then
11                 uci delete olsrd.$1
12         fi
13 }
14 config_load olsrd
15 config_foreach handle_interface Interface
16
17 #Rename olsrd basic settings
18 handle_olsrd() {
19         if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
20                 section_rename olsrd $1 olsrd
21         fi
22 }
23 config_foreach handle_olsrd olsrd
24
25 # Rename interface defaults
26 handle_interfacedefaults() {
27         if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
28                 section_rename olsrd $1 InterfaceDefaults
29         fi
30 }
31 config_foreach handle_interfacedefaults InterfaceDefaults
32
33 # Set basic olsrd settings
34 if [ "$ipv6_enabled" = 1 ] && [ "$has_ipv6" == "1" ]; then
35         uci set olsrd.olsrd.IpVersion="6and4"
36 fi
37
38
39 # Setup new InterfaceDefaults
40 uci set olsrd.InterfaceDefaults=InterfaceDefaults
41 set_defaults "olsr_interfacedefaults_" olsrd.InterfaceDefaults
42
43 # Rename nameservice, dyngw and httpinfo plugins
44
45 handle_plugin() {
46         config_get library "$1" library
47         if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
48                 new="$(echo $library | cut -d '.' -f 1)"
49                 section_rename olsrd "$1" "$new"
50         fi
51 }
52 config_foreach handle_plugin LoadPlugin
53 uci -q delete olsrd.olsrd_httpinfo
54 uci -q delete olsrd.olsrd_dyn_gw
55
56 uci_commitverbose "Cleanup olsrd config" olsrd
57
58
59 # Setup nameservice plugin
60 if [ -n "$profile_suffix" ]; then
61         suffix=".$profile_suffix"
62 else
63         suffix=".olsr"
64 fi
65 uci batch << EOF
66         set olsrd.olsrd_nameservice=LoadPlugin
67         set olsrd.olsrd_nameservice.library="olsrd_nameservice.so.0.3"
68         set olsrd.olsrd_nameservice.latlon_file="/var/run/latlon.js"
69         set olsrd.olsrd_nameservice.hosts_file="/var/etc/hosts.olsr"
70         set olsrd.olsrd_nameservice.sighup_pid_file="/var/run/dnsmasq.pid"
71         set olsrd.olsrd_nameservice.services_file="/var/run/services_olsr"
72         set olsrd.olsrd_nameservice.suffix="$suffix"
73 EOF
74
75 uci_commitverbose "Setup olsr nameservice plugin" olsrd
76
77 # Setup dyngw_plain
78
79 # If Sharing of Internet is enabled then enable dyngw_plain plugin
80
81 if [ "$general_sharenet" == 1 ]; then
82         uci set olsrd.dyngw_plain=LoadPlugin
83         uci set olsrd.dyngw_plain.ignore=0
84         uci set olsrd.dyngw_plain.library="olsrd_dyn_gw_plain.so.0.4"
85
86         uci_commitverbose "Setup olsrd_dyngw_plain plugin" olsrd
87 fi
88
89 # Setup watchdog
90 uci batch << EOF
91         set olsrd.olsrd_watchdog=LoadPlugin
92         set olsrd.olsrd_watchdog.library="olsrd_watchdog.so.0.1"
93         set olsrd.olsrd_watchdog.file="/var/run/olsrd.watchdog"
94         set olsrd.olsrd_watchdog.interval=30
95 EOF
96 uci_commitverbose "Setup olsr watchdog plugin" olsrd
97
98 # Setup jsoninfo
99 uci batch << EOF
100         set olsrd.olsrd_jsoninfo=LoadPlugin
101         set olsrd.olsrd_jsoninfo.library="olsrd_jsoninfo.so.0.0"
102 EOF
103 uci_commitverbose "Setup olsr jsoninfo plugin" olsrd