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
|
||||
. $dir/functions.sh
|
||||
|
||||
local protocols="4"
|
||||
if [ "$ipv6_enabled" = 1 ] && [ "$has_ipv6" == "1" ]; then
|
||||
protocols="4 6"
|
||||
fi
|
||||
|
||||
clean_config() {
|
||||
# Clean the config, remove interface wlan
|
||||
handle_interface() {
|
||||
config_get interface "$1" interface
|
||||
if [ "$interface" = "wlan" ]; then
|
||||
uci delete olsrd.$1
|
||||
uci delete $cfg.$1
|
||||
fi
|
||||
}
|
||||
config_load olsrd
|
||||
config_foreach handle_interface Interface
|
||||
}
|
||||
|
||||
rename_olsrd() {
|
||||
#Rename olsrd basic settings
|
||||
handle_olsrd() {
|
||||
if [ -z "${1/cfg[0-9a-fA-F]*/}" ]; then
|
||||
section_rename olsrd $1 olsrd
|
||||
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 olsrd $1 InterfaceDefaults
|
||||
section_rename $cfg $1 InterfaceDefaults
|
||||
fi
|
||||
}
|
||||
config_foreach handle_interfacedefaults InterfaceDefaults
|
||||
}
|
||||
|
||||
# Set basic olsrd settings
|
||||
if [ "$ipv6_enabled" = 1 ] && [ "$has_ipv6" == "1" ]; then
|
||||
uci set olsrd.olsrd.IpVersion="6and4"
|
||||
fi
|
||||
|
||||
|
||||
# Setup new InterfaceDefaults
|
||||
uci set olsrd.InterfaceDefaults=InterfaceDefaults
|
||||
set_defaults "olsr_interfacedefaults_" olsrd.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 olsrd "$1" "$new"
|
||||
section_rename $cfg "$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
|
||||
|
||||
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
|
||||
uci batch << EOF
|
||||
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"
|
||||
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" olsrd
|
||||
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 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
|
||||
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
|
||||
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"
|
||||
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 jsoninfo plugin" olsrd
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
for proto in $protocols; do
|
||||
cfg="olsrd"
|
||||
[ "$proto" == "6" ] && cfg="olsrd6"
|
||||
config_load $cfg
|
||||
clean_config
|
||||
rename_olsrd
|
||||
cleanup_plugins
|
||||
|
||||
uci set $cfg.olsrd.IpVersion="$proto"
|
||||
uci set $cfg.InterfaceDefaults=InterfaceDefaults
|
||||
set_defaults "olsr_interfacedefaults_" $cfg.InterfaceDefaults
|
||||
uci_commitverbose "Cleanup olsrd config" $cfg
|
||||
|
||||
setup_nameservice
|
||||
setup_dyngw_plain
|
||||
setup_watchdog
|
||||
setup_jsoninfo
|
||||
|
||||
done
|
||||
|
|
|
@ -7,12 +7,22 @@ net=$1
|
|||
. /lib/functions.sh
|
||||
. $dir/functions.sh
|
||||
|
||||
local protocols="4"
|
||||
if [ "$ipv6_enabled" = 1 ] && [ "$has_ipv6" == "1" ]; then
|
||||
protocols="4 6"
|
||||
fi
|
||||
|
||||
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 olsrd $1 $netrenamed
|
||||
section_rename $cfg $1 $netrenamed
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
@ -21,40 +31,46 @@ config_foreach handle_interface Interface
|
|||
|
||||
# Setup new interface for $netrenamed
|
||||
|
||||
uci set olsrd.$netrenamed=Interface
|
||||
set_defaults "olsr_interface_" olsrd.$net
|
||||
uci set olsrd.$netrenamed.interface="$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." olsrd
|
||||
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 olsrd.${netrenamed}clients
|
||||
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 olsrd.${netrenamed}clients="Hna4"
|
||||
uci set $cfg.${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
|
||||
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
|
||||
|
||||
if [ "$proto" = "6" ]; then
|
||||
# Set Hna entry for ipv6 net for static ipv6 config
|
||||
uci -q delete olsrd.${netrenamed}static
|
||||
if [ "$ipv6_enabled" = "1" ] && [ "$ipv6_config" = "static" ]; then
|
||||
uci -q delete $cfg.${netrenamed}static
|
||||
if [ "$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
|
||||
uci set $cfg.${netrenamed}static="Hna6"
|
||||
uci set $cfg.${netrenamed}static.netaddr="$v6net"
|
||||
uci set $cfg.${netrenamed}static.prefix="$v6mask"
|
||||
uci_commitverbose "Setup HNA for network $v6range" $cfg
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
done
|
Loading…
Reference in a new issue