fix olsrd cflags handling, add new init script and config by Alina Friedrichsen
git-svn-id: svn://svn.openwrt.org/openwrt/packages@9431 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
312331dcf2
commit
545ba27284
@ -102,7 +102,7 @@ define Build/Compile
|
||||
$(MAKE) -C "$(PKG_BUILD_DIR)" \
|
||||
$(TARGET_CONFIGURE_OPTS) \
|
||||
NODEBUG=1 \
|
||||
OFLAGS="$(TARGET_CFLAGS)" \
|
||||
CFLAGS="$(TARGET_CFLAGS)" \
|
||||
OS="linux" \
|
||||
INSTALL_PREFIX="$(PKG_INSTALL_DIR)" \
|
||||
LIBDIR="$(PKG_INSTALL_DIR)/usr/lib" \
|
||||
@ -114,10 +114,11 @@ define Build/Compile
|
||||
endef
|
||||
|
||||
define Package/olsrd/install
|
||||
$(INSTALL_DIR) $(1)/etc
|
||||
$(CP) $(PKG_INSTALL_DIR)/etc/olsrd.conf $(1)/etc/
|
||||
$(INSTALL_DIR) $(1)/etc/config
|
||||
$(INSTALL_DATA) ./files/olsr.config $(1)/etc/config/olsr
|
||||
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/olsrd.conf $(1)/etc/
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(CP) $(PKG_INSTALL_DIR)/usr/sbin/olsrd $(1)/usr/sbin/
|
||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/olsrd $(1)/usr/sbin/
|
||||
$(INSTALL_DIR) $(1)/etc/init.d
|
||||
$(INSTALL_BIN) ./files/olsrd.init $(1)/etc/init.d/olsrd
|
||||
endef
|
||||
|
40
net/olsrd/files/olsr.config
Normal file
40
net/olsrd/files/olsr.config
Normal file
@ -0,0 +1,40 @@
|
||||
config "olsr" "general"
|
||||
option DebugLevel '0'
|
||||
option IpVersion '4'
|
||||
option AllowNoInt 'yes'
|
||||
option Pollrate '0.025'
|
||||
option TcRedundancy '2'
|
||||
option NatThreshold '0.9'
|
||||
option MprCoverage '7'
|
||||
option LinkQualityFishEye '1'
|
||||
option LinkQualityWinSize '100'
|
||||
option LinkQualityDijkstraLimit '0 9.0'
|
||||
option LinkQualityLevel '2'
|
||||
option UseHysteresis 'no'
|
||||
|
||||
config "LoadPlugin" "arprefresh"
|
||||
option Library 'olsrd_arprefresh.so.0.1'
|
||||
|
||||
config "LoadPlugin" "dyn_gw_plain"
|
||||
option Library 'olsrd_dyn_gw_plain.so.0.4'
|
||||
|
||||
config "LoadPlugin" "nameservice"
|
||||
option Library 'olsrd_nameservice.so.0.3'
|
||||
option name 'sven-ola-gs'
|
||||
option hosts_file '/var/etc/hosts'
|
||||
option suffix '.olsr'
|
||||
option latlon_infile '/var/run/latlon.txt'
|
||||
|
||||
config "LoadPlugin" "txtinfo"
|
||||
option Library 'olsrd_txtinfo.so.0.1'
|
||||
option Accept '127.0.0.1'
|
||||
|
||||
config "Interface" "if1"
|
||||
option HelloInterval '6.0'
|
||||
option HelloValidityTime '108.0'
|
||||
option TcInterval '4.0'
|
||||
option TcValidityTime '324.0'
|
||||
option MidInterval '18.0'
|
||||
option MidValidityTime '324.0'
|
||||
option HnaInterval '18.0'
|
||||
option HnaValidityTime '108.0'
|
@ -1,22 +1,331 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2006 OpenWrt.org
|
||||
START=50
|
||||
|
||||
BIN=olsrd
|
||||
CONF_F=/var/etc/olsrd.conf
|
||||
USE_CONF_F=
|
||||
DEFAULT=/etc/default/olsrd
|
||||
RUN_D=/var/run
|
||||
PID_F=$RUN_D/$BIN.pid
|
||||
|
||||
format_olsr_option() {
|
||||
local str="$*"
|
||||
echo -n "$str" | tr -d '\n\r\t\v '
|
||||
}
|
||||
|
||||
format_olsr_value() {
|
||||
local str="$*"
|
||||
echo -n "$str" | tr -d '\n\r\v'
|
||||
}
|
||||
|
||||
format_olsr_param() {
|
||||
local str="$*"
|
||||
echo -n "$str" | tr -d '\n\r\v"'
|
||||
}
|
||||
|
||||
format_uci_varname() {
|
||||
local str="$*"
|
||||
echo -n "$str" | sed -e 's/[^a-zA-Z0-9_]//g'
|
||||
}
|
||||
|
||||
foreach_olsr() {
|
||||
local cfg="$1"
|
||||
local option
|
||||
local value
|
||||
|
||||
for option in $CONFIG_OPTIONS
|
||||
do
|
||||
config_get value "$cfg" "$option"
|
||||
option=$(format_olsr_option "$option")
|
||||
value=$(format_olsr_value "$value")
|
||||
|
||||
if [ -n "$value" -a "$option" != "ConfigFile" ]; then
|
||||
echo "$option $value" >> "$CONF_F"
|
||||
fi
|
||||
done
|
||||
echo >> "$CONF_F"
|
||||
}
|
||||
|
||||
foreach_Hna4() {
|
||||
local cfg="$1"
|
||||
local netaddr
|
||||
local netmask
|
||||
|
||||
config_get netaddr "$cfg" NetAddr
|
||||
config_get netmask "$cfg" NetMask
|
||||
netaddr=$(format_olsr_option "$netaddr")
|
||||
netmask=$(format_olsr_option "$netmask")
|
||||
|
||||
if [ -n "$netaddr" -a -n "$netmask" ]; then
|
||||
if [ "$HNA4_COUNT" -le 0 ]; then
|
||||
echo "Hna4" >> "$CONF_F"
|
||||
echo "{" >> "$CONF_F"
|
||||
fi
|
||||
|
||||
echo " $netaddr $netmask" >> "$CONF_F"
|
||||
HNA4_COUNT=$((HNA4_COUNT + 1))
|
||||
fi
|
||||
}
|
||||
|
||||
write_Hna4() {
|
||||
if [ "$HNA4_COUNT" -gt 0 ]; then
|
||||
echo "}" >> "$CONF_F"
|
||||
echo >> "$CONF_F"
|
||||
fi
|
||||
}
|
||||
|
||||
foreach_Hna6() {
|
||||
local cfg="$1"
|
||||
local netaddr
|
||||
local netmask
|
||||
|
||||
config_get netaddr "$cfg" NetAddr
|
||||
config_get prefix "$cfg" Prefix
|
||||
netaddr=$(format_olsr_option "$netaddr")
|
||||
prefix=$(format_olsr_option "$prefix")
|
||||
|
||||
if [ -n "$netaddr" -a -n "$prefix" ]; then
|
||||
if [ "$HNA6_COUNT" -le 0 ]; then
|
||||
echo "Hna6" >> "$CONF_F"
|
||||
echo "{" >> "$CONF_F"
|
||||
fi
|
||||
|
||||
echo " $netaddr $prefix" >> "$CONF_F"
|
||||
HNA6_COUNT=$((HNA6_COUNT + 1))
|
||||
fi
|
||||
}
|
||||
|
||||
write_Hna6() {
|
||||
if [ "$HNA6_COUNT" -gt 0 ]; then
|
||||
echo "}" >> "$CONF_F"
|
||||
echo >> "$CONF_F"
|
||||
fi
|
||||
}
|
||||
|
||||
foreach_IpcConnect() {
|
||||
local cfg="$1"
|
||||
local option
|
||||
local value
|
||||
local c
|
||||
|
||||
echo "IpcConnect" >> "$CONF_F"
|
||||
echo -n "{" >> "$CONF_F"
|
||||
|
||||
for option in $CONFIG_OPTIONS
|
||||
do
|
||||
config_get value "$cfg" "$option"
|
||||
option=$(format_olsr_option "$option")
|
||||
value=$(format_olsr_value "$value")
|
||||
|
||||
if [ -n "$value" ]; then
|
||||
if [ "$option" = "Host" ]; then
|
||||
for item in $value
|
||||
do
|
||||
echo >> "$CONF_F"
|
||||
echo -n " $option $item" >> "$CONF_F"
|
||||
done
|
||||
elif [ "$option" = "Net" ]; then
|
||||
c=0
|
||||
for item in $value
|
||||
do
|
||||
if [ $((c % 2)) -eq 0 ]; then
|
||||
echo >> "$CONF_F"
|
||||
echo -n " $option $item" >> "$CONF_F"
|
||||
else
|
||||
echo -n " $item" >> "$CONF_F"
|
||||
fi
|
||||
c=$((c + 1))
|
||||
done
|
||||
else
|
||||
echo >> "$CONF_F"
|
||||
echo -n " $option $value" >> "$CONF_F"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
echo >> "$CONF_F"
|
||||
echo "}" >> "$CONF_F"
|
||||
echo >> "$CONF_F"
|
||||
}
|
||||
|
||||
foreach_LoadPlugin() {
|
||||
local cfg="$1"
|
||||
local library
|
||||
local option
|
||||
local value
|
||||
local is_ip_addr
|
||||
local item
|
||||
local c
|
||||
|
||||
config_get library "$cfg" Library
|
||||
library=$(format_olsr_param "$library")
|
||||
|
||||
if [ -n "$library" ]; then
|
||||
echo "LoadPlugin \"$library\"" >> "$CONF_F"
|
||||
echo -n "{" >> "$CONF_F"
|
||||
|
||||
for option in $CONFIG_OPTIONS
|
||||
do
|
||||
config_get value "$cfg" "$option"
|
||||
option=$(format_olsr_param "$option")
|
||||
value=$(format_olsr_param "$value")
|
||||
|
||||
if [ -n "$value" ]; then
|
||||
option=$(echo "$option" | sed -e y/[_]/[-]/)
|
||||
|
||||
is_ip_addr=$(echo "$option" | sed -e 's/[^-]//g')
|
||||
if [ "$is_ip_addr" = "---" ]; then
|
||||
option=$(echo "$option" | sed -e y/[-]/[.]/)
|
||||
fi
|
||||
|
||||
if [ "$option" = "Ping" -o "$option" = "redistribute" -o "$option" = "Host" -o "$option" = "NonOlsrIf" -o "$option" = "name" -o "$is_ip_addr" = "---" ]; then
|
||||
for item in $value
|
||||
do
|
||||
echo >> "$CONF_F"
|
||||
echo -n " PlParam \"$option\" \"$item\"" >> "$CONF_F"
|
||||
done
|
||||
elif [ "$option" = "Net" -o "$option" = "HNA" ]; then
|
||||
c=0
|
||||
for item in $value
|
||||
do
|
||||
if [ $((c % 2)) -eq 0 ]; then
|
||||
echo >> "$CONF_F"
|
||||
echo -n " PlParam \"$option\" \"$item" >> "$CONF_F"
|
||||
else
|
||||
echo -n " $item\"" >> "$CONF_F"
|
||||
fi
|
||||
c=$((c + 1))
|
||||
done
|
||||
elif [ "$option" != "Library" ]; then
|
||||
echo >> "$CONF_F"
|
||||
echo -n " PlParam \"$option\" \"$value\"" >> "$CONF_F"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
echo >> "$CONF_F"
|
||||
echo "}" >> "$CONF_F"
|
||||
echo >> "$CONF_F"
|
||||
fi
|
||||
}
|
||||
|
||||
foreach_Interface() {
|
||||
local cfg="$1"
|
||||
local interfaces
|
||||
local interface
|
||||
local ifname
|
||||
local option
|
||||
local value
|
||||
local item
|
||||
local c
|
||||
|
||||
config_get interfaces "$cfg" Interface
|
||||
|
||||
if [ -n "$interfaces" ]; then
|
||||
echo -n "Interface" >> "$CONF_F"
|
||||
|
||||
for interface in $interfaces
|
||||
do
|
||||
interface=$(format_uci_varname "$interface")
|
||||
config_get ifnames "$interface" ifname
|
||||
for ifname in $ifnames
|
||||
do
|
||||
ifname=$(format_olsr_param "$ifname")
|
||||
echo -n " \"$ifname\"" >> "$CONF_F"
|
||||
done
|
||||
done
|
||||
|
||||
echo >> "$CONF_F"
|
||||
echo -n "{" >> "$CONF_F"
|
||||
|
||||
for option in $CONFIG_OPTIONS
|
||||
do
|
||||
config_get value "$cfg" "$option"
|
||||
option=$(format_olsr_option "$option")
|
||||
value=$(format_olsr_value "$value")
|
||||
|
||||
if [ -n "$value" ]; then
|
||||
if [ "$option" = "LinkQualityMult" ]; then
|
||||
c=0
|
||||
for item in $value
|
||||
do
|
||||
if [ $((c % 2)) -eq 0 ]; then
|
||||
echo >> "$CONF_F"
|
||||
echo -n " $option $item" >> "$CONF_F"
|
||||
else
|
||||
echo -n " $item" >> "$CONF_F"
|
||||
fi
|
||||
c=$((c + 1))
|
||||
done
|
||||
elif [ "$option" != "Interface" ]; then
|
||||
echo >> "$CONF_F"
|
||||
echo -n " $option $value" >> "$CONF_F"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
echo >> "$CONF_F"
|
||||
echo "}" >> "$CONF_F"
|
||||
fi
|
||||
}
|
||||
|
||||
write_config() {
|
||||
include /lib/network
|
||||
scan_interfaces
|
||||
config_load /var/state/network
|
||||
|
||||
config_cb() {
|
||||
local cfgtype="$1"
|
||||
local name="$2"
|
||||
CONFIG_TYPE="$cfgtype"
|
||||
}
|
||||
|
||||
option_cb() {
|
||||
local varname="$1"
|
||||
local value="$2"
|
||||
|
||||
if [ "$CONFIG_TYPE" = "OLSR" -a "$varname" = "ConfigFile" ]; then
|
||||
USE_CONF_F="$value"
|
||||
fi
|
||||
|
||||
if ! echo "$CONFIG_OPTIONS" | grep " $varname " > /dev/null; then
|
||||
CONFIG_OPTIONS="$CONFIG_OPTIONS $varname "
|
||||
fi
|
||||
}
|
||||
|
||||
CONFIG_OPTIONS=""
|
||||
config_load olsr
|
||||
|
||||
if [ -n "$USE_CONF_F" ]; then
|
||||
return 0
|
||||
else
|
||||
USE_CONF_F="$CONF_F"
|
||||
fi
|
||||
|
||||
mkdir -p $(dirname "$CONF_F")
|
||||
> "$CONF_F"
|
||||
config_foreach foreach_olsr olsr
|
||||
HNA4_COUNT=0
|
||||
config_foreach foreach_Hna4 Hna4
|
||||
write_Hna4
|
||||
HNA6_COUNT=0
|
||||
config_foreach foreach_Hna6 Hna6
|
||||
write_Hna6
|
||||
config_foreach foreach_IpcConnect IpcConnect
|
||||
config_foreach foreach_LoadPlugin LoadPlugin
|
||||
config_foreach foreach_Interface Interface
|
||||
}
|
||||
|
||||
start() {
|
||||
[ -z "$USE_CONF_F" ] && write_config
|
||||
|
||||
[ -f $DEFAULT ] && . $DEFAULT
|
||||
$BIN -nofork $OPTIONS &
|
||||
|
||||
$BIN -f "$USE_CONF_F" -nofork $OPTIONS &
|
||||
|
||||
# write pid file (but strip out own pid ($$))
|
||||
mkdir -p $RUN_D
|
||||
PID=`pidof $BIN`
|
||||
echo ${PID%$$} > $PID_F
|
||||
|
||||
|
||||
}
|
||||
|
||||
stop() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user