+ case "$library" in
+ olsrd_nameservice.*)
+ config_get name "$cfg" name
+ [ -z "$name" ] && config_set "$cfg" name $SYSTEM_HOSTNAME
+
+ config_get suffix "$cfg" suffix
+ [ -z "$suffix" ] && config_set "$cfg" suffix '.olsr'
+
+ config_get lat "$cfg" lat
+ config_get lon "$cfg" lon
+ config_get latlon_infile "$cfg" latlon_infile
+ if [ \( -z "$lat" -o -z "$lat" \) -a -z "$latlon_infile" ]; then
+ if [ -f '/var/run/latlon.txt' ]; then
+ config_set "$cfg" lat ''
+ config_set "$cfg" lon ''
+ config_set "$cfg" latlon_infile '/var/run/latlon.txt'
+ else
+ config_set "$cfg" lat "$SYSTEM_LAT"
+ config_set "$cfg" lon "$SYSTEM_LON"
+ fi
+ fi
+
+ config_get latlon_file "$cfg" latlon_file
+ [ -z "$latlon_file" ] && config_set "$cfg" latlon_file '/var/run/latlon.js'
+ ;;
+ esac
+
+ echo -n "${N}LoadPlugin \"$library\"${N}{"
+ config_write_options "$OLSRD_LOADPLUGIN_SCHEMA" "$cfg" olsrd_write_plparam "${T}"
+ echo "${N}}"
+
+ return 0
+}
+
+olsrd_write_interface() {
+ local cfg=$1
+ validate_varname "$cfg" || return 0
+ local ignore
+ local interfaces
+ local interface
+ local ifnames
+
+ config_get_bool ignore "$cfg" ignore 0
+ [ "$ignore" -ne 0 ] && return 0
+
+ ifnames=
+ config_get interfaces "$cfg" interface
+ for interface in $interfaces; do
+ if validate_varname "$interface"; then
+ if get_ifname "$interface"; then
+ ifnames="$ifnames \"$IFNAME\""
+ else
+ echo "Warning: Interface '$interface' not found, skipped" 1>&2
+ fi
+ else
+ warning_invalid_value olsrd "$cfg" "interface"
+ fi
+ done
+
+ [ -z "$ifnames" ] && return 0
+
+ echo -n "${N}Interface$ifnames${N}{"
+ config_write_options "$OLSRD_INTERFACE_SCHEMA" "$cfg" olsrd_write_option "${T}"
+ echo "${N}}"
+ INTERFACES_COUNT=$((INTERFACES_COUNT + 1))
+
+ return 0
+}
+
+olsrd_update_schema() {
+ local command="$1"
+ validate_varname "$command" || return 0
+ local varname="$2"
+ validate_varname "$varname" || return 0
+ local value="$3"
+ local cfg="$CONFIG_SECTION"
+ local cfgt
+ local cur_varname
+
+ config_get cfgt "$cfg" TYPE
+ case "$cfgt" in
+ olsrd) config_update_schema OLSRD_OLSRD_SCHEMA "$command" "$varname" "$value";;
+ IpcConnect) config_update_schema OLSRD_IPCCONNECT_SCHEMA "$command" "$varname" "$value";;
+ LoadPlugin) config_update_schema OLSRD_LOADPLUGIN_SCHEMA "$command" "$varname" "$value";;
+ Interface) config_update_schema OLSRD_INTERFACE_SCHEMA "$command" "$varname" "$value";;
+ esac
+
+ return 0
+}
+
+olsrd_write_config() {
+ OLSRD_COUNT=0
+ config_foreach olsrd_write_olsrd olsrd
+ IPCCONNECT_COUNT=0
+ config_foreach olsrd_write_ipcconnect IpcConnect