contrib/meshwizard: use seperate config files for olsrd4 and olsrd6
This commit is contained in:
parent
6f8daab6eb
commit
7c0b1137ef
2 changed files with 191 additions and 133 deletions
|
@ -4,100 +4,142 @@
|
||||||
. /lib/functions.sh
|
. /lib/functions.sh
|
||||||
. $dir/functions.sh
|
. $dir/functions.sh
|
||||||
|
|
||||||
# Clean the config, remove interface wlan
|
local protocols="4"
|
||||||
handle_interface() {
|
|
||||||
config_get interface "$1" interface
|
|
||||||
if [ "$interface" = "wlan" ]; then
|
|
||||||
uci delete olsrd.$1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
config_load olsrd
|
|
||||||
config_foreach handle_interface Interface
|
|
||||||
|
|
||||||
#Rename olsrd basic settings
|
|
||||||
handle_olsrd() {
|
|
||||||
if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
|
|
||||||
section_rename olsrd $1 olsrd
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
config_foreach handle_olsrd olsrd
|
|
||||||
|
|
||||||
# Rename interface defaults
|
|
||||||
handle_interfacedefaults() {
|
|
||||||
if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
|
|
||||||
section_rename olsrd $1 InterfaceDefaults
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
config_foreach handle_interfacedefaults InterfaceDefaults
|
|
||||||
|
|
||||||
# Set basic olsrd settings
|
|
||||||
if [ "$ipv6_enabled" = 1 ] && [ "$has_ipv6" == "1" ]; then
|
if [ "$ipv6_enabled" = 1 ] && [ "$has_ipv6" == "1" ]; then
|
||||||
uci set olsrd.olsrd.IpVersion="6and4"
|
protocols="4 6"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
clean_config() {
|
||||||
# Setup new InterfaceDefaults
|
# Clean the config, remove interface wlan
|
||||||
uci set olsrd.InterfaceDefaults=InterfaceDefaults
|
handle_interface() {
|
||||||
set_defaults "olsr_interfacedefaults_" olsrd.InterfaceDefaults
|
config_get interface "$1" interface
|
||||||
|
if [ "$interface" = "wlan" ]; then
|
||||||
# Rename nameservice, dyngw and httpinfo plugins
|
uci delete $cfg.$1
|
||||||
|
fi
|
||||||
handle_plugin() {
|
}
|
||||||
config_get library "$1" library
|
config_foreach handle_interface Interface
|
||||||
if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
|
|
||||||
new="$(echo $library | cut -d '.' -f 1)"
|
|
||||||
section_rename olsrd "$1" "$new"
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
config_foreach handle_plugin LoadPlugin
|
|
||||||
uci -q delete olsrd.olsrd_httpinfo
|
|
||||||
uci -q delete olsrd.olsrd_dyn_gw
|
|
||||||
|
|
||||||
uci_commitverbose "Cleanup olsrd config" olsrd
|
rename_olsrd() {
|
||||||
|
#Rename olsrd basic settings
|
||||||
|
handle_olsrd() {
|
||||||
|
if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
|
||||||
|
section_rename $cfg $1 olsrd
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
config_foreach handle_olsrd olsrd
|
||||||
|
}
|
||||||
|
|
||||||
|
rename_interface_defaults() {
|
||||||
|
# Rename interface defaults
|
||||||
|
handle_interfacedefaults() {
|
||||||
|
if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
|
||||||
|
section_rename $cfg $1 InterfaceDefaults
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
config_foreach handle_interfacedefaults InterfaceDefaults
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanup_plugins() {
|
||||||
|
# Rename nameservice, dyngw and httpinfo plugins
|
||||||
|
handle_plugin() {
|
||||||
|
config_get library "$1" library
|
||||||
|
if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
|
||||||
|
new="$(echo $library | cut -d '.' -f 1)"
|
||||||
|
section_rename $cfg "$1" "$new"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
config_foreach handle_plugin LoadPlugin
|
||||||
|
uci -q delete $cfg.olsrd_httpinfo
|
||||||
|
uci -q delete $cfg.olsrd_dyn_gw
|
||||||
|
}
|
||||||
|
|
||||||
|
setup_nameservice() {
|
||||||
|
# Setup nameservice plugin
|
||||||
|
if [ -n "$profile_suffix" ]; then
|
||||||
|
suffix=".$profile_suffix"
|
||||||
|
else
|
||||||
|
suffix=".olsr"
|
||||||
|
fi
|
||||||
|
local llfile="/var/run/latlon.js"
|
||||||
|
local hosts="/var/etc/hosts.olsr"
|
||||||
|
local services="/var/run/services_olsr"
|
||||||
|
|
||||||
|
if [ "$proto" = "6" ]; then
|
||||||
|
local llfile="/var/run/latlon.js.ipv6"
|
||||||
|
local hosts="/var/etc/hosts.olsr.ipv6"
|
||||||
|
local services="/var/run/services_olsr.ipv6"
|
||||||
|
fi
|
||||||
|
|
||||||
|
uci batch <<- EOF
|
||||||
|
set $cfg.olsrd_nameservice=LoadPlugin
|
||||||
|
set $cfg.olsrd_nameservice.library="olsrd_nameservice.so.0.3"
|
||||||
|
set $cfg.olsrd_nameservice.latlon_file="$llfile"
|
||||||
|
set $cfg.olsrd_nameservice.hosts_file="$hosts"
|
||||||
|
set $cfg.olsrd_nameservice.sighup_pid_file="/var/run/dnsmasq.pid"
|
||||||
|
set $cfg.olsrd_nameservice.services_file="$services"
|
||||||
|
set $cfg.olsrd_nameservice.suffix="$suffix"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
uci_commitverbose "Setup olsr nameservice plugin" $cfg
|
||||||
|
}
|
||||||
|
|
||||||
|
setup_dyngw_plain() {
|
||||||
|
# Setup dyngw_plain
|
||||||
|
# If Sharing of Internet is enabled then enable dyngw_plain plugin
|
||||||
|
|
||||||
|
if [ "$general_sharenet" == 1 ]; then
|
||||||
|
uci set $cfg.dyngw_plain=LoadPlugin
|
||||||
|
uci set $cfg.dyngw_plain.ignore=0
|
||||||
|
uci set $cfg.dyngw_plain.library="olsrd_dyn_gw_plain.so.0.4"
|
||||||
|
uci_commitverbose "Setup olsrd_dyngw_plain plugin" $cfg
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
setup_watchdog() {
|
||||||
|
# Setup watchdog
|
||||||
|
local watchdogfile="/var/run/olsrd.watchdog"
|
||||||
|
if [ "$proto" = "6" ]; then
|
||||||
|
watchdogfile="/var/run/olsrd.watchdog.ipv6"
|
||||||
|
fi
|
||||||
|
|
||||||
|
uci batch <<- EOF
|
||||||
|
set $cfg.olsrd_watchdog=LoadPlugin
|
||||||
|
set $cfg.olsrd_watchdog.library="olsrd_watchdog.so.0.1"
|
||||||
|
set $cfg.olsrd_watchdog.file="$watchdogfile"
|
||||||
|
set $cfg.olsrd_watchdog.interval=30
|
||||||
|
EOF
|
||||||
|
uci_commitverbose "Setup olsr watchdog plugin" $cfg
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
setup_jsoninfo() {
|
||||||
|
# Setup jsoninfo
|
||||||
|
uci batch <<- EOF
|
||||||
|
set $cfg.olsrd_jsoninfo=LoadPlugin
|
||||||
|
set $cfg.olsrd_jsoninfo.library="olsrd_jsoninfo.so.0.0"
|
||||||
|
EOF
|
||||||
|
uci_commitverbose "Setup olsr jsoninfo plugin" $cfg
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# Setup nameservice plugin
|
for proto in $protocols; do
|
||||||
if [ -n "$profile_suffix" ]; then
|
cfg="olsrd"
|
||||||
suffix=".$profile_suffix"
|
[ "$proto" == "6" ] && cfg="olsrd6"
|
||||||
else
|
config_load $cfg
|
||||||
suffix=".olsr"
|
clean_config
|
||||||
fi
|
rename_olsrd
|
||||||
uci batch << EOF
|
cleanup_plugins
|
||||||
set olsrd.olsrd_nameservice=LoadPlugin
|
|
||||||
set olsrd.olsrd_nameservice.library="olsrd_nameservice.so.0.3"
|
|
||||||
set olsrd.olsrd_nameservice.latlon_file="/var/run/latlon.js"
|
|
||||||
set olsrd.olsrd_nameservice.hosts_file="/var/etc/hosts.olsr"
|
|
||||||
set olsrd.olsrd_nameservice.sighup_pid_file="/var/run/dnsmasq.pid"
|
|
||||||
set olsrd.olsrd_nameservice.services_file="/var/run/services_olsr"
|
|
||||||
set olsrd.olsrd_nameservice.suffix="$suffix"
|
|
||||||
EOF
|
|
||||||
|
|
||||||
uci_commitverbose "Setup olsr nameservice plugin" olsrd
|
uci set $cfg.olsrd.IpVersion="$proto"
|
||||||
|
uci set $cfg.InterfaceDefaults=InterfaceDefaults
|
||||||
|
set_defaults "olsr_interfacedefaults_" $cfg.InterfaceDefaults
|
||||||
|
uci_commitverbose "Cleanup olsrd config" $cfg
|
||||||
|
|
||||||
# Setup dyngw_plain
|
setup_nameservice
|
||||||
|
setup_dyngw_plain
|
||||||
|
setup_watchdog
|
||||||
|
setup_jsoninfo
|
||||||
|
|
||||||
# If Sharing of Internet is enabled then enable dyngw_plain plugin
|
done
|
||||||
|
|
||||||
if [ "$general_sharenet" == 1 ]; then
|
|
||||||
uci set olsrd.dyngw_plain=LoadPlugin
|
|
||||||
uci set olsrd.dyngw_plain.ignore=0
|
|
||||||
uci set olsrd.dyngw_plain.library="olsrd_dyn_gw_plain.so.0.4"
|
|
||||||
|
|
||||||
uci_commitverbose "Setup olsrd_dyngw_plain plugin" olsrd
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Setup watchdog
|
|
||||||
uci batch << EOF
|
|
||||||
set olsrd.olsrd_watchdog=LoadPlugin
|
|
||||||
set olsrd.olsrd_watchdog.library="olsrd_watchdog.so.0.1"
|
|
||||||
set olsrd.olsrd_watchdog.file="/var/run/olsrd.watchdog"
|
|
||||||
set olsrd.olsrd_watchdog.interval=30
|
|
||||||
EOF
|
|
||||||
uci_commitverbose "Setup olsr watchdog plugin" olsrd
|
|
||||||
|
|
||||||
# Setup jsoninfo
|
|
||||||
uci batch << EOF
|
|
||||||
set olsrd.olsrd_jsoninfo=LoadPlugin
|
|
||||||
set olsrd.olsrd_jsoninfo.library="olsrd_jsoninfo.so.0.0"
|
|
||||||
EOF
|
|
||||||
uci_commitverbose "Setup olsr jsoninfo plugin" olsrd
|
|
||||||
|
|
|
@ -7,54 +7,70 @@ net=$1
|
||||||
. /lib/functions.sh
|
. /lib/functions.sh
|
||||||
. $dir/functions.sh
|
. $dir/functions.sh
|
||||||
|
|
||||||
# Rename interface for $netrenamed
|
local protocols="4"
|
||||||
handle_interface() {
|
if [ "$ipv6_enabled" = 1 ] && [ "$has_ipv6" == "1" ]; then
|
||||||
config_get interface "$1" Interface
|
protocols="4 6"
|
||||||
if [ "$interface" == "$netrenamed" ]; then
|
fi
|
||||||
if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
|
|
||||||
section_rename olsrd $1 $netrenamed
|
for proto in $protocols; do
|
||||||
|
|
||||||
|
cfg="olsrd"
|
||||||
|
[ "$proto" == "6" ] && cfg="olsrd6"
|
||||||
|
|
||||||
|
# Rename interface for $netrenamed
|
||||||
|
handle_interface() {
|
||||||
|
config_get interface "$1" Interface
|
||||||
|
if [ "$interface" == "$netrenamed" ]; then
|
||||||
|
if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
|
||||||
|
section_rename $cfg $1 $netrenamed
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
config_foreach handle_interface Interface
|
||||||
|
|
||||||
|
# Setup new interface for $netrenamed
|
||||||
|
|
||||||
|
uci set $cfg.$netrenamed=Interface
|
||||||
|
set_defaults "olsr_interface_" $cfg.$net
|
||||||
|
uci set $cfg.$netrenamed.interface="$netrenamed"
|
||||||
|
|
||||||
|
uci_commitverbose "Setup olsr interface for $netrenamed." $cfg
|
||||||
|
|
||||||
|
if [ "$proto" = "4" ]; then
|
||||||
|
# If dhcp-network is inside the mesh_network then add HNA for it
|
||||||
|
|
||||||
|
dhcprange=$(uci -q get meshwizard.netconfig.$net\_dhcprange)
|
||||||
|
uci -q delete $cfg.${netrenamed}clients
|
||||||
|
|
||||||
|
if [ -n "$dhcprange" ]; then
|
||||||
|
meshnet="$(uci get profile_$community.profile.mesh_network)"
|
||||||
|
dhcpinmesh="$($dir/helpers/check-range-in-range.sh $dhcprange $meshnet)"
|
||||||
|
|
||||||
|
if [ "$dhcpinmesh" == 1 ] && [ -n "$meshnet" ]; then
|
||||||
|
uci set $cfg.${netrenamed}clients="Hna4"
|
||||||
|
eval $(sh $dir/helpers/ipcalc-cidr.sh $dhcprange)
|
||||||
|
uci set $cfg.${netrenamed}clients.netaddr="$NETWORK"
|
||||||
|
uci set $cfg.${netrenamed}clients.netmask="$NETMASK"
|
||||||
|
uci_commitverbose "Setup HNA for network $dhcprange" $cfg
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
|
||||||
|
|
||||||
config_foreach handle_interface Interface
|
if [ "$proto" = "6" ]; then
|
||||||
|
# Set Hna entry for ipv6 net for static ipv6 config
|
||||||
# Setup new interface for $netrenamed
|
uci -q delete $cfg.${netrenamed}static
|
||||||
|
if [ "$ipv6_config" = "static" ]; then
|
||||||
uci set olsrd.$netrenamed=Interface
|
local v6range="$(uci -q get meshwizard.netconfig.$net\_ip6addr)"
|
||||||
set_defaults "olsr_interface_" olsrd.$net
|
local v6net="$(echo $v6range | cut -d '/' -f 1)"
|
||||||
uci set olsrd.$netrenamed.interface="$netrenamed"
|
local v6mask="$(echo $v6range | cut -d '/' -f 2)"
|
||||||
|
if [ -n "$v6net" ] && [ -n "$v6mask" ]; then
|
||||||
uci_commitverbose "Setup olsr interface for $netrenamed." olsrd
|
uci set $cfg.${netrenamed}static="Hna6"
|
||||||
|
uci set $cfg.${netrenamed}static.netaddr="$v6net"
|
||||||
# If dhcp-network is inside the mesh_network then add HNA for it
|
uci set $cfg.${netrenamed}static.prefix="$v6mask"
|
||||||
|
uci_commitverbose "Setup HNA for network $v6range" $cfg
|
||||||
dhcprange=$(uci -q get meshwizard.netconfig.$net\_dhcprange)
|
fi
|
||||||
uci -q delete olsrd.${netrenamed}clients
|
fi
|
||||||
|
|
||||||
if [ -n "$dhcprange" ]; then
|
|
||||||
meshnet="$(uci get profile_$community.profile.mesh_network)"
|
|
||||||
dhcpinmesh="$($dir/helpers/check-range-in-range.sh $dhcprange $meshnet)"
|
|
||||||
|
|
||||||
if [ "$dhcpinmesh" == 1 ] && [ -n "$meshnet" ]; then
|
|
||||||
uci set olsrd.${netrenamed}clients="Hna4"
|
|
||||||
eval $(sh $dir/helpers/ipcalc-cidr.sh $dhcprange)
|
|
||||||
uci set olsrd.${netrenamed}clients.netaddr="$NETWORK"
|
|
||||||
uci set olsrd.${netrenamed}clients.netmask="$NETMASK"
|
|
||||||
uci_commitverbose "Setup HNA for network $dhcprange" olsrd
|
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
|
|
||||||
# Set Hna entry for ipv6 net for static ipv6 config
|
done
|
||||||
uci -q delete olsrd.${netrenamed}static
|
|
||||||
if [ "$ipv6_enabled" = "1" ] && [ "$ipv6_config" = "static" ]; then
|
|
||||||
local v6range="$(uci -q get meshwizard.netconfig.$net\_ip6addr)"
|
|
||||||
local v6net="$(echo $v6range | cut -d '/' -f 1)"
|
|
||||||
local v6mask="$(echo $v6range | cut -d '/' -f 2)"
|
|
||||||
if [ -n "$v6net" ] && [ -n "$v6mask" ]; then
|
|
||||||
uci set olsrd.${netrenamed}static="Hna6"
|
|
||||||
uci set olsrd.${netrenamed}static.netaddr="$v6net"
|
|
||||||
uci set olsrd.${netrenamed}static.prefix="$v6mask"
|
|
||||||
uci_commitverbose "Setup HNA for network $v6range" olsrd
|
|
||||||
fi
|
|
||||||
fi
|
|
Loading…
Reference in a new issue