contrib/meshwizard: Cleanup and add ssid_scheme option
[project/luci.git] / contrib / package / meshwizard / files / usr / bin / meshwizard / helpers / setup_olsrd.sh
1 #!/bin/sh
2 # Sets up olsrd
3 # arg $1 = net
4
5 net=$1
6
7 . /etc/functions.sh
8 . $dir/functions.sh
9
10 # Clean or delete interface defaults
11 handle_interfacedefaults() {
12 if [ "$cleanup" == 1 ]; then
13 section_cleanup olsrd.$1
14 else
15 if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
16 section_rename olsrd $1 InterfaceDefaults
17 fi
18 fi
19 }
20
21 config_load olsrd
22 config_foreach handle_interfacedefaults InterfaceDefaults
23
24 # Setup new InterfaceDefaults
25
26 uci set olsrd.InterfaceDefaults=InterfaceDefaults
27 set_defaults "olsr_interfacedefaults_" olsrd.InterfaceDefaults
28 uci_commitverbose "Setup olsr interface defaults" olsrd
29
30 # Delete old interface for $netrenamed
31 handle_interface() {
32 config_get interface "$1" Interface
33 if [ "$interface" == "$netrenamed" ]; then
34 if [ "$cleanup" == 1 ]; then
35 section_cleanup olsrd.$1
36 elif [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
37 section_rename olsrd $1 $netrenamed
38 fi
39 fi
40 }
41
42 config_foreach handle_interface Interface
43
44 # Setup new interface for $netrenamed
45
46 uci set olsrd.$netrenamed=Interface
47 set_defaults "olsr_interface_" olsrd.$net
48 uci set olsrd.$netrenamed.interface="$netrenamed"
49
50 uci_commitverbose "Setup olsr interface for $netrenamed." olsrd
51
52 # If dhcp-network is inside the mesh_network then add HNA for it
53 dhcprange=$(uci get meshwizard.netconfig.$net\_dhcprange)
54 meshnet="$(uci get profile_$community.profile.mesh_network)"
55
56 uci -q delete olsrd.${netrenamed}clients
57
58 # check if the dhcprange is inside meshnet
59 dhcpinmesh="$($dir/helpers/check-range-in-range.sh $dhcprange $meshnet)"
60
61 if [ "$dhcpinmesh" == 1 ]; then
62 uci set olsrd.${netrenamed}clients="Hna4"
63 eval $(sh $dir/helpers/ipcalc-cidr.sh $dhcprange)
64 uci set olsrd.${netrenamed}clients.netaddr="$NETWORK"
65 uci set olsrd.${netrenamed}clients.netmask="$NETMASK"
66 uci_commitverbose "Setup HNA for network $dhcprange" olsrd
67 fi
68
69
70 # Delete nameservice, dyngw and httpinfo plugins
71
72 handle_plugin() {
73 config_get library "$1" library
74 if [ "$cleanup" == 1 ]; then
75 case library in
76 olsrd_*)
77 section_cleanup olsrd.$1
78 esac
79 elif [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
80 new="$(echo $library | cut -d '.' -f 1)"
81 section_rename olsrd $1 $new
82 fi
83 }
84 config_foreach handle_plugin LoadPlugin
85
86 # Setup nameservice plugin
87 if [ -n "$profile_suffix" ]; then
88 suffix=".$profile_suffix"
89 else
90 suffix=".olsr"
91 fi
92 uci batch << EOF
93 set olsrd.olsrd_nameservice=LoadPlugin
94 set olsrd.olsrd_nameservice.library="olsrd_nameservice.so.0.3"
95 set olsrd.olsrd_nameservice.latlon_file="/var/run/latlon.js"
96 set olsrd.olsrd_nameservice.hosts_file="/var/etc/hosts.olsr"
97 set olsrd.olsrd_nameservice.sighup_pid_file="/var/run/dnsmasq.pid"
98 set olsrd.olsrd_nameservice.suffix="$suffix"
99 EOF
100
101 uci_commitverbose "Setup olsr nameservice plugin" olsrd
102
103 # Setup dyngw_plain
104
105 # If Sharing of Internet is enabled then enable dyngw_plain plugin
106 sharenet=$(uci -q get meshwizard.general.sharenet)
107
108 if [ -n "$(uci -q get olsrd.dyngw_plain.library)" ]; then
109 section_cleanup olsrd.dyngw_plain
110 fi
111
112 if [ "$sharenet" == 1 ]; then
113 uci set olsrd.dyngw_plain=LoadPlugin
114 uci set olsrd.dyngw_plain.ignore=0
115 uci set olsrd.dyngw_plain.library="olsrd_dyn_gw_plain.so.0.4"
116 uci_commitverbose "Setup olsrd_dyngw_plain plugin"
117 fi
118