[PATCH v6] Support batman-adv meshing over 802.11s

Christian Dresel fff at chrisi01.de
Di Okt 10 17:01:13 CEST 2017


hi

grundsätzlich bin ich mir grad unsicher ob beim c7 und c25 bei 11s was
am Treiber geändert werden muss. Ich glaube die Firmware (oder wars doch
das kmod? Oder gar beide?) muss nun ohne -ct eingebunden werden, da -ct
nur für ibss ist.

On 08.10.2017 16:07, Fabian Bläse wrote:
> Signed-off-by: Fabian Bläse <fabian at blaese.de>
> Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
> 
> Update in v2:
> - Add parentheses
> - Rename mesh_type variable
> 
> Update in v3:
> - nothing
> 
> Update in v4:
> - Fix wrong variable assignment introduced in v2
> 
> Update in v5:
> - Add returns to wifiAddMesh
> 
> Update in v6:
> - Rename json mesh_type variable
> ---
>  community/franken.cfg                              |  1 +
>  .../fff/fff-hoods/files/usr/sbin/configurehood     | 22 +++++++++---
>  .../fff-wireless/files/lib/functions/fff/wireless  | 40 ++++++++++++++++++++--
>  3 files changed, 56 insertions(+), 7 deletions(-)
> 
> diff --git a/community/franken.cfg b/community/franken.cfg
> index 833e98e..3ea5353 100644
> --- a/community/franken.cfg
> +++ b/community/franken.cfg
> @@ -3,6 +3,7 @@ BATMAN_CHANNEL_5GHZ=36
>  ESSID_AP=franken.freifunk.net
>  ESSID_MESH=batman.franken.freifunk.net
>  BSSID_MESH=02:CA:FF:EE:BA:BE
> +MESH_ID=mesh.franken.freifunk.net

ist das noch nötig? Wollten wir die File nicht irgendwann ganz killen?

>  VPN_PROJECT=fff
>  NTPD_IP=fe80::ff:feee:1%br-mesh
>  UPGRADE_PATH=http://[fe80::ff:feee:1%br-mesh]/dev/firmware/current
> diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> index 264a308..a464841 100755
> --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> @@ -119,6 +119,7 @@ if [ -s /tmp/keyxchangev2data ]; then
>  		json_select hood
>  
>  		json_get_var hood name
> +		json_get_var mesh_id mesh_id
>  		json_get_var mesh_bssid mesh_bssid
>  		json_get_var mesh_essid mesh_essid
>  		json_get_var essid essid
> @@ -126,10 +127,10 @@ if [ -s /tmp/keyxchangev2data ]; then
>  		# i think the next things we don't active this in the first version! we can do it later

vielleicht sollte man meinen wunderschönen Kommentar bisschen anpassen
;) Stimmt ja jetzt so nicht mehr.

>  		#json_get_var channel2 channel2
>  		#json_get_var mode2 mode2
> -		#json_get_var type2 type2
> +		json_get_var mesh_type2 mesh_type2
>  		#json_get_var channel5 channel5
>  		#json_get_var mode5 mode5
> -		#json_get_var type5 type5
> +		json_get_var mesh_type5 mesh_type5
>  		#json_get_var protocol protocol
>  		
>  		json_select ".." # back to root
> @@ -155,9 +156,20 @@ if [ -s /tmp/keyxchangev2data ]; then
>  			# here we set a bit for add hidden AP
>  			touch /tmp/hiddenapflag
>  
> -			if ! wifiAddAdHocMesh "$radio" "$mesh_essid" "$mesh_bssid"; then
> -				echo "Can't add AP interface on $radio."
> -				exit 1
> +			# add 802.11s mesh if type == "802.11s"
> +			if ( [ -n "$radio5" ] && [ "$mesh_type5" == "802.11s" ] ) || [ "$mesh_type2" == "802.11s" ]; then
> +				if ! wifiAddMesh "$radio" "$mesh_id"; then
> +					echo "Can't add Mesh interface on $radio."
> +					exit 1
> +				fi
> +			fi
> +
> +			# add IBSS mesh if type == "ibss"
> +			if ( [ -n "$radio5" ] && [ "$mesh_type5" == "ibss" ] ) || [ "$mesh_type2" == "ibss" ]; then
> +				if ! wifiAddAdHocMesh "$radio" "$mesh_essid" "$mesh_bssid"; then
> +					echo "Can't add AdHocMesh interface on $radio."
> +					exit 1
> +				fi

ansich ja richtig das so zu benennen. Wer aber das "alte" w2mesh mit
IBSS kennt, ist jetzt richtig verwirrt. Ich hab ein w2mesh gesehen und
mich gewundert warum 11s nicht geht ;) Aber du hast recht, w2->mesh<-
sollte schon 11s sein und ibss dann ein anderer Name. Muss man sich wohl
dran gewöhnen ;)

mfg

Christian

>  			fi
>  		done
>  
> diff --git a/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless b/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
> index 2c6dff8..4493b05 100644
> --- a/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
> +++ b/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
> @@ -83,9 +83,9 @@ wifiAddAdHocMesh() {
>  	local bssid=$3
>  
>  	local channel=$(uci get "wireless.${radio}.channel")
> -	local iface="w2mesh"
> +	local iface="w2ibss"
>  	if [ "$channel" -gt "14" ]; then
> -		iface="w5mesh"
> +		iface="w5ibss"
>  	fi
>  
>  	uci batch <<-__EOF__
> @@ -177,4 +177,40 @@ wifiAddSta() {
>  	return 0
>  }
>  
> +wifiAddMesh() {
> +	if [ $# -ne "2" ]
> +	then
> +		echo "Usage: wifiAddMesh <radio> <mesh-id>"
> +		return 1
> +	fi
> +
> +	local radio=$1
> +	local mesh_id=$2
> +
> +	local channel=$(uci get "wireless.${radio}.channel")
> +	local iface="w2mesh"
> +	if [ "$channel" -gt "14" ]; then
> +		iface="w5mesh"
> +	fi
> +	uci batch <<-__EOF__
> +		set wireless.${iface}='wifi-iface'
> +		set wireless.${iface}.device='${radio}'
> +		set wireless.${iface}.network='${iface}'
> +		set wireless.${iface}.ifname='${iface}'
> +		set wireless.${iface}.mode='mesh'
> +		set wireless.${iface}.mesh_id='${mesh_id}'
> +		set wireless.${iface}.encryption='none'
> +		set wireless.${iface}.mesh_fwding=0
> +		commit wireless
> +
> +		set network.${iface}='interface'
> +		set network.${iface}.mtu='1528'
> +		set network.${iface}.proto='batadv'
> +		set network.${iface}.mesh='bat0'
> +		commit network
> +	__EOF__
> +
> +	echo "${iface}"
> +	return 0
> +}
>  # vim: set noexpandtab:tabstop=4
> 

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 833 bytes
Beschreibung: OpenPGP digital signature
URL         : <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20171010/34d6b75d/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev