#!/bin/sh

# SPDX-FileCopyrightText: 2026 KUNBUS GmbH
# 
# SPDX-License-Identifier: GPL-2.0-or-later
#
# Rename a network interface, retrying until the target name is available.
# Usage: revpi-rename-iface <current> <target> [timeout_ms]
#
# Intended for use in udev RUN+= rules where NAME= would race against
# other concurrent renames.

FROM="$1"
TO="$2"
TIMEOUT="${3:-5000}"
INTERVAL=100

[ -z "$FROM" ] || [ -z "$TO" ] && exit 1
[ "$FROM" = "$TO" ] && exit 0

ELAPSED=0
while [ "$ELAPSED" -lt "$TIMEOUT" ]; do
    ip link set "$FROM" name "$TO" 2>/dev/null && exit 0
    sleep 0.1
    ELAPSED=$((ELAPSED + INTERVAL))
done

logger -t revpi-rename-iface "Failed to rename $FROM to $TO after ${TIMEOUT}ms"
exit 1
