7 function exitTrapHandler() {
10 if [ -n "$configFileTmp" ]; then
11 rm -f "$configFileTmp"
14 if [[ ${exitCode} -ne 0 ]]; then
15 echo "Exiting with code ${exitCode}"
20 trap exitTrapHandler EXIT
24 scriptDir="$(dirname "$script")"
25 pushd "$scriptDir" &> /dev/null
28 baseDir="$(dirname "$scriptDir")"
30 olsrd="$baseDir/olsrd"
32 arprefreshLib="$baseDir/lib/arprefresh/olsrd_arprefresh.so.0.1"
33 arprefreshLibDir="$(dirname "$arprefreshLib")"
34 dyngwLib="$baseDir/lib/dyn_gw/olsrd_dyn_gw.so.0.5"
35 dyngwLibDir="$(dirname "$dyngwLib")"
36 httpinfoLib="$baseDir/lib/httpinfo/olsrd_httpinfo.so.0.1"
37 httpinfoLibDir="$(dirname "$httpinfoLib")"
38 jsoninfoLib="$baseDir/lib/jsoninfo/olsrd_jsoninfo.so.0.0"
39 jsoninfoLibDir="$(dirname "$jsoninfoLib")"
40 nameserviceLib="$baseDir/lib/nameservice/olsrd_nameservice.so.0.3"
41 nameserviceLibDir="$(dirname "$nameserviceLib")"
42 p2pdinfoLib="$baseDir/lib/p2pd/olsrd_p2pd.so.0.1.0"
43 p2pdinfoLibDir="$(dirname "$p2pdinfoLib")"
44 txtinfoLib="$baseDir/lib/txtinfo/olsrd_txtinfo.so.0.1"
45 txtinfoLibDir="$(dirname "$txtinfoLib")"
49 if [ ! "$(whoami)" = "root" ]; then
50 echo "ERROR: must be root."
57 nc="$(which nc 2> /dev/null)"
60 echo "ERROR: nc doesn't seem to be installed."
74 if [ ! -r "$i" ]; then
75 echo "ERROR: $i is not readable."
83 echo "ERROR: specify network interface and configuration file."
90 # Check network interfaces
92 nwifGrep="$(cat /proc/net/dev | grep -E "^[[:space:]]*$nwif[[:space:]]*:[[:space:]]+.*\$")"
95 if [ -z "$nwifGrep" ]; then
96 echo "ERROR: network interface $nwif doesn't exist."
101 # Check configuration file
102 if [ ! -r "$configFile" ]; then
103 echo "ERROR: configuration file $configFile is not readable."
107 configFileDir="$(dirname "$configFile")"
108 pushd "$configFileDir" &> /dev/null
109 configFileDir="$(pwd)"
111 configFile="$configFileDir/$(basename "$configFile")"
114 # Generate adjusted configuration file
115 regex="^([[:space:]]*[Ii][Nn][Tt][Ee][Rr][Ff][Aa][Cc][Ee][[:space:]]+)"
116 configFileTmp="$(mktemp)"
117 sed -r "s/$regex\"wlan0\"/\1\"$nwif\"/" \
122 echo "Stopping all olsrd instances"
124 killall "$(basename "$olsrd")"
128 echo "Starting $(basename "$olsrd")"
129 export LD_LIBRARY_PATH="$arprefreshLibDir:$dyngwLibDir:$httpinfoLibDir:$jsoninfoLibDir:$nameserviceLibDir:$p2pdinfoLibDir:$txtinfoLibDir"
130 "$olsrd" -f "$configFileTmp" -nofork & #> /dev/null &
134 echo -n "Sleeping a bit "
142 echo "Generating effective configuration file"
143 echo " $configFile.txt"
145 echo "/olsrd.conf" | \
146 nc 127.0.0.1 9090 | \
148 sed -r "s/$regex\"$nwif\"/\1\"wlan0\"/" \
150 chown --reference="$configFile" "$configFile.txt"
154 echo "Stopping all $(basename "$olsrd") instances"
156 killall "$(basename "$olsrd")"
160 rm -f "$configFileTmp"