aboutsummaryrefslogtreecommitdiffstats
path: root/meta-sys940x/recipes-bsp/genmac/files/genmac
diff options
context:
space:
mode:
authorDarren Hart <dvhart@linux.intel.com>2012-01-26 10:39:01 -0800
committerDarren Hart <dvhart@linux.intel.com>2012-02-03 09:25:18 -0800
commitc42364375acb28f0f23867e3a24c9ae25beced37 (patch)
tree5c5c7d1519d04076f11f89de51e70a1d69acbaa9 /meta-sys940x/recipes-bsp/genmac/files/genmac
parent7b1d216a133d3df4597c336e3a6c3c941e69989a (diff)
downloadmeta-intel-c42364375acb28f0f23867e3a24c9ae25beced37.tar.gz
meta-intel-c42364375acb28f0f23867e3a24c9ae25beced37.tar.bz2
meta-intel-c42364375acb28f0f23867e3a24c9ae25beced37.zip
genmac: Replace RANDOM_MAC in network/interfaces with a randomly generated MAC
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 <dvhart@linux.intel.com> Signed-off-by: Joshua Lock <josh@linux.intel.com>
Diffstat (limited to 'meta-sys940x/recipes-bsp/genmac/files/genmac')
-rw-r--r--meta-sys940x/recipes-bsp/genmac/files/genmac46
1 files changed, 46 insertions, 0 deletions
diff --git a/meta-sys940x/recipes-bsp/genmac/files/genmac b/meta-sys940x/recipes-bsp/genmac/files/genmac
new file mode 100644
index 00000000..1899e95f
--- /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 <dvhart@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 ranpwd is not installed
+[ -x "$RANPWD" ] || exit 0
+
+do_start() {
+ # Replace every occurence 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
+}
+
+case "$1" in
+start)
+ echo "$NAME: Setting random MAC addresses"
+ do_start
+ ;;
+stop)
+ ;;
+*)
+ echo "Usage: $SCRIPTNAME {start|stop}" >&2
+ exit 3
+ ;;
+esac
+
+exit 0
+