1 #!/bin/sh /etc/rc.common
5 CONF_F
=/var
/etc
/olsrd.conf
7 DEFAULT
=/etc
/default
/olsrd
11 format_olsr_option
() {
13 echo -n "$str" |
tr -d '\n\r\t\v '
18 echo -n "$str" |
tr -d '\n\r\v'
23 echo -n "$str" |
tr -d '\n\r\v"'
26 format_uci_varname
() {
28 echo -n "$str" |
sed -e 's/[^a-zA-Z0-9_]//g'
36 for option
in $CONFIG_OPTIONS
38 config_get value
"$cfg" "$option"
39 option
=$
(format_olsr_option
"$option")
40 value
=$
(format_olsr_value
"$value")
42 if [ -n "$value" -a "$option" != "ConfigFile" ]; then
43 echo "$option $value" >> "$CONF_F"
54 config_get netaddr
"$cfg" NetAddr
55 config_get netmask
"$cfg" NetMask
56 netaddr
=$
(format_olsr_option
"$netaddr")
57 netmask
=$
(format_olsr_option
"$netmask")
59 if [ -n "$netaddr" -a -n "$netmask" ]; then
60 if [ "$HNA4_COUNT" -le 0 ]; then
61 echo "Hna4" >> "$CONF_F"
65 echo " $netaddr $netmask" >> "$CONF_F"
66 HNA4_COUNT
=$
((HNA4_COUNT
+ 1))
71 if [ "$HNA4_COUNT" -gt 0 ]; then
82 config_get netaddr
"$cfg" NetAddr
83 config_get prefix
"$cfg" Prefix
84 netaddr
=$
(format_olsr_option
"$netaddr")
85 prefix
=$
(format_olsr_option
"$prefix")
87 if [ -n "$netaddr" -a -n "$prefix" ]; then
88 if [ "$HNA6_COUNT" -le 0 ]; then
89 echo "Hna6" >> "$CONF_F"
93 echo " $netaddr $prefix" >> "$CONF_F"
94 HNA6_COUNT
=$
((HNA6_COUNT
+ 1))
99 if [ "$HNA6_COUNT" -gt 0 ]; then
100 echo "}" >> "$CONF_F"
105 foreach_IpcConnect
() {
111 echo "IpcConnect" >> "$CONF_F"
112 echo -n "{" >> "$CONF_F"
114 for option
in $CONFIG_OPTIONS
116 config_get value
"$cfg" "$option"
117 option
=$
(format_olsr_option
"$option")
118 value
=$
(format_olsr_value
"$value")
120 if [ -n "$value" ]; then
121 if [ "$option" = "Host" ]; then
125 echo -n " $option $item" >> "$CONF_F"
127 elif [ "$option" = "Net" ]; then
131 if [ $
((c
% 2)) -eq 0 ]; then
133 echo -n " $option $item" >> "$CONF_F"
135 echo -n " $item" >> "$CONF_F"
141 echo -n " $option $value" >> "$CONF_F"
147 echo "}" >> "$CONF_F"
151 foreach_LoadPlugin
() {
160 config_get library
"$cfg" Library
161 library
=$
(format_olsr_param
"$library")
163 if [ -n "$library" ]; then
164 echo "LoadPlugin \"$library\"" >> "$CONF_F"
165 echo -n "{" >> "$CONF_F"
167 for option
in $CONFIG_OPTIONS
169 config_get value
"$cfg" "$option"
170 option
=$
(format_olsr_param
"$option")
171 value
=$
(format_olsr_param
"$value")
173 if [ -n "$value" ]; then
174 option
=$
(echo "$option" |
sed -e y
/[_
]/[-]/)
176 is_ip_addr
=$
(echo "$option" |
sed -e 's/[^-]//g')
177 if [ "$is_ip_addr" = "---" ]; then
178 option
=$
(echo "$option" |
sed -e y
/[-]/[.
]/)
181 if [ "$option" = "Ping" -o "$option" = "redistribute" -o "$option" = "Host" -o "$option" = "NonOlsrIf" -o "$option" = "name" -o "$is_ip_addr" = "---" ]; then
185 echo -n " PlParam \"$option\" \"$item\"" >> "$CONF_F"
187 elif [ "$option" = "Net" -o "$option" = "HNA" ]; then
191 if [ $
((c
% 2)) -eq 0 ]; then
193 echo -n " PlParam \"$option\" \"$item" >> "$CONF_F"
195 echo -n " $item\"" >> "$CONF_F"
199 elif [ "$option" != "Library" ]; then
201 echo -n " PlParam \"$option\" \"$value\"" >> "$CONF_F"
207 echo "}" >> "$CONF_F"
212 foreach_Interface
() {
222 config_get interfaces
"$cfg" Interface
224 if [ -n "$interfaces" ]; then
225 echo -n "Interface" >> "$CONF_F"
227 for interface
in $interfaces
229 interface
=$
(format_uci_varname
"$interface")
230 config_get ifnames
"$interface" ifname
231 for ifname
in $ifnames
233 ifname
=$
(format_olsr_param
"$ifname")
234 echo -n " \"$ifname\"" >> "$CONF_F"
239 echo -n "{" >> "$CONF_F"
241 for option
in $CONFIG_OPTIONS
243 config_get value
"$cfg" "$option"
244 option
=$
(format_olsr_option
"$option")
245 value
=$
(format_olsr_value
"$value")
247 if [ -n "$value" ]; then
248 if [ "$option" = "LinkQualityMult" ]; then
252 if [ $
((c
% 2)) -eq 0 ]; then
254 echo -n " $option $item" >> "$CONF_F"
256 echo -n " $item" >> "$CONF_F"
260 elif [ "$option" != "Interface" ]; then
262 echo -n " $option $value" >> "$CONF_F"
268 echo "}" >> "$CONF_F"
275 config_load
/var
/state
/network
280 CONFIG_TYPE
="$cfgtype"
287 if [ "$CONFIG_TYPE" = "OLSR" -a "$varname" = "ConfigFile" ]; then
291 if ! echo "$CONFIG_OPTIONS" |
grep " $varname " > /dev
/null
; then
292 CONFIG_OPTIONS
="$CONFIG_OPTIONS $varname "
299 if [ -n "$USE_CONF_F" ]; then
305 mkdir
-p $
(dirname "$CONF_F")
307 config_foreach foreach_olsr olsr
309 config_foreach foreach_Hna4 Hna4
312 config_foreach foreach_Hna6 Hna6
314 config_foreach foreach_IpcConnect IpcConnect
315 config_foreach foreach_LoadPlugin LoadPlugin
316 config_foreach foreach_Interface Interface
320 [ -z "$USE_CONF_F" ] && write_config
322 [ -f $DEFAULT ] && .
$DEFAULT
323 $BIN -f "$USE_CONF_F" -nofork $OPTIONS &
325 # write pid file (but strip out own pid ($$))
328 echo ${PID%$$} > $PID_F