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