From 0c4f5936c8be6fde2e49539ca3e89e048623c707 Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Wed, 12 Dec 2012 19:11:31 +0100 Subject: [PATCH] net: Warn about default MAC address [AF: Suppress for QTest] --- net/net.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/net/net.c b/net/net.c index 0be084d..552e233 100644 --- a/net/net.c +++ b/net/net.c @@ -42,6 +42,7 @@ #include "qapi/opts-visitor.h" #include "qapi/dealloc-visitor.h" #include "sysemu/sysemu.h" +#include "sysemu/qtest.h" /* Net bridge is currently not supported for W32. */ #if !defined(_WIN32) @@ -160,6 +161,28 @@ void qemu_format_nic_info_str(NetClientState *nc, uint8_t macaddr[6]) macaddr[3], macaddr[4], macaddr[5]); } +static void default_mac_check(void) +{ + static const MACAddr def_mac = { .a = { 0x52,0x54,0x00,0x12,0x34,0x56 } }; + static int warned = 0; + int i; + + for (i = 0; i < MAX_NICS; i++) { + if (!nd_table[i].used) { + continue; + } + if (memcmp(nd_table[i].macaddr.a, def_mac.a, 5)) { + continue; + } + if (nd_table[i].macaddr.a[5] >= 0x56 && + nd_table[i].macaddr.a[5] < 0x56 + MAX_NICS && !warned && !qtest_enabled()) { + warned = 1; + fprintf(stderr, "Warning: default mac address being used, creating " + "potential for address conflict\n"); + } + } +} + void qemu_macaddr_default_if_unset(MACAddr *macaddr) { static int index = 0; @@ -1313,6 +1336,7 @@ int net_init_clients(void) if (qemu_opts_foreach(net, net_init_client, NULL, 1) == -1) { return -1; } + default_mac_check(); return 0; }