X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fluci.git;a=blobdiff_plain;f=contrib%2Fpackage%2Fmeshwizard%2Ffiles%2Fusr%2Fbin%2Fmeshwizard%2Fhelpers%2Fsetup_network.sh;h=3ad977e265f21b7ac0e729488ef8a1fa965c7a2d;hp=8c909e2d5fc497387f1f88eb889a673efef05681;hb=a3fc4859dd0d3e9e9fa87ca249b815a4710ed7bd;hpb=d7f865b6b2d6fa791bcf8508773fe69d91584901 diff --git a/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_network.sh b/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_network.sh index 8c909e2d5..3ad977e26 100755 --- a/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_network.sh +++ b/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_network.sh @@ -1,6 +1,6 @@ # setup entry in /etc/config/network for a interface # Argument $1: network interface - + net="$1" . /lib/functions.sh . $dir/functions.sh @@ -24,14 +24,20 @@ uci batch << EOF set network.$netrenamed.netmask="$netmask" EOF +if [ "$netrenamed" = "lan" ]; then + # remove the bridge if the interface is used for olsr + # since this script is only run in this case, no need + # to check for lan_proto = "olsr" currently. + uci -q delete network.lan.type +fi + # Setup IPv6 for the interface -local ip6addr -if [ "$profile_ipv6" = 1 ]; then - if [ "$profile_ipv6_config" = "auto-ipv6-dhcpv6" ]; then +if [ "$ipv6_enabled" = 1 ]; then + if [ "$ipv6_config" = "auto-ipv6-dhcpv6" ]; then ip6addr="$($dir/helpers/gen_auto-ipv6-dhcpv6-ip.sh $netrenamed)" uci set network.$netrenamed.ip6addr="${ip6addr}/112" fi - if [ "$profile_ipv6_config" = "static" ] && [ -n "$ip6addr" ]; then + if [ "$ipv6_config" = "static" ] && [ -n "$ip6addr" ]; then uci set network.$netrenamed.ip6addr="$ip6addr" fi fi @@ -58,7 +64,7 @@ if [ "$net_dhcp" == 1 ]; then fi } config_load network - config_foreach handle_dhcpalias alias + config_foreach handle_dhcpalias interface # Get IP/netmask and start-ip for $net dhcp # If no dhcprange is given in /etc/config/meshwizard we autogenerate one @@ -67,24 +73,70 @@ if [ "$net_dhcp" == 1 ]; then dhcprange="$($dir/helpers/gen_dhcp_ip.sh $interface_ip)/24" uci set meshwizard.netconfig.${net}_dhcprange="$dhcprange" fi - eval $(sh $dir/helpers/ipcalc-cidr.sh $dhcprange 1 0) - - # setup wifi-dhcp interface or alias - # Setup alias for $net - - if [ "$vap" == 1 ]; then - uci set network.${netrenamed}dhcp=interface + # If we use VAP and also offer dhcp on the adhoc interface then cut the dhcp + # range in two halves. one for the adhoc, one for the managed VAP interface + ahdhcp_when_vap="$(uci get profile_$community.profile.adhoc_dhcp_when_vap)" + + if [ "$supports_vap" = 1 -a "$vap" = 1 -a "$ahdhcp_when_vap" = 1 ]; then + # VAPs are enabled for this interface, supported and we want to + # also use DHCP on the adhoc interface + network=${dhcprange%%/*} + mask=${dhcprange##*/} + # Divide network size by adding 1 to the netmask + mask=$(($mask + 1)) + # Get first ip and netmask for the adhoc dhcp network + eval $(sh $dir/helpers/ipcalc-cidr.sh ${network}/${mask} 1 0) + STARTADHOC=$START + NETMASKADHOC=$NETMASK + # Get first ip and netmask for the managed dhcp network + eval $(sh $dir/helpers/ipcalc-cidr.sh ${NEXTNET}/${mask} 1 0) + STARTVAP=$START + NETMASKVAP=$NETMASK + # Add dhcp interface + uci batch <<- EOF + set network.${netrenamed}dhcp=interface + set network.${netrenamed}dhcp.proto=static + set network.${netrenamed}dhcp.ipaddr="$STARTVAP" + set network.${netrenamed}dhcp.netmask="$NETMASKVAP" + EOF + uci_commitverbose "Setup interface for ${netrenamed}dhcp" network else - uci set network.${netrenamed}dhcp=alias - uci set network.${netrenamed}dhcp.interface="$netrenamed" + eval $(sh $dir/helpers/ipcalc-cidr.sh $dhcprange 1 0) + STARTADHOC=$START + NETMASKADHOC=$NETMASK + fi + if [ "$supports_vap" = 1 -a "$vap" = 1 -a "$ahdhcp_when_vap" != 1 ]; then + # vaps are enabled and supported and we do not use DHCP on adhoc + # Add dhcp interface + uci batch <<- EOF + set network.${netrenamed}dhcp=interface + set network.${netrenamed}dhcp.proto=static + set network.${netrenamed}dhcp.ipaddr="$STARTADHOC" + set network.${netrenamed}dhcp.netmask="$NETMASKADHOC" + EOF + uci_commitverbose "Setup interface for ${netrenamed}dhcp" network fi - uci batch <<- EOF - set network.${netrenamed}dhcp.proto=static - set network.${netrenamed}dhcp.ipaddr="$START" - set network.${netrenamed}dhcp.netmask="$NETMASK" - EOF - uci_commitverbose "Setup interface for ${netrenamed}dhcp" network + # Setup alias for $net adhoc interface + if [ "$supports_vap" = 0 ] || \ + [ "$vap" = 0 ] || \ + [ "$supports_vap" = 1 -a "$vap" = 1 -a "$ahdhcp_when_vap" = 1 ] || \ + [ "$lan_is_olsr" = "1" ]; then + # setup an alias interface for the main interface to use as a network for clients + # when one of the following conditions is met + # * vaps are not supported + # * or not enabled + # * or they are supported and enabled but we also want to use DHCP on the adhoc interface + # * or this is the lan interface and it is used for olsrd (and dhcp is enabled) + uci batch <<- EOF + set network.${netrenamed}ahdhcp=interface + set network.${netrenamed}ahdhcp.ifname="@${netrenamed}" + set network.${netrenamed}ahdhcp.proto=static + set network.${netrenamed}ahdhcp.ipaddr="$STARTADHOC" + set network.${netrenamed}ahdhcp.netmask="$NETMASKADHOC" + EOF + uci_commitverbose "Setup interface for ${netrenamed}ahdhcp" network + fi fi