From 4ed4fa50527836a92ad45f6e68d3023f94532003 Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Tue, 17 Sep 2024 04:54:40 +0200 Subject: [PATCH] board/common: simplify avahi-autoipd.action script - We know we always have iproute2 tools - We only use one ipv4ll client per interface, so UNBIND can be simplified to flush ifname:avahi - Log all events handled by script for troubleshooting Note: on BIND event we may be called without first getting UNBIND on previous address, hence the flush there too. Signed-off-by: Joachim Wiberg --- .../rootfs/etc/avahi/avahi-autoipd.action | 90 +++++-------------- 1 file changed, 22 insertions(+), 68 deletions(-) diff --git a/board/common/rootfs/etc/avahi/avahi-autoipd.action b/board/common/rootfs/etc/avahi/avahi-autoipd.action index 0a2cba9b..16df3899 100755 --- a/board/common/rootfs/etc/avahi/avahi-autoipd.action +++ b/board/common/rootfs/etc/avahi/avahi-autoipd.action @@ -1,24 +1,4 @@ #!/bin/sh - -# This file is part of avahi. -# -# avahi is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. -# -# avahi is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public -# License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with avahi; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -# USA. - -set -e - # Command line arguments: # $1 event that happened: # BIND: Successfully claimed address @@ -30,59 +10,33 @@ set -e PATH="$PATH:/usr/bin:/usr/sbin:/bin:/sbin" +log() +{ + logger -I $$ -t zeroconf -p user.notice "$*" +} + # Use a different metric for each interface, so that we can set # identical routes to multiple interfaces. - METRIC=$((1000 + `cat "/sys/class/net/$2/ifindex" 2>/dev/null || echo 0`)) -if [ -x /bin/ip -o -x /sbin/ip ] ; then +case "$1" in + BIND) + ip addr flush dev "$2" label "$2:avahi" + ip addr add "$3"/16 brd 169.254.255.255 label "$2:avahi" scope link dev "$2" proto random + ip route add default dev "$2" metric "$METRIC" scope link proto zeroconf + log "set ipv4ll $3 on iface $2" + ;; - # We have the Linux ip tool from the iproute package + CONFLICT|UNBIND|STOP) + ip route del default dev "$2" metric "$METRIC" scope link + ip addr flush dev "$2" label "$2:avahi" + log "clr ipv4ll on iface $2" + ;; - case "$1" in - BIND) - ip addr flush dev "$2" label "$2:avahi" - ip addr add "$3"/16 brd 169.254.255.255 label "$2:avahi" scope link dev "$2" proto 6 - ip route add default dev "$2" metric "$METRIC" scope link proto zeroconf ||: - ;; - - CONFLICT|UNBIND|STOP) - ip route del default dev "$2" metric "$METRIC" scope link ||: - ip addr del "$3"/16 brd 169.254.255.255 label "$2:avahi" scope link dev "$2" - ;; - - *) - echo "Unknown event $1" >&2 - exit 1 - ;; - esac - -elif [ -x /bin/ifconfig -o -x /sbin/ifconfig ] ; then - - # We have the old ifconfig tool - - case "$1" in - BIND) - ifconfig "$2:avahi" inet "$3" netmask 255.255.0.0 broadcast 169.254.255.255 up - route add default dev "$2:avahi" metric "$METRIC" ||: - ;; - - CONFLICT|STOP|UNBIND) - route del default dev "$2:avahi" metric "$METRIC" ||: - ifconfig "$2:avahi" down - ;; - - *) - echo "Unknown event $1" >&2 - exit 1 - ;; - esac - -else - - echo "No network configuration tool found." >&2 - exit 1 - -fi + *) + log "Unknown event $1 on iface $2" + exit 1 + ;; +esac exit 0