[PATCH v4] gateway.d: Add scripts for network configuration

Robert Langhammer rlanghammer at web.de
Fr Mai 17 09:06:46 CEST 2019


Hi,

Am 16.05.2019 um 14:33 schrieb Adrian Schmutzler:
> Hallo,
>
> mit dem sed erwischt man in folgendem Fall das Leerzeichen nicht:
>
> "bat0 eth0.1" => "bat0 "
>
> Ich wurde folgendes verwenden:
>
> uci get ... | sed "s/\beth[^ ]* //" | sed
> "s/ *eth[^ ]*$//g")

Ah ja stimmt, das Leer gehört immer zum nachfolgendem Wort.

@Fabian: Adrians Variante ist noch besser. Aber bitte nicht hinten dran.
Man sollte Regex auch immer mit ' quoten. " schaltet $ nicht aus.

Robert
> So entfernt man das Leerzeichen immer auf der richtigen Seite mit.
>
> Grüße
>
> Adrian
>
>> -----Original Message-----
>> From: franken-dev [mailto:franken-dev-bounces at freifunk.net] On Behalf Of
>> robert
>> Sent: Dienstag, 14. Mai 2019 08:42
>> To: franken-dev at freifunk.net
>> Subject: Re: [PATCH v4] gateway.d: Add scripts for network configuration
>>
>> Hi Fabian,
>>
>> mein sed Hinweis war nicht getestet. Sorry.
>>
>> Man erwischt zwar alle ethxx.xxx aber nicht am Zeilenende. Und ein
>> veth.0 wird zerhackt.
>>
>> Musste das auch erst mal ausprobieren. Ein
>>
>> sed 's/\beth[^ ]* *//g'
>>
>> tut was es soll. Probiere es bitte auch noch mal aus.
>>
>> Kannst du dann beim Applien anpassen.
>>
>> Reviewed-by: Robert Langhammer <rlanghammer at web.de>
>>
>>
>> Am 13.05.19 um 23:30 schrieb Fabian Bläse:
>>> From: Fabian Blaese <fabian at blaese.de>
>>>
>>> This adds scripts to configure vlan and client network.
>>> This also adds sysctl settings to enable forwarding.
>>>
>>> Note:
>>> Devices specific properties are sourced from fff-network package.
>>> This creates a dependency on fff-boardname and fff-network.
>>> These properties should be located elsewhere in the future.
>>>
>>> Signed-off-by: Fabian Bläse <fabian at blaese.de>
>>> Reviewed-by: Tim Niemeyer <tim at tn-x.org>
>>> ---
>>> Changes in v3:
>>> - Rename 10-vlan to 20-vlan
>>> - Rename 20-network-client to 30-network-client
>>> - Source necessary uci functions and board properties
>>> - Add dependency on fff-boardname and fff-network
>>>
>>> Changes in v4:
>>> - Source cpuport script
>>> - Simplyfy sed expression as suggested by Robert
>>> ---
>>>  src/packages/fff/fff-gateway/Makefile         |  1 +
>>>  .../fff-gateway/files/etc/gateway.d/20-vlan   | 48 +++++++++++++
>>>  .../files/etc/gateway.d/30-network-client     | 71 +++++++++++++++++++
>>>  .../files/etc/sysctl.d/60-fff-gateway.conf    |  5 ++
>>>  4 files changed, 125 insertions(+)
>>>  create mode 100644 src/packages/fff/fff-gateway/files/etc/gateway.d/20-
>> vlan
>>>  create mode 100644 src/packages/fff/fff-gateway/files/etc/gateway.d/30-
>> network-client
>>>  create mode 100644 src/packages/fff/fff-gateway/files/etc/sysctl.d/60-fff-
>> gateway.conf
>>> diff --git a/src/packages/fff/fff-gateway/Makefile b/src/packages/fff/fff-
>> gateway/Makefile
>>> index 7c1dd55..f9ef8cc 100644
>>> --- a/src/packages/fff/fff-gateway/Makefile
>>> +++ b/src/packages/fff/fff-gateway/Makefile
>>> @@ -13,6 +13,7 @@ define Package/fff-gateway
>>>  	CATEGORY:=Freifunk
>>>  	TITLE:= Freifunk-Franken gateway configuration
>>>  	URL:=https://www.freifunk-franken.de
>>> +	DEPENDS:=+fff-boardname +fff-network
>>>  endef
>>>
>>>  define Package/fff-gateway/description
>>> diff --git a/src/packages/fff/fff-gateway/files/etc/gateway.d/20-vlan
>> b/src/packages/fff/fff-gateway/files/etc/gateway.d/20-vlan
>>> new file mode 100644
>>> index 0000000..cfc8e69
>>> --- /dev/null
>>> +++ b/src/packages/fff/fff-gateway/files/etc/gateway.d/20-vlan
>>> @@ -0,0 +1,48 @@
>>> +# load uci functions
>>> +. /lib/functions.sh
>>> +
>>> +# load board specific properties
>>> +BOARD="$(uci get board.model.name)"
>>> +. /etc/network.$BOARD
>>> +. /lib/functions/fff/cpuport
>>> +
>>> +
>>> +configure() {
>>> +	add_vlan() {
>>> +		local vlan="$1"
>>> +		local ports=$(uci get gateway.$vlan.ports)
>>> +		local name="$SWITCHDEV"_$vlan
>>> +
>>> +		uci set network.$name='switch_vlan'
>>> +		uci set network.$name.device="$(uci get
>> network.$SWITCHDEV.name)"
>>> +		uci set network.$name.vlan="$vlan"
>>> +		uci set network.$name.ports="$CPUPORT $ports"
>>> +	}
>>> +
>>> +	remove_vlan() {
>>> +		local name="$1"
>>> +
>>> +		local switchdev=$(echo $name | cut -d_ -f1)
>>> +		local vlan=$(echo $name | cut -d_ -f2)
>>> +
>>> +		# only remove vlans not present in gateway config
>>> +		if ! uci -q get gateway.$vlan > /dev/null; then
>>> +			# remove switch_vlan
>>> +			uci del network.$name
>>> +		fi
>>> +	}
>>> +
>>> +	config_load network
>>> +	config_foreach remove_vlan switch_vlan
>>> +
>>> +	config_load gateway
>>> +	config_foreach add_vlan vlan
>>> +}
>>> +
>>> +apply() {
>>> +	uci commit network
>>> +}
>>> +
>>> +revert() {
>>> +	uci revert network
>>> +}
>>> diff --git a/src/packages/fff/fff-gateway/files/etc/gateway.d/30-network-
>> client b/src/packages/fff/fff-gateway/files/etc/gateway.d/30-network-client
>>> new file mode 100644
>>> index 0000000..d5ae34c
>>> --- /dev/null
>>> +++ b/src/packages/fff/fff-gateway/files/etc/gateway.d/30-network-client
>>> @@ -0,0 +1,71 @@
>>> +# load board specific properties
>>> +BOARD="$(uci get board.model.name)"
>>> +. /etc/network.$BOARD
>>> +
>>> +
>>> +configure() {
>>> +	# ipaddr
>>> +	#remove old ipaddr
>>> +	uci -q del network.mesh.ipaddr
>>> +	#set new ipaddr
>>> +	if ipaddr=$(uci -q get gateway. at client[0].ipaddr); then
>>> +		for ip in $ipaddr; do
>>> +			uci add_list network.mesh.ipaddr=$ip
>>> +		done
>>> +	else
>>> +		echo "WARNING: No client ipaddr set!"
>>> +	fi
>>> +	#put interface routes from set addresses into fff table
>>> +	uci set network.mesh.ip4table='fff'
>>> +
>>> +	# ip6addr
>>> +	#remove old ip6addr
>>> +	for ip in $(uci get network.mesh.ip6addr); do
>>> +		if echo "$ip" | grep -v -e "fdff:" -e "fe80::1/64" > /dev/null; then
>>> +			uci del_list network.mesh.ip6addr="$ip"
>>> +		fi
>>> +	done
>>> +	#set new ip6addr
>>> +	if ip6addr=$(uci -q get gateway. at client[0].ip6addr); then
>>> +		for ip in $ip6addr; do
>>> +			uci add_list network.mesh.ip6addr=$ip
>>> +		done
>>> +	else
>>> +		echo "WARNING: No client ip6addr set!"
>>> +	fi
>>> +	#put interface routes from set addresses into fff table
>>> +	uci set network.mesh.ip6table='fff'
>>> +
>>> +	# dhcp
>>> +	uci -q del dhcp.mesh.start
>>> +	uci -q del dhcp.mesh.limit
>>> +	if dhcp_start=$(uci -q get gateway. at client[0].dhcp_start); then
>>> +		uci set dhcp.mesh=dhcp
>>> +		uci set dhcp.mesh.interface=mesh
>>> +		uci set dhcp.mesh.start=$dhcp_start
>>> +		uci set dhcp.mesh.limit=$(uci -q get
>> gateway. at client[0].dhcp_limit)
>>> +	else
>>> +		echo "WARNING: No DHCP range start and/or limit set!"
>>> +	fi
>>> +
>>> +	# set interface
>>> +	#remove all eth interfaces
>>> +	ifaces=$(uci get network.mesh.ifname | sed -e 's/eth[^ ]* //g')
>>> +	if vlan=$(uci -q get gateway. at client[0].vlan); then
>>> +		uci set network.mesh.ifname="${SWITCHDEV}.$vlan $ifaces"
>>> +	elif iface=$(uci -q get gateway. at client[0].iface); then
>>> +		uci set network.mesh.ifname="$iface $ifaces"
>>> +	else
>>> +		echo "WARNING: No Interface for client specified"
>>> +	fi
>>> +}
>>> +
>>> +apply() {
>>> +	uci commit network
>>> +	uci commit dhcp
>>> +}
>>> +
>>> +revert() {
>>> +	uci revert network
>>> +	uci revert dhcp
>>> +}
>>> diff --git a/src/packages/fff/fff-gateway/files/etc/sysctl.d/60-fff-gateway.conf
>> b/src/packages/fff/fff-gateway/files/etc/sysctl.d/60-fff-gateway.conf
>>> new file mode 100644
>>> index 0000000..62bda1b
>>> --- /dev/null
>>> +++ b/src/packages/fff/fff-gateway/files/etc/sysctl.d/60-fff-gateway.conf
>>> @@ -0,0 +1,5 @@
>>> +# Enable forwarding
>>> +net.ipv4.conf.all.forwarding=1
>>> +net.ipv4.ip_forward=1
>>> +net.ipv6.conf.all.forwarding=1
>>> +net.ipv6.conf.default.forwarding=1

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 488 bytes
Beschreibung: OpenPGP digital signature
URL         : <https://{'listname': 'franken-dev-freifunk.net', 'hostname': 'lists.freifunk.net'}/pipermail/franken-dev-freifunk.net/attachments/20190517/55d2c316/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev