contrib/meshwizard: Various fixes and cleanups
[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 # Rename interface defaults
11 handle_interfacedefaults() {
12         if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
13                 section_rename olsrd $1 InterfaceDefaults
14         fi
15 }
16 config_load olsrd
17 config_foreach handle_interfacedefaults InterfaceDefaults
18
19 # Setup new InterfaceDefaults
20 uci set olsrd.InterfaceDefaults=InterfaceDefaults
21 set_defaults "olsr_interfacedefaults_" olsrd.InterfaceDefaults
22 uci_commitverbose "Setup olsr interface defaults" olsrd
23
24 # Rename interface for $netrenamed
25 handle_interface() {
26         config_get interface "$1" Interface
27         if [ "$interface" == "$netrenamed" ]; then
28                 if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
29                         section_rename olsrd $1 $netrenamed
30                 fi
31         fi
32 }
33
34 config_foreach handle_interface Interface
35
36 # Setup new interface for $netrenamed
37
38 uci set olsrd.$netrenamed=Interface
39 set_defaults "olsr_interface_" olsrd.$net
40 uci set olsrd.$netrenamed.interface="$netrenamed"
41
42 uci_commitverbose "Setup olsr interface for $netrenamed." olsrd
43
44 # If dhcp-network is inside the mesh_network then add HNA for it
45 dhcprange=$(uci get meshwizard.netconfig.$net\_dhcprange)
46 meshnet="$(uci get profile_$community.profile.mesh_network)"
47
48 uci -q delete olsrd.${netrenamed}clients
49
50 # check if the dhcprange is inside meshnet
51 dhcpinmesh="$($dir/helpers/check-range-in-range.sh $dhcprange $meshnet)"
52
53 # If it is setup hna for it
54 if [ "$dhcpinmesh" == 1 ]; then
55         uci set olsrd.${netrenamed}clients="Hna4"
56         eval $(sh $dir/helpers/ipcalc-cidr.sh $dhcprange)
57         uci set olsrd.${netrenamed}clients.netaddr="$NETWORK"
58         uci set olsrd.${netrenamed}clients.netmask="$NETMASK"
59         uci_commitverbose "Setup HNA for network $dhcprange" olsrd
60 fi
61
62
63 # Rename nameservice, dyngw and httpinfo plugins
64
65 handle_plugin() {
66         config_get library "$1" library
67         if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
68                 new="$(echo $library | cut -d '.' -f 1)"
69                 section_rename olsrd $1 $new
70         fi              
71 }
72 config_foreach handle_plugin LoadPlugin
73
74 # Setup nameservice plugin
75 if [ -n "$profile_suffix" ]; then
76         suffix=".$profile_suffix"
77 else
78         suffix=".olsr"
79 fi
80 uci batch << EOF
81 set olsrd.olsrd_nameservice=LoadPlugin
82 set olsrd.olsrd_nameservice.library="olsrd_nameservice.so.0.3"
83 set olsrd.olsrd_nameservice.latlon_file="/var/run/latlon.js"
84 set olsrd.olsrd_nameservice.hosts_file="/var/etc/hosts.olsr"
85 set olsrd.olsrd_nameservice.sighup_pid_file="/var/run/dnsmasq.pid"
86 set olsrd.olsrd_nameservice.suffix="$suffix"
87 EOF
88
89 uci_commitverbose "Setup olsr nameservice plugin" olsrd
90
91 # Setup dyngw_plain
92
93 # If Sharing of Internet is enabled then enable dyngw_plain plugin
94 sharenet=$(uci -q get meshwizard.general.sharenet)
95
96 if [ "$sharenet" == 1 ]; then
97         uci set olsrd.dyngw_plain=LoadPlugin
98         uci set olsrd.dyngw_plain.ignore=0
99         uci set olsrd.dyngw_plain.library="olsrd_dyn_gw_plain.so.0.4"
100         uci_commitverbose "Setup olsrd_dyngw_plain plugin" olsrd
101 fi
102