return NULL;
}
- if (!macaddr) {
+ if (!macaddr || virMacAddrIsAllClear(&def->mac)) {
virDomainNetGenerateMAC(xmlopt, &def->mac);
def->mac_generated = true;
}
virMacAddrFormat;
virMacAddrGenerate;
virMacAddrGetRaw;
+virMacAddrIsAllClear;
virMacAddrIsBroadcastRaw;
virMacAddrIsMulticast;
virMacAddrIsUnicast;
return memcmp(virMacAddrBroadcastAddrRaw, s, sizeof(*s)) == 0;
}
+bool virMacAddrIsAllClear(const virMacAddr *addr)
+{
+ return !virMacAddrCmpRaw(addr, (const unsigned char[VIR_MAC_BUFLEN]){0});
+}
+
void
virMacAddrFree(virMacAddr *addr)
{
bool virMacAddrIsUnicast(const virMacAddr *addr);
bool virMacAddrIsMulticast(const virMacAddr *addr);
bool virMacAddrIsBroadcastRaw(const unsigned char s[VIR_MAC_BUFLEN]);
+bool virMacAddrIsAllClear(const virMacAddr *addr);
void virMacAddrFree(virMacAddr *addr);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(virMacAddr, virMacAddrFree);
--- /dev/null
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory unit='KiB'>219136</memory>
+ <currentMemory unit='KiB'>219136</currentMemory>
+ <vcpu placement='static'>1</vcpu>
+ <os>
+ <type arch='x86_64' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <interface type='bridge'>
+ <mac address='00:00:00:00:00:00'/>
+ <source bridge='br0'/>
+ </interface>
+ </devices>
+</domain>
--- /dev/null
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
+ <memory unit='KiB'>219136</memory>
+ <currentMemory unit='KiB'>219136</currentMemory>
+ <vcpu placement='static'>1</vcpu>
+ <os>
+ <type arch='x86_64' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <interface type='bridge'>
+ <mac address='52:54:00:00:00:00'/>
+ <source bridge='br0'/>
+ </interface>
+ </devices>
+</domain>
DO_TEST("cpu-cache-disable");
DO_TEST("network-interface-mac-check");
+ DO_TEST_DIFFERENT("network-interface-mac-clear");
DO_TEST_DIFFERENT("chardev-tcp");
DO_TEST_FAIL_ACTIVE("chardev-tcp-missing-host");
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}
-VIR_TEST_MAIN(mymain)
+VIR_TEST_MAIN_PRELOAD(mymain,
+ VIR_TEST_MOCK("virrandom"))