[PATCH v2 1/2] fff-network/fff-hoods: Only use MAC address in network lib
Tim Niemeyer
tim at tn-x.org
Sa Jan 20 14:48:48 CET 2018
Hi
Reviewed und applied.
Tim
Am Mittwoch, den 03.01.2018, 00:37 +0100 schrieb Adrian Schmutzler:
> Previously, IPv6 addresses were constructed by reading from
> the device config file in the function. To have more options,
> it is better to use the address itself as parameter.
>
> By this way we can decide what we use for getting the MAC when
> calling.
>
> Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
> ---
> .../fff/fff-hoods/files/usr/sbin/configurehood | 5 ++--
> .../fff-network/files/lib/functions/fff/network | 28 +++++++++++-
> ----------
> .../fff-network/files/usr/sbin/configurenetwork | 5 ++--
> 3 files changed, 20 insertions(+), 18 deletions(-)
>
> diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> index be81c48..3f74599 100755
> --- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> +++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
> @@ -284,9 +284,10 @@ if [ -s "$hoodfile" ]; then
> # Set $prefix::MAC as IP
> if [ -n "$prefix" ] ; then
> prefix="$(echo "$prefix" | sed -e 's,\\,,')"
> - addr="$(ipMacAssemble "$prefix" "br-mesh")"
> + mac="$(cat "/sys/class/net/br-mesh/address")"
> + addr="$(ipMacAssemble "$prefix" "$mac")"
> addr="$(ipTidyColon "$addr")"
> - addr_eui="$(ipEUIAssemble "$prefix" "br-mesh")"
> + addr_eui="$(ipEUIAssemble "$prefix" "$mac")"
> addr_eui="$(ipTidyColon "$addr_eui")"
> for ip in $(ip -6 addr show dev br-mesh | grep inet6
> | grep -v -e " $addr" -e " $addr_eui" -e " fe80::" -e " fdff::" | cut
> -f6 -d " "); do
> ip -6 addr del "$ip" dev br-mesh
> diff --git a/src/packages/fff/fff-
> network/files/lib/functions/fff/network b/src/packages/fff/fff-
> network/files/lib/functions/fff/network
> index a8d53b3..61cf7f1 100644
> --- a/src/packages/fff/fff-network/files/lib/functions/fff/network
> +++ b/src/packages/fff/fff-network/files/lib/functions/fff/network
> @@ -4,29 +4,29 @@
>
> ipMacSuffix() {
> # Returns the lower 64 bits of an IPv6 address
> (0:aabb:ccdd:eeff)
> - # based on the mac address (aa:bb:cc:bb:ee:ff) of a
> specified interface
> + # based on the provided MAC address (aa:bb:cc:bb:ee:ff)
> #
> - # Argument: name of interface (e.g. br-mesh)
> + # Argument: MAC address (with colons)
>
> [ $# -ne "1" ] && return 1
>
> - local iface=$1
> + local mac=$1
>
> - awk -F: '{ print "0:"$1$2":"$3$4":"$5$6 }'
> "/sys/class/net/${iface}/address"
> + echo "$mac" | awk -F: '{ print "0:"$1$2":"$3$4":"$5$6 }'
> return 0
> }
>
> ipEUISuffix() {
> # Returns the EUI (interface ID, a8bb:ccff:fedd:eeff)
> - # based on the mac address (aa:bb:cc:bb:ee:ff) of a
> specified interface
> + # based on the provided MAC address (aa:bb:cc:bb:ee:ff)
> #
> - # Argument: name of interface (e.g. br-mesh)
> + # Argument: MAC address (with colons)
>
> [ $# -ne "1" ] && return 1
>
> - local iface=$1
> + local mac=$1
>
> - awk -F: '{ printf("%02x%s:%sff:fe%s:%s%s\n",
> xor(("0x"$1),2), $2, $3, $4, $5, $6) }'
> "/sys/class/net/${iface}/address"
> + echo "$mac" | awk -F: '{ printf("%02x%s:%sff:fe%s:%s%s\n",
> xor(("0x"$1),2), $2, $3, $4, $5, $6) }'
> return 0
> }
>
> @@ -45,29 +45,29 @@ ipAssemble() {
> }
>
> ipMacAssemble() {
> - # Concatenates a prefix (1st argument) and a MAC-based
> suffix (interface as 2nd argument) to a merged IPv6 address
> + # Concatenates a prefix (1st argument) and a MAC-based
> suffix (MAC address as 2nd argument) to a merged IPv6 address
> # (Details on prefix: Check ipAssemble(), details on suffix:
> Check ipMacSuffix())
>
> [ $# -ne "2" ] && return 1
>
> local prefix=$1
> - local iface=$2
> + local mac=$2
>
> - suffix="$(ipMacSuffix "$iface")"
> + suffix="$(ipMacSuffix "$mac")"
> ipAssemble "$prefix" "$suffix"
> return 0
> }
>
> ipEUIAssemble() {
> - # Concatenates a prefix (1st argument) and an EUI-based
> suffix (interface as 2nd argument) to a merged IPv6 address
> + # Concatenates a prefix (1st argument) and an EUI-based
> suffix (MAC address as 2nd argument) to a merged IPv6 address
> # (Details on prefix: Check ipAssemble(), details on suffix:
> Check ipEUISuffix())
>
> [ $# -ne "2" ] && return 1
>
> local prefix=$1
> - local iface=$2
> + local mac=$2
>
> - suffix="$(ipEUISuffix "$iface")"
> + suffix="$(ipEUISuffix "$mac")"
> ipAssemble "$prefix" "$suffix"
> return 0
> }
> diff --git a/src/packages/fff/fff-
> network/files/usr/sbin/configurenetwork b/src/packages/fff/fff-
> network/files/usr/sbin/configurenetwork
> index ef8dee1..ac17514 100755
> --- a/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
> +++ b/src/packages/fff/fff-network/files/usr/sbin/configurenetwork
> @@ -166,7 +166,8 @@ else
>
> prefix="fdff:0::/64"
> # Set $prefix::MAC as IP
> - addr="$(ipMacAssemble "$prefix" "br-mesh")"
> + mac="$(cat "/sys/class/net/br-mesh/address")"
> + addr="$(ipMacAssemble "$prefix" "$mac")"
> ip -6 addr add $addr dev br-mesh
>
> uci -q del network.globals
> @@ -181,7 +182,7 @@ else
> uci -q add_list network.mesh.ip6addr=$addr
>
> # Set $prefix::link-local as IP
> - addr="$(ipEUIAssemble "$prefix" "br-mesh")"
> + addr="$(ipEUIAssemble "$prefix" "$mac")"
> ip -6 addr add $addr dev br-mesh
> uci -q add_list network.mesh.ip6addr=$addr
>
> --
> 2.7.4
>
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : signature.asc
Dateityp : application/pgp-signature
Dateigröße : 488 bytes
Beschreibung: This is a digitally signed message part
URL : <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20180120/320bcc74/attachment.sig>
Mehr Informationen über die Mailingliste franken-dev