aredn/files/etc/init.d/local

62 lines
2.2 KiB
Bash
Executable File

#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org
START=99
boot() {
# Deal with lan and wifi having same mac address (common on TP-Link)
if [ ! -f /etc/aredn_include/ethmacfixup ]
then
mkdir -p /etc/aredn_include
touch /etc/aredn_include/ethmacfixup
local lanintf=`uci -q get 'network.lan.ifname'`
local wifiintf="wlan0"
local lanmac=`ifconfig $lanintf | grep -o -E '([[:xdigit:]]{2}:){5}[[:xdigit:]]{2}'`
local wifimac=`ifconfig $wifiintf | grep -o -E '([[:xdigit:]]{2}:){5}[[:xdigit:]]{2}'`
if [ "$lanmac" = "$wifimac" ]
then
local wifimacdigit=`echo $wifimac | awk 'BEGIN { FS = ":" } ;{print $4}'`
local newmac="00:00:00:00:00:00"
if [ "$wifimacdigit" = "FF" ]
then
newmac=`echo "$wifimac" | awk 'BEGIN { FS = ":" } ;{print $1":"$2":"$3":00:"$5":"$6}'`
else
local wifimacdigitplusone
wifimacdigitplusone=`printf "%02X\n" $((0x$wifimacdigit + 1))`
newmac=`echo "$wifimac:$wifimacdigitplusone" | awk 'BEGIN { FS = ":" } ;{print $1":"$2":"$3":"$7":"$5":"$6}'`
fi
case $lanintf in
*.*)
echo "" > /etc/aredn_include/ethmacfixup
echo "config interface 'setethmac'" >> /etc/aredn_include/ethmacfixup
echo -e "\toption\tifname\t'eth0'" >> /etc/aredn_include/ethmacfixup
echo -e "\toption\tproto\t'none'" >> /etc/aredn_include/ethmacfixup
echo -e "\toption\tmacaddr\t$newmac" >> /etc/aredn_include/ethmacfixup
uci set "network.setethmac=interface"
uci set "network.setethmac.ifname=eth0"
uci set "network.setethmac.proto=none"
uci set "network.setethmac.macaddr=$newmac"
;;
*)
uci -q set "network.lan.macaddr=$newmac"
echo -e "\toption\tmacaddr\t$newmac" > /etc/aredn_include/ethmacfixup
;;
esac
uci commit
/etc/init.d/network reload
/etc/init.d/network restart
fi
fi
[ -x /usr/local/bin/bbhn-postupgrade ] && /usr/local/bin/bbhn-postupgrade
# setup nvram variables
[ -x /usr/local/bin/nvram-setup ] && /usr/local/bin/nvram-setup
# run mode specific setup
[ -x /etc/config/local ] && /etc/config/local
[ -x /etc/local/services ] && /etc/local/services
}