On 02/01/2012 05:26 PM, Darren Hart wrote:
For machines that do not have a MAC in hardware and with drivers that don't
generate a random one in the kernel, this init script will replace the string
RANDOM_MAC in the network/interfaces file with one generated with "ranpwd -m".
Care is taken to ensure multiple interfaces can use RANDOM_MAC and receive
unique addresses. ranpwd generates MACs with the locally administered bit set
and the multicast bit disabled.
Signed-off-by: Darren Hart<dvh...@linux.intel.com>
---
meta-sys940x/recipes-bsp/genmac/files/genmac | 46 ++++++++++++++++++++++++++
meta-sys940x/recipes-bsp/genmac/genmac.bb | 30 +++++++++++++++++
2 files changed, 76 insertions(+), 0 deletions(-)
create mode 100644 meta-sys940x/recipes-bsp/genmac/files/genmac
create mode 100644 meta-sys940x/recipes-bsp/genmac/genmac.bb
diff --git a/meta-sys940x/recipes-bsp/genmac/files/genmac
b/meta-sys940x/recipes-bsp/genmac/files/genmac
new file mode 100644
index 0000000..6ca069c
--- /dev/null
+++ b/meta-sys940x/recipes-bsp/genmac/files/genmac
@@ -0,0 +1,46 @@
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: Random MAC address generator
+# Required-Start: $syslog
+# Required-Stop: $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Set a random MAC for tagged interfaces
+# Description: Set a random MAC for interfaces with RANDOM_MAC
+### END INIT INFO
+
+# Author: Darren Hart<dvh...@linux.intel.com>
+# Based on /etc/init.d/skeleton
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+DESC="Set a random MAC for tagged interfaces"
+NAME=genmac
+RANPWD=`which ranpwd`
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Exit if amixer is not installed
+[ -x "$RANPWD" ] || exit 0
+
+do_start() {
+ # Replace every occurance of RANDOM_MAC with a unique locally
+ # administered, unicast, randomly generated MAC address.
+ while grep -q RANDOM_MAC /etc/network/interfaces; do
+ sed -i "1,/RANDOM_MAC/s/RANDOM_MAC/$($RANPWD -m)/"
/etc/network/interfaces
+ done
+}
So on a non-volatile r/w filesystem this will assign a new random mac to
each interface on the first boot and reuse that MAC on each subsquent boot.
On a volatile r/w filesystem this will use a new MAC addr for each
boot. I guess thats better than nothing and not much to do on a
volatile system.
What does this do on a ro filesystem? No network? network with
0:0:0:0:0:0 MAC addr? (horror! but I suspect the kernel won't allow
that). Certainly this script failing should not cause the rest of boot
to fail.
_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto