X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=contrib%2Fpackage%2Fmeshwizard%2Ffiles%2Fusr%2Fbin%2Fmeshwizard%2Fhelpers%2Fsetup_firewall_interface.sh;h=8ca5d3b77ba0e8096a00ce927c708fe7684f69af;hb=eda8f02dac3caa4d0f52cd1e860d7a392c295df3;hp=7f40f87147c07f6c0da7a4ddf8d943ff754a3065;hpb=163b224b25d003cc6ca555b305bdbc89b2dd61b6;p=project%2Fluci.git diff --git a/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_firewall_interface.sh b/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_firewall_interface.sh index 7f40f87147..8ca5d3b77b 100755 --- a/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_firewall_interface.sh +++ b/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_firewall_interface.sh @@ -45,7 +45,7 @@ network=$(echo $network) # Removes leading and trailing whitespaces [ -n "$netrenamed" ] && [ -z "$(echo $network | grep $netrenamed)" ] && network="$network $netrenamed" -if [ "$type" == "atheros" -a "$vap" == 1 ]; then +if [ "$supports_vap" == "1" -a "$vap" == 1 ]; then [ -n "$netrenamed" ] && [ "$network" == "${network/${netrenamed}dhcp/}" ] && network="$network ${netrenamed}dhcp" fi @@ -57,23 +57,53 @@ currms=$(uci -q get firewall.zone_freifunk.masq_src) # If interfaces are outside of the mesh network they should be natted -# Get dhcprange and meshnet -if_ip="$(uci -q get network.${netrenamed}dhcp.ipaddr)" -if_mask="$(uci -q get network.${netrenamed}dhcp.netmask)" +if [ "$vap" == 1 ]; then + # Get dhcprange and meshnet for the dhcp interface + if_ip="$(uci -q get network.${netrenamed}dhcp.ipaddr)" + if_mask="$(uci -q get network.${netrenamed}dhcp.netmask)" + + [ -n "$if_ip" -a "$if_mask" ] && export $(ipcalc.sh $if_ip $if_mask) + [ -n "$NETWORK" -a "$PREFIX" ] && dhcprange="$NETWORK/$PREFIX" + + if [ -n "$dhcprange" ]; then + meshnet="$(uci get profile_$community.profile.mesh_network)" + # check if the dhcprange is inside meshnet + dhcpinmesh="$($dir/helpers/check-range-in-range.sh $dhcprange $meshnet)" + if [ "$dhcpinmesh" == 1 ]; then + # needed or splash will not work + if [ "$has_luci_splash" == TRUE ]; then + uci set firewall.zone_freifunk.contrack="1" + fi + else + uci set firewall.zone_freifunk.masq=1 + [ -z "$(echo $currms |grep ${netrenamed}dhcp)" ] && uci add_list firewall.zone_freifunk.masq_src="${netrenamed}dhcp" + fi + fi +fi + +# Get dhcprange and meshnet for the adhoc dhcp interface +if_ip="$(uci -q get network.${netrenamed}ahdhcp.ipaddr)" +if_mask="$(uci -q get network.${netrenamed}ahdhcp.netmask)" [ -n "$if_ip" -a "$if_mask" ] && export $(ipcalc.sh $if_ip $if_mask) -[ -n "$NETWORK" -a "$PREFIX" ] && dhcprange="$NETWORK/$PREFIX" +[ -n "$NETWORK" -a "$PREFIX" ] && dhcprangeah="$NETWORK/$PREFIX" -if [ -n "$dhcprange" ]; then +if [ -n "$dhcprangeah" ]; then meshnet="$(uci get profile_$community.profile.mesh_network)" # check if the dhcprange is inside meshnet - dhcpinmesh="$($dir/helpers/check-range-in-range.sh $dhcprange $meshnet)" - if [ ! "$dhcpinmesh" == 1 ]; then + dhcpinmesh="$($dir/helpers/check-range-in-range.sh $dhcprangeah $meshnet)" + if [ "$dhcpinmesh" == 1 ]; then + # needed or splash will not work + if [ "$has_luci_splash" == TRUE ]; then + uci set firewall.zone_freifunk.contrack="1" + fi + else uci set firewall.zone_freifunk.masq=1 - [ -z "$(echo $currms |grep ${netrenamed}dhcp)" ] && uci add_list firewall.zone_freifunk.masq_src="${netrenamed}dhcp" + [ -z "$(echo $currms |grep ${netrenamed}ahdhcp)" ] && uci add_list firewall.zone_freifunk.masq_src="${netrenamed}ahdhcp" fi fi + for i in IP NETMASK BROADCAST NETWORK PREFIX; do unset $i done